summaryrefslogtreecommitdiff
path: root/src/gui/core/panels.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/core/panels.c')
-rw-r--r--src/gui/core/panels.c27
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;
}