diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2020-02-06 15:54:57 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-03-25 23:14:27 -0400 |
commit | 2c62cde780192f9ee742a7fa62e09eafe8b3db7a (patch) | |
tree | 6bf436089545d2104f3343c90eaf077e94a727f8 | |
parent | aab10ea43ba657a5d3923df59821d156a9b0e4cb (diff) | |
download | gtk+-2c62cde780192f9ee742a7fa62e09eafe8b3db7a.tar.gz |
window: Remove all old mnemonic handling API
-rw-r--r-- | docs/reference/gtk/gtk4-sections.txt | 4 | ||||
-rw-r--r-- | gtk/gtkapplicationaccels.c | 2 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 249 | ||||
-rw-r--r-- | gtk/gtkwindow.h | 14 | ||||
-rw-r--r-- | 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 20a81805f3..63da1afc9e 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -4270,8 +4270,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 @@ -4292,7 +4290,6 @@ gtk_window_set_keep_above gtk_window_set_keep_below gtk_window_set_decorated gtk_window_set_deletable -gtk_window_set_mnemonic_modifier gtk_window_set_accept_focus gtk_window_set_focus_on_map gtk_window_set_startup_id @@ -4302,7 +4299,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 a27501facf..e7a4f48948 100644 --- a/gtk/gtkapplicationaccels.c +++ b/gtk/gtkapplicationaccels.c @@ -346,7 +346,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 d247800417..2b00a59164 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -53,7 +53,6 @@ #include "gtkmain.h" #include "gtkmarshalers.h" #include "gtkmessagedialog.h" -#include "gtkmnemonichash.h" #include "gtkpointerfocusprivate.h" #include "gtkpopovermenuprivate.h" #include "gtkmodelbuttonprivate.h" @@ -175,8 +174,6 @@ typedef struct { - GtkMnemonicHash *mnemonic_hash; - GtkWidget *attach_widget; GtkWidget *default_widget; GtkWidget *initial_focus; @@ -187,8 +184,6 @@ typedef struct GdkDisplay *display; GtkApplication *application; - GdkModifierType mnemonic_modifier; - gchar *startup_id; gchar *title; @@ -1703,7 +1698,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; @@ -2562,130 +2556,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 @@ -4324,16 +4194,11 @@ gtk_window_finalize (GObject *object) { GtkWindow *window = GTK_WINDOW (object); GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - GtkMnemonicHash *mnemonic_hash; g_clear_pointer (&priv->extra_input_region, cairo_region_destroy); 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); @@ -5516,8 +5381,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 */ @@ -5534,14 +5397,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; } @@ -5590,9 +5445,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) @@ -5601,7 +5453,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; @@ -7559,43 +7411,12 @@ gtk_window_activate_menubar (GtkWidget *widget, } 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, gpointer func_data) { 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) @@ -7608,7 +7429,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; @@ -7636,7 +7457,6 @@ struct _GtkWindowKeyEntry { guint keyval; guint modifiers; - guint is_mnemonic : 1; }; static void @@ -7649,7 +7469,6 @@ static void add_to_key_hash (GtkWindow *window, guint keyval, GdkModifierType modifiers, - gboolean is_mnemonic, gpointer data) { GtkKeyHash *key_hash = data; @@ -7658,7 +7477,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. @@ -7748,18 +7566,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); @@ -7767,39 +7578,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 88f55b013d..4512135c83 100644 --- a/gtk/gtkwindow.h +++ b/gtk/gtkwindow.h @@ -191,20 +191,6 @@ 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 void gtk_window_present_with_time (GtkWindow *window, diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h index e58d099811..3c6ca3ce81 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); |