summaryrefslogtreecommitdiff
path: root/src/gui/menus/menubar.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/menus/menubar.c')
-rw-r--r--src/gui/menus/menubar.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/gui/menus/menubar.c b/src/gui/menus/menubar.c
index 77ff7cd..cc69e0d 100644
--- a/src/gui/menus/menubar.c
+++ b/src/gui/menus/menubar.c
@@ -72,6 +72,9 @@ static void g_menu_bar_dispose(GMenuBar *);
/* Procède à la libération totale de la mémoire. */
static void g_menu_bar_finalize(GMenuBar *);
+/* Lance une actualisation liée à une modification du cheptel. */
+static void manage_view_in_menu_bar(GMenuBar *, GtkViewPanel *, bool);
+
/* Lance une actualisation du fait d'un changement de vue. */
static void update_menu_bar_for_view(GMenuBar *, GtkViewPanel *);
@@ -108,6 +111,7 @@ static void g_menu_bar_class_init(GMenuBarClass *klass)
editem = G_EDITOR_ITEM_CLASS(klass);
+ editem->manage_view = (manage_item_view_fc)manage_view_in_menu_bar;
editem->update_view = (update_item_view_fc)update_menu_bar_for_view;
editem->update_project = (update_project_fc)update_menu_bar_for_project;
@@ -247,6 +251,73 @@ GEditorItem *g_menu_bar_new(GObject *ref, GtkAccelGroup *accgroup)
/******************************************************************************
* *
+* Paramètres : bar = barre de menus à actualiser. *
+* view = nouveau panneau d'affichage nouveau. *
+* created = fait état d'une création ou d'une destruction. *
+* *
+* Description : Lance une actualisation liée à une modification du cheptel. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void manage_view_in_menu_bar(GMenuBar *bar, GtkViewPanel *view, bool created)
+{
+
+ gboolean view_got_focus(GtkWidget *widget, GtkDirectionType dir, GObject *ref)
+ {
+ GtkWidget *item;
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_edit_follow_ref"));
+
+ gtk_widget_set_sensitive(item, TRUE);
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_edit_list_xrefs"));
+
+ gtk_widget_set_sensitive(item, TRUE);
+
+ return FALSE;
+
+ }
+
+ gboolean view_lost_focus(GtkWidget *widget, GtkDirectionType dir, GObject *ref)
+ {
+ GtkWidget *item;
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_edit_follow_ref"));
+
+ gtk_widget_set_sensitive(item, FALSE);
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_edit_list_xrefs"));
+
+ gtk_widget_set_sensitive(item, FALSE);
+
+ return FALSE;
+
+ }
+
+
+ if (created)
+ {
+ g_signal_connect(view, "focus-in-event", G_CALLBACK(view_got_focus), G_EDITOR_ITEM(bar)->ref);
+ g_signal_connect(view, "focus-out-event", G_CALLBACK(view_lost_focus), G_EDITOR_ITEM(bar)->ref);
+ }
+ else
+ {
+ g_signal_handlers_disconnect_by_func(view, G_CALLBACK(view_got_focus), G_EDITOR_ITEM(bar)->ref);
+ g_signal_handlers_disconnect_by_func(view, G_CALLBACK(view_lost_focus), G_EDITOR_ITEM(bar)->ref);
+ }
+
+
+ // update_menu_view_for_view(bar->view, view, bar);
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : bar = barre de menus à actualiser. *
* view = nouveau panneau d'affichage actif. *
* *