diff options
Diffstat (limited to 'src/gtkext/gtkdockitem.c')
-rw-r--r-- | src/gtkext/gtkdockitem.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/gtkext/gtkdockitem.c b/src/gtkext/gtkdockitem.c index fcef31d..89d606c 100644 --- a/src/gtkext/gtkdockitem.c +++ b/src/gtkext/gtkdockitem.c @@ -24,13 +24,15 @@ #include "gtkdockitem.h" +#include "iodamarshal.h" + + /* Détermine le type d'un panneau dockable. */ G_DEFINE_TYPE(GtkDockItem, gtk_dock_item, GTK_TYPE_OBJECT) - /****************************************************************************** * * * Paramètres : class = classe GTK à initialiser. * @@ -45,7 +47,13 @@ G_DEFINE_TYPE(GtkDockItem, gtk_dock_item, GTK_TYPE_OBJECT) static void gtk_dock_item_class_init(GtkDockItemClass *class) { - + g_signal_new("content-changed", + GTK_TYPE_DOCK_ITEM, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(GtkDockItemClass, content_changed), + NULL, NULL, + g_cclosure_user_marshal_VOID__OBJECT_OBJECT, + G_TYPE_NONE, 2, GTK_TYPE_WIDGET, GTK_TYPE_WIDGET); } @@ -204,12 +212,19 @@ const gchar *gtk_dock_item_get_desc(GtkDockItem *ditem) void gtk_dock_item_set_panel(GtkDockItem *ditem, GtkWidget *panel) { - if (ditem->panel != NULL) - gtk_widget_unref(ditem->panel); + GtkWidget *old; /* Ancien panneau remplacé */ + + old = ditem->panel; ditem->panel = panel; gtk_widget_ref(panel); + if (old != NULL) + { + g_signal_emit_by_name(ditem, "content-changed", old, panel); + gtk_widget_unref(old); + } + } |