[gtk/wip/ebassi/shortcut: 169/203] window: Remove all old mnemonic handling API



commit 575ab21357d0c076d3aa8d374e132b63b5a292f6
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Thu Feb 6 15:54:57 2020 +0000

    window: Remove all old mnemonic handling API

 docs/reference/gtk/gtk4-sections.txt |   4 -
 gtk/gtkapplicationaccels.c           |   2 +-
 gtk/gtkwindow.c                      | 249 ++++-------------------------------
 gtk/gtkwindow.h                      |  14 --
 gtk/gtkwindowprivate.h               |   1 -
 5 files changed, 27 insertions(+), 243 deletions(-)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index 796910ca61..40ee970e24 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -4308,8 +4308,6 @@ gtk_window_is_active
 gtk_window_is_maximized
 gtk_window_get_toplevels
 gtk_window_list_toplevels
-gtk_window_add_mnemonic
-gtk_window_remove_mnemonic
 gtk_window_get_focus
 gtk_window_set_focus
 gtk_window_get_default_widget
@@ -4332,7 +4330,6 @@ gtk_window_begin_resize_drag
 gtk_window_begin_move_drag
 gtk_window_set_decorated
 gtk_window_set_deletable
-gtk_window_set_mnemonic_modifier
 gtk_window_set_type_hint
 gtk_window_set_accept_focus
 gtk_window_set_focus_on_map
@@ -4343,7 +4340,6 @@ gtk_window_get_default_icon_name
 gtk_window_get_default_size
 gtk_window_get_destroy_with_parent
 gtk_window_get_icon_name
-gtk_window_get_mnemonic_modifier
 gtk_window_get_modal
 gtk_window_get_size
 gtk_window_get_title
diff --git a/gtk/gtkapplicationaccels.c b/gtk/gtkapplicationaccels.c
index b4a14b9daa..43e35d79e4 100644
--- a/gtk/gtkapplicationaccels.c
+++ b/gtk/gtkapplicationaccels.c
@@ -347,7 +347,7 @@ gtk_application_accels_foreach_key (GtkApplicationAccels     *accels,
     {
       AccelKey *accel_key = key;
 
-      (* callback) (window, accel_key->key, accel_key->modifier, FALSE, user_data);
+      (* callback) (window, accel_key->key, accel_key->modifier, user_data);
     }
 }
 
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 6cb23e7dfb..abc305441d 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -52,7 +52,6 @@
 #include "gtkmain.h"
 #include "gtkmarshalers.h"
 #include "gtkmessagedialog.h"
-#include "gtkmnemonichash.h"
 #include "gtkpointerfocusprivate.h"
 #include "gtkpopovermenuprivate.h"
 #include "gtkmodelbuttonprivate.h"
@@ -185,8 +184,6 @@ struct _GtkWindowPopover
 
 typedef struct
 {
-  GtkMnemonicHash       *mnemonic_hash;
-
   GtkWidget             *attach_widget;
   GtkWidget             *default_widget;
   GtkWidget             *initial_focus;
@@ -199,8 +196,6 @@ typedef struct
 
   GQueue                 popovers;
 
-  GdkModifierType        mnemonic_modifier;
-
   gchar   *startup_id;
   gchar   *title;
 
@@ -1819,7 +1814,6 @@ gtk_window_init (GtkWindow *window)
   priv->modal = FALSE;
   priv->gravity = GDK_GRAVITY_NORTH_WEST;
   priv->decorated = TRUE;
-  priv->mnemonic_modifier = GDK_MOD1_MASK;
   priv->display = gdk_display_get_default ();
 
   priv->state = GDK_SURFACE_STATE_WITHDRAWN;
@@ -2733,130 +2727,6 @@ gtk_window_remove_accel_group (GtkWindow     *window,
   _gtk_window_notify_keys_changed (window);
 }
 
-static GtkMnemonicHash *
-gtk_window_get_mnemonic_hash (GtkWindow *window,
-                             gboolean   create)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
-  if (!priv->mnemonic_hash && create)
-    priv->mnemonic_hash = _gtk_mnemonic_hash_new ();
-
-  return priv->mnemonic_hash;
-}
-
-/**
- * gtk_window_add_mnemonic:
- * @window: a #GtkWindow
- * @keyval: the mnemonic
- * @target: the widget that gets activated by the mnemonic
- *
- * Adds a mnemonic to this window.
- */
-void
-gtk_window_add_mnemonic (GtkWindow *window,
-                        guint      keyval,
-                        GtkWidget *target)
-{
-  g_return_if_fail (GTK_IS_WINDOW (window));
-  g_return_if_fail (GTK_IS_WIDGET (target));
-
-  _gtk_mnemonic_hash_add (gtk_window_get_mnemonic_hash (window, TRUE),
-                         keyval, target);
-  _gtk_window_notify_keys_changed (window);
-}
-
-/**
- * gtk_window_remove_mnemonic:
- * @window: a #GtkWindow
- * @keyval: the mnemonic
- * @target: the widget that gets activated by the mnemonic
- *
- * Removes a mnemonic from this window.
- */
-void
-gtk_window_remove_mnemonic (GtkWindow *window,
-                           guint      keyval,
-                           GtkWidget *target)
-{
-  g_return_if_fail (GTK_IS_WINDOW (window));
-  g_return_if_fail (GTK_IS_WIDGET (target));
-  
-  _gtk_mnemonic_hash_remove (gtk_window_get_mnemonic_hash (window, TRUE),
-                            keyval, target);
-  _gtk_window_notify_keys_changed (window);
-}
-
-/*
- * gtk_window_mnemonic_activate:
- * @window: a #GtkWindow
- * @keyval: the mnemonic
- * @modifier: the modifiers
- *
- * Activates the targets associated with the mnemonic.
- *
- * Returns: %TRUE if the activation is done.
- */
-static gboolean
-gtk_window_mnemonic_activate (GtkWindow      *window,
-                             guint           keyval,
-                             GdkModifierType modifier)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
-  g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
-
-  if (priv->mnemonic_modifier == (modifier & gtk_accelerator_get_default_mod_mask ()))
-      {
-       GtkMnemonicHash *mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE);
-       if (mnemonic_hash)
-         return _gtk_mnemonic_hash_activate (mnemonic_hash, keyval);
-      }
-
-  return FALSE;
-}
-
-/**
- * gtk_window_set_mnemonic_modifier:
- * @window: a #GtkWindow
- * @modifier: the modifier mask used to activate
- *               mnemonics on this window.
- *
- * Sets the mnemonic modifier for this window. 
- **/
-void
-gtk_window_set_mnemonic_modifier (GtkWindow      *window,
-                                 GdkModifierType modifier)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
-  g_return_if_fail (GTK_IS_WINDOW (window));
-  g_return_if_fail ((modifier & ~GDK_MODIFIER_MASK) == 0);
-
-  priv->mnemonic_modifier = modifier;
-  _gtk_window_notify_keys_changed (window);
-}
-
-/**
- * gtk_window_get_mnemonic_modifier:
- * @window: a #GtkWindow
- *
- * Returns the mnemonic modifier for this window. See
- * gtk_window_set_mnemonic_modifier().
- *
- * Returns: the modifier mask used to activate
- *               mnemonics on this window.
- **/
-GdkModifierType
-gtk_window_get_mnemonic_modifier (GtkWindow *window)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
-  g_return_val_if_fail (GTK_IS_WINDOW (window), 0);
-
-  return priv->mnemonic_modifier;
-}
-
 /**
  * gtk_window_get_focus:
  * @window: a #GtkWindow
@@ -4718,15 +4588,10 @@ gtk_window_finalize (GObject *object)
 {
   GtkWindow *window = GTK_WINDOW (object);
   GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-  GtkMnemonicHash *mnemonic_hash;
 
   g_free (priv->title);
   gtk_window_release_application (window);
 
-  mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE);
-  if (mnemonic_hash)
-    _gtk_mnemonic_hash_free (mnemonic_hash);
-
   if (priv->geometry_info)
     {
       g_free (priv->geometry_info);
@@ -6042,8 +5907,6 @@ _gtk_window_query_nonaccels (GtkWindow      *window,
                             guint           accel_key,
                             GdkModifierType accel_mods)
 {
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
   g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
 
   /* movement keys are considered locked accels */
@@ -6060,14 +5923,6 @@ _gtk_window_query_nonaccels (GtkWindow      *window,
          return TRUE;
     }
 
-  /* mnemonics are considered locked accels */
-  if (accel_mods == priv->mnemonic_modifier)
-    {
-      GtkMnemonicHash *mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE);
-      if (mnemonic_hash && _gtk_mnemonic_hash_lookup (mnemonic_hash, accel_key))
-       return TRUE;
-    }
-
   return FALSE;
 }
 
@@ -6116,9 +5971,6 @@ gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window)
   GList *seats, *s;
   gboolean retval = FALSE;
 
-  if (!priv->mnemonic_modifier)
-    return FALSE;
-
   seats = gdk_display_list_seats (gtk_widget_get_display (GTK_WIDGET (window)));
 
   for (s = seats; s; s = s->next)
@@ -6127,7 +5979,7 @@ gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window)
       GdkModifierType mask;
 
       gdk_device_get_state (dev, priv->surface, NULL, &mask);
-      if (priv->mnemonic_modifier == (mask & gtk_accelerator_get_default_mod_mask ()))
+      if ((mask & gtk_accelerator_get_default_mod_mask ()) == GDK_MOD1_MASK)
         {
           retval = TRUE;
           break;
@@ -8219,21 +8071,6 @@ gtk_window_activate_menubar (GtkWidget *widget,
   return TRUE;
 }
 
-static void
-gtk_window_mnemonic_hash_foreach (guint      keyval,
-                                 GSList    *targets,
-                                 gpointer   data)
-{
-  struct {
-    GtkWindow *window;
-    GtkWindowKeysForeachFunc func;
-    gpointer func_data;
-  } *info = data;
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (info->window);
-
-  (*info->func) (info->window, keyval, priv->mnemonic_modifier, TRUE, info->func_data);
-}
-
 static void
 _gtk_window_keys_foreach (GtkWindow                *window,
                          GtkWindowKeysForeachFunc func,
@@ -8241,22 +8078,6 @@ _gtk_window_keys_foreach (GtkWindow                *window,
 {
   GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
   GSList *groups;
-  GtkMnemonicHash *mnemonic_hash;
-
-  struct {
-    GtkWindow *window;
-    GtkWindowKeysForeachFunc func;
-    gpointer func_data;
-  } info;
-
-  info.window = window;
-  info.func = func;
-  info.func_data = func_data;
-
-  mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE);
-  if (mnemonic_hash)
-    _gtk_mnemonic_hash_foreach (mnemonic_hash,
-                               gtk_window_mnemonic_hash_foreach, &info);
 
   groups = gtk_accel_groups_from_object (G_OBJECT (window));
   while (groups)
@@ -8269,7 +8090,7 @@ _gtk_window_keys_foreach (GtkWindow                *window,
          GtkAccelKey *key = &group->priv->priv_accels[i].key;
          
          if (key->accel_key)
-           (*func) (window, key->accel_key, key->accel_mods, FALSE, func_data);
+           (*func) (window, key->accel_key, key->accel_mods, func_data);
        }
       
       groups = groups->next;
@@ -8297,7 +8118,6 @@ struct _GtkWindowKeyEntry
 {
   guint keyval;
   guint modifiers;
-  guint is_mnemonic : 1;
 };
 
 static void 
@@ -8310,7 +8130,6 @@ static void
 add_to_key_hash (GtkWindow      *window,
                 guint           keyval,
                 GdkModifierType modifiers,
-                gboolean        is_mnemonic,
                 gpointer        data)
 {
   GtkKeyHash *key_hash = data;
@@ -8319,7 +8138,6 @@ add_to_key_hash (GtkWindow      *window,
 
   entry->keyval = keyval;
   entry->modifiers = modifiers;
-  entry->is_mnemonic = is_mnemonic;
 
   /* GtkAccelGroup stores lowercased accelerators. To deal
    * with this, if <Shift> was specified, uppercase.
@@ -8405,18 +8223,11 @@ gtk_window_activate_key (GtkWindow   *window,
       for (tmp_list = entries; tmp_list; tmp_list = tmp_list->next)
        {
          GtkWindowKeyEntry *entry = tmp_list->data;
-         if (entry->is_mnemonic)
+          if (enable_accels && !found_entry)
             {
               found_entry = entry;
               break;
             }
-          else 
-            {
-              if (enable_accels && !found_entry)
-                {
-                 found_entry = entry;
-                }
-            }
        }
 
       g_slist_free (entries);
@@ -8424,39 +8235,31 @@ gtk_window_activate_key (GtkWindow   *window,
 
   if (found_entry)
     {
-      if (found_entry->is_mnemonic)
-        {
-          return gtk_window_mnemonic_activate (window, found_entry->keyval,
-                                               found_entry->modifiers);
-        }
-      else
+      if (enable_accels)
         {
-          if (enable_accels)
+          if (gtk_accel_groups_activate (G_OBJECT (window), found_entry->keyval, found_entry->modifiers))
+            return TRUE;
+
+          if (priv->application)
             {
-              if (gtk_accel_groups_activate (G_OBJECT (window), found_entry->keyval, found_entry->modifiers))
-                return TRUE;
-
-              if (priv->application)
-                {
-                  GtkWidget *focused_widget;
-                  GtkActionMuxer *muxer;
-                  GtkApplicationAccels *app_accels;
-
-                  focused_widget = gtk_window_get_focus (window);
-
-                  if (focused_widget)
-                    muxer = _gtk_widget_get_action_muxer (focused_widget, FALSE);
-                  else
-                    muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (window), FALSE);
-
-                  if (muxer == NULL)
-                    return FALSE;
-
-                  app_accels = gtk_application_get_application_accels (priv->application);
-                  return gtk_application_accels_activate (app_accels,
-                                                          G_ACTION_GROUP (muxer),
-                                                          found_entry->keyval, found_entry->modifiers);
-                }
+              GtkWidget *focused_widget;
+              GtkActionMuxer *muxer;
+              GtkApplicationAccels *app_accels;
+
+              focused_widget = gtk_window_get_focus (window);
+
+              if (focused_widget)
+                muxer = _gtk_widget_get_action_muxer (focused_widget, FALSE);
+              else
+                muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (window), FALSE);
+
+              if (muxer == NULL)
+                return FALSE;
+
+              app_accels = gtk_application_get_application_accels (priv->application);
+              return gtk_application_accels_activate (app_accels,
+                                                      G_ACTION_GROUP (muxer),
+                                                      found_entry->keyval, found_entry->modifiers);
             }
         }
     }
diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h
index 2a65bfc76b..b3697b82fe 100644
--- a/gtk/gtkwindow.h
+++ b/gtk/gtkwindow.h
@@ -235,20 +235,6 @@ GDK_AVAILABLE_IN_ALL
 void       gtk_window_set_has_user_ref_count (GtkWindow *window,
                                               gboolean   setting);
 
-GDK_AVAILABLE_IN_ALL
-void     gtk_window_add_mnemonic          (GtkWindow       *window,
-                                          guint            keyval,
-                                          GtkWidget       *target);
-GDK_AVAILABLE_IN_ALL
-void     gtk_window_remove_mnemonic       (GtkWindow       *window,
-                                          guint            keyval,
-                                          GtkWidget       *target);
-GDK_AVAILABLE_IN_ALL
-void     gtk_window_set_mnemonic_modifier (GtkWindow       *window,
-                                          GdkModifierType  modifier);
-GDK_AVAILABLE_IN_ALL
-GdkModifierType gtk_window_get_mnemonic_modifier (GtkWindow *window);
-
 GDK_AVAILABLE_IN_ALL
 void     gtk_window_present            (GtkWindow *window);
 GDK_AVAILABLE_IN_ALL
diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h
index b2e4b75ef1..a85b6a5bd1 100644
--- a/gtk/gtkwindowprivate.h
+++ b/gtk/gtkwindowprivate.h
@@ -56,7 +56,6 @@ void            gtk_window_check_resize            (GtkWindow     *self);
 typedef void (*GtkWindowKeysForeachFunc) (GtkWindow      *window,
                                           guint           keyval,
                                           GdkModifierType modifiers,
-                                          gboolean        is_mnemonic,
                                           gpointer        data);
 
 gboolean gtk_window_emit_close_request (GtkWindow *window);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]