diff options
Diffstat (limited to 'src/gui/core/panels.c')
-rw-r--r-- | src/gui/core/panels.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/gui/core/panels.c b/src/gui/core/panels.c index 9d11e58..60ff6f2 100644 --- a/src/gui/core/panels.c +++ b/src/gui/core/panels.c @@ -25,6 +25,7 @@ #include "panels.h" +#include "global.h" #include "items.h" #include "../panels/bintree.h" #include "../panels/bookmarks.h" @@ -115,6 +116,7 @@ void load_main_panels(void) void register_panel_item(GPanelItem *item, GGenConfig *config) { GEditorItem *parent; /* Autre version de l'élément */ + GtkTiledGrid *grid; /* Composant d'affichage */ parent = G_EDITOR_ITEM(item); @@ -122,11 +124,10 @@ void register_panel_item(GPanelItem *item, GGenConfig *config) register_editor_item(parent); panels_list_add_tail(item, &_panels_list); - extern void on_panel_item_dock_request(GPanelItem *item, void *data); - extern void on_panel_item_undock_request(GPanelItem *item, void *data); + grid = get_tiled_grid(); - g_signal_connect(item, "dock-request", G_CALLBACK(on_panel_item_dock_request), NULL); - g_signal_connect(item, "undock-request", G_CALLBACK(on_panel_item_undock_request), NULL); + g_signal_connect_swapped(item, "dock-request", G_CALLBACK(gtk_tiled_grid_add), grid); + g_signal_connect_swapped(item, "undock-request", G_CALLBACK(gtk_tiled_grid_remove), grid); gtk_dockable_setup_dnd(GTK_DOCKABLE(item)); @@ -137,7 +138,8 @@ void register_panel_item(GPanelItem *item, GGenConfig *config) /****************************************************************************** * * -* Paramètres : handle = routine à appeler pour chaque panneau. * +* Paramètres : skip = saute le panneau d'accueil lors du parcours ? * +* handle = routine à appeler pour chaque panneau. * * data = données fournies pour accompagner cet appel. * * * * Description : Effectue le parcours de tous les panneaux chargés. * @@ -148,21 +150,31 @@ void register_panel_item(GPanelItem *item, GGenConfig *config) * * ******************************************************************************/ -bool browse_all_item_panels(handle_panel_item_fc handle, void *data) +bool _browse_all_item_panels(bool skip, handle_panel_item_fc handle, void *data) { bool result; /* Résultat à renvoyer */ + GPanelItem *welcome; /* Panneau d'accueil */ GPanelItem *iter; /* Boucle de parcours */ result = true; + if (skip) + welcome = get_panel_item_by_name(PANEL_WELCOME_ID); + panels_list_for_each(iter, _panels_list) { + if (skip && iter == welcome) + continue; + result = handle(iter, data); if (!result) break; } + if (skip) + g_object_unref(G_OBJECT(welcome)); + return result; } @@ -208,6 +220,9 @@ GPanelItem *get_panel_item_by_name(const char *name) browse_all_item_panels((handle_panel_item_fc)look_for_named_panel, &result); + if (result != NULL) + g_object_ref(G_OBJECT(result)); + return result; } |