diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2009-09-24 22:15:43 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2009-09-24 22:15:43 (GMT) |
commit | 8271ddd8f450f1ae9629f5d39e786bc323eba31c (patch) | |
tree | 726db1b41738003f1d15512dfc210505fce0344a /src/gtkext/gtkdockpanel.c | |
parent | f7c1c34cb54b239586bf431b1749759baee9493e (diff) |
Managed properly projects (close, reload, aso.).
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@118 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gtkext/gtkdockpanel.c')
-rw-r--r-- | src/gtkext/gtkdockpanel.c | 62 |
1 files changed, 34 insertions, 28 deletions
diff --git a/src/gtkext/gtkdockpanel.c b/src/gtkext/gtkdockpanel.c index 1d9548f..3b74fbb 100644 --- a/src/gtkext/gtkdockpanel.c +++ b/src/gtkext/gtkdockpanel.c @@ -58,13 +58,13 @@ static void gtk_dock_panel_drag_end_cb(GtkDockPanel *, GdkDragContext *, gpointe //static void gtk_dock_panel_drag_data_delete_cb(GtkDockPanel *, GdkDragContext *, gpointer); /* Ajoute un paquet d'informations à la station dockable. */ -static void _gtk_dock_panel_add_item(GtkDockPanel *, GtkDockItem *, gint); +static void _gtk_dock_panel_add_item(GtkDockPanel *, GDockItem *, gint); /* Remplace le panneau d'un membre actuellement affiché. */ -static void on_dock_item_content_changed(GtkDockItem *, GtkWidget *, GtkWidget *, GtkDockPanel *); +static void on_dock_item_content_changed(GDockItem *, GtkWidget *, GtkWidget *, GtkDockPanel *); /* Supprime un paquet d'informations à la station dockable. */ -static void _gtk_dock_panel_remove_item(GtkDockPanel *, GtkDockItem *, GtkWidget *); +static void _gtk_dock_panel_remove_item(GtkDockPanel *, GDockItem *, GtkWidget *); /* Met à jour le titre du support de panneaux dockables. */ static gboolean gtk_dock_panel_update_title(GtkNotebook *, GtkNotebookPage *, guint, gpointer); @@ -130,7 +130,7 @@ static void gtk_dock_panel_class_init(GtkDockPanelClass *class) G_STRUCT_OFFSET(GtkDockPanelClass, switch_item), NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT, - G_TYPE_NONE, 1, GTK_TYPE_DOCK_ITEM); + G_TYPE_NONE, 1, G_TYPE_DOCK_ITEM); } @@ -338,7 +338,7 @@ static gboolean gtk_dock_panel_drag_drop_cb(GtkDockPanel *dpanel, GdkDragContext static void gtk_dock_panel_drag_data_received_cb(GtkDockPanel *dpanel, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection, guint target, guint time, gpointer data) { - GtkDockItem *ditem; /* Elément transféré */ + GDockItem *ditem; /* Elément transféré */ gboolean success; /* Bilan de l'opération */ success = FALSE; @@ -347,7 +347,7 @@ static void gtk_dock_panel_drag_data_received_cb(GtkDockPanel *dpanel, GdkDragCo switch (target) { case TARGET_DOCKITEM: - success = (selection->length == sizeof(GtkDockItem *)); + success = (selection->length == sizeof(GDockItem *)); printf(" ## DRAG DATA RCV ## %p\n", dpanel); @@ -356,9 +356,9 @@ static void gtk_dock_panel_drag_data_received_cb(GtkDockPanel *dpanel, GdkDragCo if (success) { - ditem = GTK_DOCK_ITEM(*((GtkDockItem **)selection->data)); + ditem = G_DOCK_ITEM(*((GDockItem **)selection->data)); - printf(" :: get ? %p - %d\n", ditem, GTK_IS_DOCK_ITEM(ditem)); + printf(" :: get ? %p - %d\n", ditem, G_IS_DOCK_ITEM(ditem)); gtk_dock_panel_remove_item(gtk_drag_get_source_widget(context), ditem); gtk_dock_panel_add_item(dpanel, ditem); @@ -480,7 +480,7 @@ static void gtk_dock_panel_drag_begin_cb(GtkDockPanel *dpanel, GdkDragContext *c static void gtk_dock_panel_drag_data_get_cb(GtkDockPanel *dpanel, GdkDragContext *context, GtkSelectionData *selection, guint target, guint time, gpointer data) { gint current; /* Indice de l'onglet courant */ - GtkDockItem *ditem; /* Elément à transférer */ + GDockItem *ditem; /* Elément à transférer */ switch (target) { @@ -490,14 +490,14 @@ static void gtk_dock_panel_drag_data_get_cb(GtkDockPanel *dpanel, GdkDragContext current = gtk_notebook_get_current_page(dpanel->notebook); - ditem = GTK_DOCK_ITEM(g_list_nth_data(dpanel->ditems, current)); + ditem = G_DOCK_ITEM(g_list_nth_data(dpanel->ditems, current)); printf(" %d nth item is %p\n", current, ditem); - printf(" :: set ? %p - %d\n", ditem, GTK_IS_DOCK_ITEM(ditem)); + printf(" :: set ? %p - %d\n", ditem, G_IS_DOCK_ITEM(ditem)); gtk_selection_data_set(selection, selection->target, - 32, (guchar *)&ditem, sizeof(GtkDockItem *)); + 32, (guchar *)&ditem, sizeof(GDockItem *)); break; @@ -540,9 +540,9 @@ static void gtk_dock_panel_drag_end_cb(GtkDockPanel *dpanel, GdkDragContext *con * * ******************************************************************************/ -GtkDockItem *gtk_dock_panel_item_from_name(GtkDockPanel *dpanel, const char *name) +GDockItem *gtk_dock_panel_item_from_name(GtkDockPanel *dpanel, const char *name) { - GtkDockItem *result; /* Trouvaille à remonter */ + GDockItem *result; /* Trouvaille à remonter */ GList *iter; /* Boucle de parcours */ const char *tmp; /* Autre nom à consulter */ @@ -550,10 +550,10 @@ GtkDockItem *gtk_dock_panel_item_from_name(GtkDockPanel *dpanel, const char *nam for (iter = dpanel->ditems; iter != NULL && result == NULL; iter = g_list_next(iter)) { - tmp = gtk_dock_item_get_name(GTK_DOCK_ITEM(iter->data)); + tmp = g_dock_item_get_name(G_DOCK_ITEM(iter->data)); if (strcmp(name, tmp) == 0) - result = GTK_DOCK_ITEM(iter->data); + result = G_DOCK_ITEM(iter->data); } @@ -575,7 +575,7 @@ GtkDockItem *gtk_dock_panel_item_from_name(GtkDockPanel *dpanel, const char *nam * * ******************************************************************************/ -void gtk_dock_panel_add_item(GtkDockPanel *dpanel, GtkDockItem *ditem) +void gtk_dock_panel_add_item(GtkDockPanel *dpanel, GDockItem *ditem) { _gtk_dock_panel_add_item(dpanel, ditem, -1); @@ -596,7 +596,7 @@ void gtk_dock_panel_add_item(GtkDockPanel *dpanel, GtkDockItem *ditem) * * ******************************************************************************/ -static void _gtk_dock_panel_add_item(GtkDockPanel *dpanel, GtkDockItem *ditem, gint position) +static void _gtk_dock_panel_add_item(GtkDockPanel *dpanel, GDockItem *ditem, gint position) { GtkWidget *label; /* Etiquette d'onglet */ @@ -604,10 +604,10 @@ static void _gtk_dock_panel_add_item(GtkDockPanel *dpanel, GtkDockItem *ditem, g printf("[add %p to %p] list len :: %u\n", ditem, dpanel, g_list_length(dpanel->ditems)); - label = gtk_label_new(gtk_dock_item_get_name(ditem)); + label = gtk_label_new(g_dock_item_get_name(ditem)); gtk_widget_show(label); - gtk_notebook_insert_page(dpanel->notebook, gtk_dock_item_get_panel(ditem), label, position); + gtk_notebook_insert_page(dpanel->notebook, g_dock_item_get_panel(ditem), label, position); gtk_notebook_set_show_tabs(dpanel->notebook, g_list_length(dpanel->ditems) > 1); @@ -631,7 +631,7 @@ static void _gtk_dock_panel_add_item(GtkDockPanel *dpanel, GtkDockItem *ditem, g * * ******************************************************************************/ -static void on_dock_item_content_changed(GtkDockItem *ditem, GtkWidget *old, GtkWidget *new, GtkDockPanel *dpanel) +static void on_dock_item_content_changed(GDockItem *ditem, GtkWidget *old, GtkWidget *new, GtkDockPanel *dpanel) { gint position; /* Position de l'onglet à maj */ @@ -639,9 +639,13 @@ static void on_dock_item_content_changed(GtkDockItem *ditem, GtkWidget *old, Gtk g_signal_handlers_disconnect_by_func(dpanel->notebook, G_CALLBACK(gtk_dock_panel_update_title), dpanel); + //g_object_ref(G_OBJECT(ditem)); + _gtk_dock_panel_remove_item(dpanel, ditem, old); _gtk_dock_panel_add_item(dpanel, ditem, position); + //g_object_unref(G_OBJECT(ditem)); + gtk_notebook_set_current_page(dpanel->notebook, position); g_signal_connect(dpanel->notebook, "switch-page", G_CALLBACK(gtk_dock_panel_update_title), dpanel); @@ -663,7 +667,7 @@ static void on_dock_item_content_changed(GtkDockItem *ditem, GtkWidget *old, Gtk * * ******************************************************************************/ -void gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GtkDockItem *ditem) +void gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GDockItem *ditem) { gint pos; /* Position de l'élément visé */ @@ -675,11 +679,13 @@ void gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GtkDockItem *ditem) printf("[rem %p from %p] list len :: %u\n", ditem, dpanel, g_list_length(dpanel->ditems)); - gtk_widget_ref(gtk_dock_item_get_panel(ditem)); - gtk_container_remove(GTK_CONTAINER(dpanel->notebook), gtk_dock_item_get_panel(ditem)); + gtk_widget_ref(g_dock_item_get_panel(ditem)); + gtk_container_remove(GTK_CONTAINER(dpanel->notebook), g_dock_item_get_panel(ditem)); //gtk_notebook_remove_page(dpanel->notebook, pos); + g_object_unref(G_OBJECT(ditem)); + gtk_notebook_set_show_tabs(dpanel->notebook, g_list_length(dpanel->ditems) > 1); } @@ -699,7 +705,7 @@ void gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GtkDockItem *ditem) * * ******************************************************************************/ -static void _gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GtkDockItem *ditem, GtkWidget *panel) +static void _gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GDockItem *ditem, GtkWidget *panel) { gint pos; /* Position de l'élément visé */ @@ -738,7 +744,7 @@ static void _gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GtkDockItem *ditem static gboolean gtk_dock_panel_update_title(GtkNotebook *notebook, GtkNotebookPage *page, guint index, gpointer data) { - GtkDockItem *ditem; /* Elément nouvellement actif */ + GDockItem *ditem; /* Elément nouvellement actif */ const gchar *desc; /* Description à afficher */ char *str; /* Valeur finale reconstituée */ @@ -751,9 +757,9 @@ static gboolean gtk_dock_panel_update_title(GtkNotebook *notebook, GtkNotebookPa //printf(" >> index :: %u vs %d\n", index, gtk_notebook_get_current_page(GTK_DOCK_PANEL(data)->notebook)); - ditem = GTK_DOCK_ITEM(g_list_nth_data(GTK_DOCK_PANEL(data)->ditems, index)); + ditem = G_DOCK_ITEM(g_list_nth_data(GTK_DOCK_PANEL(data)->ditems, index)); - desc = gtk_dock_item_get_desc(ditem); + desc = g_dock_item_get_desc(ditem); str = calloc(strlen("<b>") + strlen(desc) + strlen("</b>") + 1, sizeof(char)); |