summaryrefslogtreecommitdiff
path: root/gtk/gtkpasswordentry.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-04-05 01:04:20 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-04-06 01:40:49 -0400
commit234a21905c04327b8d976beeb54701ec60d6e07b (patch)
tree259b15167a8797e0d2bb764b6d19244f65fd8b56 /gtk/gtkpasswordentry.c
parent13213c710f8b881ad2c095764c3486b1309cf6c8 (diff)
downloadgtk+-234a21905c04327b8d976beeb54701ec60d6e07b.tar.gz
gtk: Stop using keymap apis
Stop using most keymap apis in GTK. Only a few calls related to virtual modifiers are left.
Diffstat (limited to 'gtk/gtkpasswordentry.c')
-rw-r--r--gtk/gtkpasswordentry.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/gtk/gtkpasswordentry.c b/gtk/gtkpasswordentry.c
index f2dd58e128..b6f202f247 100644
--- a/gtk/gtkpasswordentry.c
+++ b/gtk/gtkpasswordentry.c
@@ -55,7 +55,7 @@ typedef struct {
GtkWidget *entry;
GtkWidget *icon;
GtkWidget *peek_icon;
- GdkKeymap *keymap;
+ GdkDevice *keyboard;
GMenuModel *extra_menu;
} GtkPasswordEntryPrivate;
@@ -81,8 +81,9 @@ G_DEFINE_TYPE_WITH_CODE (GtkPasswordEntry, gtk_password_entry, GTK_TYPE_WIDGET,
G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE, gtk_password_entry_editable_init))
static void
-keymap_state_changed (GdkKeymap *keymap,
- GtkWidget *widget)
+caps_lock_state_changed (GdkDevice *device,
+ GParamSpec *pspec,
+ GtkWidget *widget)
{
GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (widget);
GtkPasswordEntryPrivate *priv = gtk_password_entry_get_instance_private (entry);
@@ -90,7 +91,7 @@ keymap_state_changed (GdkKeymap *keymap,
if (gtk_editable_get_editable (GTK_EDITABLE (entry)) &&
gtk_widget_has_focus (priv->entry) &&
!gtk_text_get_visibility (GTK_TEXT (priv->entry)) &&
- gdk_keymap_get_caps_lock_state (priv->keymap))
+ gdk_device_get_caps_lock_state (device))
gtk_widget_show (priv->icon);
else
gtk_widget_hide (priv->icon);
@@ -102,8 +103,8 @@ focus_changed (GtkWidget *widget)
GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (widget);
GtkPasswordEntryPrivate *priv = gtk_password_entry_get_instance_private (entry);
- if (priv->keymap)
- keymap_state_changed (priv->keymap, widget);
+ if (priv->keyboard)
+ caps_lock_state_changed (priv->keyboard, NULL, widget);
}
static void
@@ -134,8 +135,8 @@ visibility_toggled (GObject *object,
gtk_widget_set_tooltip_text (priv->peek_icon, _("Show text"));
}
- if (priv->keymap)
- keymap_state_changed (priv->keymap, GTK_WIDGET (entry));
+ if (priv->keyboard)
+ caps_lock_state_changed (priv->keyboard, NULL, GTK_WIDGET (entry));
}
static void
@@ -168,9 +169,9 @@ gtk_password_entry_realize (GtkWidget *widget)
GTK_WIDGET_CLASS (gtk_password_entry_parent_class)->realize (widget);
- priv->keymap = gdk_display_get_keymap (gtk_widget_get_display (widget));
- g_signal_connect (priv->keymap, "state-changed", G_CALLBACK (keymap_state_changed), entry);
- keymap_state_changed (priv->keymap, widget);
+ priv->keyboard = gdk_seat_get_keyboard (gdk_display_get_default_seat (gtk_widget_get_display (widget)));
+ g_signal_connect (priv->keyboard, "notify::caps-lock-state", G_CALLBACK (caps_lock_state_changed), entry);
+ caps_lock_state_changed (priv->keyboard, NULL, widget);
}
static void
@@ -179,8 +180,8 @@ gtk_password_entry_dispose (GObject *object)
GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (object);
GtkPasswordEntryPrivate *priv = gtk_password_entry_get_instance_private (entry);
- if (priv->keymap)
- g_signal_handlers_disconnect_by_func (priv->keymap, keymap_state_changed, entry);
+ if (priv->keyboard)
+ g_signal_handlers_disconnect_by_func (priv->keyboard, caps_lock_state_changed, entry);
if (priv->entry)
gtk_editable_finish_delegate (GTK_EDITABLE (entry));
@@ -502,7 +503,7 @@ gtk_password_entry_set_show_peek_icon (GtkPasswordEntry *entry,
entry);
}
- keymap_state_changed (priv->keymap, GTK_WIDGET (entry));
+ caps_lock_state_changed (priv->keyboard, NULL, GTK_WIDGET (entry));
g_object_notify_by_pspec (G_OBJECT (entry), props[PROP_SHOW_PEEK_ICON]);
}