app, menus: make GimpMenu item visibility sync on action visibility.

This commit is contained in:
Jehan 2023-02-07 20:46:56 +01:00
parent 19b03fcc43
commit 66eeb4fe6c
2 changed files with 17 additions and 7 deletions

View File

@ -85,6 +85,9 @@ static void gimp_menu_toggle_action_changed (GimpAction *action,
static void gimp_menu_action_notify_sensitive (GimpAction *action,
const GParamSpec *pspec,
GtkCheckMenuItem *item);
static void gimp_menu_action_notify_visible (GimpAction *action,
const GParamSpec *pspec,
GtkCheckMenuItem *item);
G_DEFINE_TYPE_WITH_PRIVATE (GimpMenu, gimp_menu, GTK_TYPE_MENU_BAR)
@ -305,7 +308,12 @@ gimp_menu_update (GimpMenu *menu,
gimp_action_get_tooltip (GIMP_ACTION (action)));
gtk_container_add (container, item);
gtk_widget_show (item);
gtk_widget_set_visible (item,
gimp_action_is_visible (GIMP_ACTION (action)));
g_signal_connect_object (action, "notify::visible",
G_CALLBACK (gimp_menu_action_notify_visible),
item, 0);
}
g_free (label);
g_free (action_name);
@ -359,3 +367,11 @@ gimp_menu_action_notify_sensitive (GimpAction *action,
gtk_widget_set_sensitive (GTK_WIDGET (item),
gimp_action_is_sensitive (action, NULL));
}
static void
gimp_menu_action_notify_visible (GimpAction *action,
const GParamSpec *pspec,
GtkWidget *item)
{
gtk_widget_set_visible (item, gimp_action_is_visible (action));
}

View File

@ -47,7 +47,6 @@
<item><attribute name="action">app.file-revert</attribute></item>
</section>
<section>
<!-- TODO: overwrite and export same? -->
<item><attribute name="action">app.file-overwrite</attribute></item>
<item><attribute name="action">app.file-export</attribute></item>
<item><attribute name="action">app.file-export-as</attribute></item>
@ -291,13 +290,11 @@
<item><attribute name="action">app.image-convert-u32</attribute></item>
<item><attribute name="action">app.image-convert-half</attribute></item>
<item><attribute name="action">app.image-convert-float</attribute></item>
<!-- TODO: this should be invisible except for special cases? -->
<item><attribute name="action">app.image-convert-double</attribute></item>
</section>
<section>
<item><attribute name="action">app.image-convert-linear</attribute></item>
<item><attribute name="action">app.image-convert-non-linear</attribute></item>
<!-- TODO: this should be invisible except for special cases? -->
<item><attribute name="action">app.image-convert-perceptual</attribute></item>
</section>
</submenu>
@ -381,15 +378,12 @@
<item><attribute name="action">app.layers-new-from-visible</attribute></item>
<item><attribute name="action">app.layers-new-group</attribute></item>
<item><attribute name="action">app.layers-duplicate</attribute></item>
<!-- TODO: visible only when relevant? -->
<item><attribute name="action">app.layers-anchor</attribute></item>
<item><attribute name="action">app.layers-merge-down</attribute></item>
<!-- TODO: visible only when relevant? -->
<item><attribute name="action">app.layers-merge-group</attribute></item>
<item><attribute name="action">app.layers-delete</attribute></item>
</section>
<section>
<!-- TODO: all 3 visible only when relevant? -->
<item><attribute name="action">app.layers-text-discard</attribute></item>
<item><attribute name="action">app.layers-text-to-vectors</attribute></item>
<item><attribute name="action">app.layers-text-along-vectors</attribute></item>