summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-08-11 09:31:47 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-08-11 09:31:47 (GMT)
commitc010f11b90428ffb403b998386433c572b63be49 (patch)
treee85d41162d145aab39fa91a0e65e7e1fecf9b97b
parentfb787e91c384458a5e66d09ab1cbb0c2b639b188 (diff)
Taken into account that panel docking can evolve without main menus.
-rw-r--r--src/gui/menus/view.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c
index bf8976c..4591c0f 100644
--- a/src/gui/menus/view.c
+++ b/src/gui/menus/view.c
@@ -599,7 +599,21 @@ static void mcb_view_change_panel_docking(GtkCheckMenuItem *menuitem, GPanelItem
{
gboolean active; /* Etat de sélection du menu */
- active = gtk_check_menu_item_get_active(menuitem);
+ /**
+ * Comme l'accrochage et le décrochage d'un panneau peuvent se réaliser
+ * sans l'aide de ce menu (via les menus des stations d'accueil par exemple),
+ * on ne peut se baser sur l'état de ce menu, mis à jour uniquement à
+ * l'affichage, pour basculer lors de l'activation dudit menu via les raccourcis.
+ *
+ * L'appel suivant peut donc conduire à des erreurs, ie on réaccroche un
+ * panneau déjà accroché ou l'inverse :
+ *
+ * active = gtk_check_menu_item_get_active(menuitem);
+ *
+ * On préfèrera donc se baser sur l'état courant du panneau.
+ */
+
+ active = !g_panel_item_is_docked(item);
if (active)
g_panel_item_dock(item);