diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2024-11-03 14:07:03 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2024-11-03 14:07:03 (GMT) |
commit | 530cd02edf04a3df85a1b40f476f2b2d54793e4e (patch) | |
tree | f0616f6478c52b018679cc4cec1b06d9e37331a1 /src | |
parent | 54d05927811a59db294af8a24258c0b837360492 (diff) |
Take into account widgets provided by panels for the title bar.
Diffstat (limited to 'src')
-rw-r--r-- | src/gtkext/panel-int.h | 7 | ||||
-rw-r--r-- | src/gtkext/panel.c | 26 | ||||
-rw-r--r-- | src/gtkext/panel.h | 3 | ||||
-rw-r--r-- | src/gui/window.c | 32 |
4 files changed, 68 insertions, 0 deletions
diff --git a/src/gtkext/panel-int.h b/src/gtkext/panel-int.h index 593e5b4..07ade20 100644 --- a/src/gtkext/panel-int.h +++ b/src/gtkext/panel-int.h @@ -30,6 +30,11 @@ +/* Fournit les composants adaptés pour la barre de titre. */ +typedef GListStore * (* get_tiled_panel_widgets_cb) (GtkTiledPanel *, bool); + + + /* Elément réactif pour panneaux de l'éditeur (instance) */ struct _GtkTiledPanel { @@ -42,6 +47,8 @@ struct _GtkTiledPanelClass { GtkBoxClass parent; /* A laisser en premier */ + get_tiled_panel_widgets_cb get_widgets; /* Récupération de composants */ + }; diff --git a/src/gtkext/panel.c b/src/gtkext/panel.c index daaa3cf..de55917 100644 --- a/src/gtkext/panel.c +++ b/src/gtkext/panel.c @@ -134,8 +134,34 @@ static void gtk_tiled_panel_finalize(GtkTiledPanel *panel) } +/****************************************************************************** +* * +* Paramètres : panel = panneau graphique à consulter. * +* left = indication quant au côté ciblé. * +* * +* Description : Fournit les composants adaptés pour la barre de titre. * +* * +* Retour : Liste de Composants GTK mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ +GListStore *gtk_tiled_panel_get_title_widgets(GtkTiledPanel *panel, bool left) +{ + GListStore *result; /* Composant(s) à retourner */ + GtkTiledPanelClass *class; /* Classe à actionner */ + + class = GTK_TILED_PANEL_GET_CLASS(panel); + + if (class->get_widgets != NULL) + result = class->get_widgets(panel, left); + else + result = NULL; + + return result; +} diff --git a/src/gtkext/panel.h b/src/gtkext/panel.h index 407cb06..d2259ef 100644 --- a/src/gtkext/panel.h +++ b/src/gtkext/panel.h @@ -38,6 +38,9 @@ DECLARE_GTYPE(GtkTiledPanel, gtk_tiled_panel, GTK, TILED_PANEL); +/* Fournit les composants adaptés pour la barre de titre. */ +GListStore *gtk_tiled_panel_get_title_widgets(GtkTiledPanel *, bool); + diff --git a/src/gui/window.c b/src/gui/window.c index 193f1bf..2680c89 100644 --- a/src/gui/window.c +++ b/src/gui/window.c @@ -295,8 +295,40 @@ static void gtk_framework_window_activate_about(GSimpleAction *action, GVariant void gtk_framework_window_add(GtkFrameworkWindow *window, /* __steal */GtkTiledPanel *panel) { + GtkWidget *bar; /* Barre de titre */ + GListStore *list; /* Liste éventuelle à intégrer */ + guint count; /* Nombre d'élements présents */ + guint i; /* Boucle de parcours */ + GtkWidget *widget; /* Composant à intégrer */ + gtk_stack_add_child(window->grid, GTK_WIDGET(panel)); gtk_stack_set_visible_child(window->grid, GTK_WIDGET(panel)); + + + bar = gtk_window_get_titlebar(GTK_WINDOW(window)); + + if (bar == NULL) ////////// REMME + { + bar = gtk_header_bar_new(); + gtk_window_set_titlebar(GTK_WINDOW(window), bar); + } ///////////////////////////// + + list = gtk_tiled_panel_get_title_widgets(panel, false); + + if (list != NULL) + { + count = g_list_model_get_n_items(G_LIST_MODEL(list)); + + for (i = 0; i < count; i++) + { + widget = GTK_WIDGET(g_list_model_get_item(G_LIST_MODEL(list), i)); + gtk_header_bar_pack_end(GTK_HEADER_BAR(bar), widget); + } + + unref_object(list); + + } + } |