label: Disconnect visible mnemonics in popovers
authorMatthias Clasen <mclasen@redhat.com>
Tue, 24 Mar 2020 15:54:17 +0000 (11:54 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 26 Mar 2020 03:14:45 +0000 (23:14 -0400)
The controller handling mnemonics is limited to same-native,
so showing mnemonics in other natives.

gtk/gtklabel.c

index 14ce11fdafc90ccdfdad266b3ef269063a702765..956a82c4daee04f6bfb7a3e6788f66ebcc8ea65d 100644 (file)
@@ -1951,6 +1951,9 @@ _gtk_label_mnemonics_visible_apply_recursively (GtkWidget *widget,
            child;
            child = gtk_widget_get_next_sibling (child))
         {
+          if (GTK_IS_NATIVE (child))
+            continue;
+
           _gtk_label_mnemonics_visible_apply_recursively (child, visible);
         }
     }
@@ -4567,28 +4570,28 @@ static void
 connect_mnemonics_visible_notify (GtkLabel *label)
 {
   GtkLabelPrivate *priv = gtk_label_get_instance_private (label);
-  GtkRoot *root;
+  GtkNative *native;
   gboolean connected;
 
-  root = gtk_widget_get_root (GTK_WIDGET (label));
+  native = gtk_widget_get_native (GTK_WIDGET (label));
 
-  if (!GTK_IS_WINDOW (root))
+  if (!GTK_IS_WINDOW (native))
     return;
 
   /* always set up this widgets initial value */
   priv->mnemonics_visible =
-    gtk_window_get_mnemonics_visible (GTK_WINDOW (root));
+    gtk_window_get_mnemonics_visible (GTK_WINDOW (native));
 
   connected =
-    GPOINTER_TO_INT (g_object_get_qdata (G_OBJECT (root), quark_mnemonics_visible_connected));
+    GPOINTER_TO_INT (g_object_get_qdata (G_OBJECT (native), quark_mnemonics_visible_connected));
 
   if (!connected)
     {
-      g_signal_connect (root,
+      g_signal_connect (native,
                         "notify::mnemonics-visible",
                         G_CALLBACK (label_mnemonics_visible_changed),
                         label);
-      g_object_set_qdata (G_OBJECT (root),
+      g_object_set_qdata (G_OBJECT (native),
                           quark_mnemonics_visible_connected,
                           GINT_TO_POINTER (1));
     }