diff options
Diffstat (limited to 'src/gui/editor.c')
-rw-r--r-- | src/gui/editor.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/gui/editor.c b/src/gui/editor.c index c7c2d37..c46c137 100644 --- a/src/gui/editor.c +++ b/src/gui/editor.c @@ -58,8 +58,7 @@ #include "../gtkext/gtkdockstation.h" #include "../gtkext/tiledgrid.h" #include "../gtkext/support.h" - - +#include "../plugins/dt.h" @@ -786,8 +785,11 @@ static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, gpointer static bool add_side_panel_to_menu(GPanelItemClass *class, GtkContainer *support) { GEditorItem *item; /* Instance de panneau en place*/ - gpointer type_ptr; /* Type de panneau traité */ - char *key; /* Désignation de l'entrée */ + GType type; /* Type de panneau traité */ + gpointer type_ptr; /* Autre forme d'encodage */ + GPanelItem *panel; /* Panneau à manipuler */ + GNamedWidget *named; /* Composant nommé associé */ + char *label; /* Désignation de l'entrée */ GtkWidget *submenuitem; /* Sous-élément de menu */ char *bindings; /* Raccourcis clavier bruts */ GtkBuilder *builder; /* Constructeur principal */ @@ -807,14 +809,18 @@ static bool add_side_panel_to_menu(GPanelItemClass *class, GtkContainer *support /* Elément de menu */ - type_ptr = GSIZE_TO_POINTER(G_TYPE_FROM_CLASS(class)); + type = G_TYPE_FROM_CLASS(class); + type_ptr = GSIZE_TO_POINTER(type); - key = g_editor_item_class_get_key(G_EDITOR_ITEM_CLASS(class)); + panel = create_object_from_type(type); + named = gtk_panel_item_get_named_widget(panel); - submenuitem = qck_create_menu_item(NULL, NULL, key, + label = g_named_widget_get_name(named, false); + + submenuitem = qck_create_menu_item(NULL, NULL, label, G_CALLBACK(dock_panel_into_current_station), type_ptr); - free(key); + free(label); bindings = gtk_panel_item_class_get_key_bindings(class); @@ -832,7 +838,8 @@ static bool add_side_panel_to_menu(GPanelItemClass *class, GtkContainer *support exit_ref: - g_object_unref(G_OBJECT(item)); + if (item != NULL) + g_object_unref(G_OBJECT(item)); exit: |