summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2024-11-03 14:07:03 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2024-11-03 14:07:03 (GMT)
commit530cd02edf04a3df85a1b40f476f2b2d54793e4e (patch)
treef0616f6478c52b018679cc4cec1b06d9e37331a1 /src
parent54d05927811a59db294af8a24258c0b837360492 (diff)
Take into account widgets provided by panels for the title bar.
Diffstat (limited to 'src')
-rw-r--r--src/gtkext/panel-int.h7
-rw-r--r--src/gtkext/panel.c26
-rw-r--r--src/gtkext/panel.h3
-rw-r--r--src/gui/window.c32
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);
+
+ }
+
}