Added "switch_page" signal. (gtk-hamann_jeske-971212-0.patch)
-owt
This commit is contained in:
@ -16,6 +16,7 @@
|
|||||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
#include "gtknotebook.h"
|
#include "gtknotebook.h"
|
||||||
|
#include "gtksignal.h"
|
||||||
|
|
||||||
|
|
||||||
#define CHILD_SPACING 2
|
#define CHILD_SPACING 2
|
||||||
@ -23,6 +24,15 @@
|
|||||||
#define TAB_CURVATURE 1
|
#define TAB_CURVATURE 1
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SWITCH_PAGE,
|
||||||
|
LAST_SIGNAL
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (*GtkNotebookSignal) (GtkObject *object,
|
||||||
|
gpointer arg1,
|
||||||
|
gpointer data);
|
||||||
|
|
||||||
static void gtk_notebook_class_init (GtkNotebookClass *klass);
|
static void gtk_notebook_class_init (GtkNotebookClass *klass);
|
||||||
static void gtk_notebook_init (GtkNotebook *notebook);
|
static void gtk_notebook_init (GtkNotebook *notebook);
|
||||||
static void gtk_notebook_destroy (GtkObject *object);
|
static void gtk_notebook_destroy (GtkObject *object);
|
||||||
@ -60,9 +70,16 @@ static void gtk_notebook_page_allocate (GtkNotebook *notebook,
|
|||||||
GtkNotebookPage *page,
|
GtkNotebookPage *page,
|
||||||
GtkAllocation *allocation);
|
GtkAllocation *allocation);
|
||||||
|
|
||||||
|
static void gtk_real_notebook_switch_page (GtkNotebook *notebook,
|
||||||
|
GtkNotebookPage *page);
|
||||||
|
|
||||||
|
static void gtk_notebook_marshal_signal (GtkObject *object,
|
||||||
|
GtkSignalFunc func,
|
||||||
|
gpointer func_data,
|
||||||
|
GtkArg *args);
|
||||||
|
|
||||||
static GtkContainerClass *parent_class = NULL;
|
static GtkContainerClass *parent_class = NULL;
|
||||||
|
static gint notebook_signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
guint
|
guint
|
||||||
gtk_notebook_get_type ()
|
gtk_notebook_get_type ()
|
||||||
@ -100,6 +117,17 @@ gtk_notebook_class_init (GtkNotebookClass *class)
|
|||||||
|
|
||||||
parent_class = gtk_type_class (gtk_container_get_type ());
|
parent_class = gtk_type_class (gtk_container_get_type ());
|
||||||
|
|
||||||
|
notebook_signals[SWITCH_PAGE] =
|
||||||
|
gtk_signal_new ("switch_page",
|
||||||
|
GTK_RUN_LAST,
|
||||||
|
object_class->type,
|
||||||
|
GTK_SIGNAL_OFFSET (GtkNotebookClass, switch_page),
|
||||||
|
gtk_notebook_marshal_signal,
|
||||||
|
GTK_TYPE_NONE, 1,
|
||||||
|
GTK_TYPE_POINTER);
|
||||||
|
|
||||||
|
gtk_object_class_add_signals (object_class, notebook_signals, LAST_SIGNAL);
|
||||||
|
|
||||||
object_class->destroy = gtk_notebook_destroy;
|
object_class->destroy = gtk_notebook_destroy;
|
||||||
|
|
||||||
widget_class->map = gtk_notebook_map;
|
widget_class->map = gtk_notebook_map;
|
||||||
@ -115,6 +143,8 @@ gtk_notebook_class_init (GtkNotebookClass *class)
|
|||||||
container_class->add = gtk_notebook_add;
|
container_class->add = gtk_notebook_add;
|
||||||
container_class->remove = gtk_notebook_remove;
|
container_class->remove = gtk_notebook_remove;
|
||||||
container_class->foreach = gtk_notebook_foreach;
|
container_class->foreach = gtk_notebook_foreach;
|
||||||
|
|
||||||
|
class->switch_page = gtk_real_notebook_switch_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1027,7 +1057,7 @@ gtk_notebook_foreach (GtkContainer *container,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_notebook_switch_page (GtkNotebook *notebook,
|
gtk_real_notebook_switch_page (GtkNotebook *notebook,
|
||||||
GtkNotebookPage *page)
|
GtkNotebookPage *page)
|
||||||
{
|
{
|
||||||
g_return_if_fail (notebook != NULL);
|
g_return_if_fail (notebook != NULL);
|
||||||
@ -1420,3 +1450,22 @@ gtk_notebook_page_allocate (GtkNotebook *notebook,
|
|||||||
|
|
||||||
gtk_widget_size_allocate (page->tab_label, &child_allocation);
|
gtk_widget_size_allocate (page->tab_label, &child_allocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_notebook_switch_page (GtkNotebook *notebook, GtkNotebookPage *page)
|
||||||
|
{
|
||||||
|
gtk_signal_emit (GTK_OBJECT (notebook), notebook_signals[SWITCH_PAGE], page);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_notebook_marshal_signal (GtkObject *object,
|
||||||
|
GtkSignalFunc func,
|
||||||
|
gpointer func_data,
|
||||||
|
GtkArg *args)
|
||||||
|
{
|
||||||
|
GtkNotebookSignal rfunc;
|
||||||
|
|
||||||
|
rfunc = (GtkNotebookSignal) func;
|
||||||
|
|
||||||
|
(* rfunc) (object, GTK_VALUE_OBJECT (args[0]), func_data);
|
||||||
|
}
|
||||||
|
@ -52,6 +52,9 @@ struct _GtkNotebook
|
|||||||
struct _GtkNotebookClass
|
struct _GtkNotebookClass
|
||||||
{
|
{
|
||||||
GtkContainerClass parent_class;
|
GtkContainerClass parent_class;
|
||||||
|
|
||||||
|
void (* switch_page) (GtkNotebook *notebook,
|
||||||
|
GtkNotebookPage *page);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GtkNotebookPage
|
struct _GtkNotebookPage
|
||||||
|
Reference in New Issue
Block a user