diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2009-09-13 23:11:24 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2009-09-13 23:11:24 (GMT) |
commit | 1c4da24a1d4b96d58fee08e2be21198b22e7eef6 (patch) | |
tree | a0723bd1948395413fa5a7a37a9405567e32c015 /src/gtkext/gtkdockitem.c | |
parent | 18134387d5cb025703af8e1d07e0152784e31efc (diff) |
Improved the editor window refreshing when several binaries are loaded.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@114 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
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); + } + } |