[gtk+/wip/matthiasc/kill-key-events2: 9/10] places view: Stop using ::key-press-event
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/matthiasc/kill-key-events2: 9/10] places view: Stop using ::key-press-event
- Date: Sun, 4 Feb 2018 23:19:22 +0000 (UTC)
commit 4043b3657617754ea8d920416b8fa22dce47160f
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Feb 4 21:21:39 2018 +0100
places view: Stop using ::key-press-event
gtk/gtkplacesview.c | 65 +++++++++++++++++++++++------------------------
gtk/ui/gtkplacesview.ui | 1 -
2 files changed, 32 insertions(+), 34 deletions(-)
---
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c
index 2451f11..9b5e49f 100644
--- a/gtk/gtkplacesview.c
+++ b/gtk/gtkplacesview.c
@@ -28,6 +28,7 @@
#include "gtkplacesviewprivate.h"
#include "gtkplacesviewrowprivate.h"
#include "gtktypebuiltins.h"
+#include "gtkeventcontrollerkey.h"
/*
* SECTION:gtkplacesview
@@ -81,6 +82,7 @@ struct _GtkPlacesViewPrivate
GtkEntryCompletion *address_entry_completion;
GtkListStore *completion_store;
+ GtkEventController *key_controller;
GCancellable *networks_fetching_cancellable;
@@ -414,6 +416,7 @@ gtk_places_view_finalize (GObject *object)
g_clear_object (&priv->networks_fetching_cancellable);
g_clear_object (&priv->path_size_group);
g_clear_object (&priv->space_size_group);
+ g_clear_object (&priv->key_controller);
G_OBJECT_CLASS (gtk_places_view_parent_class)->finalize (object);
}
@@ -1687,51 +1690,46 @@ on_row_popup_menu (GtkPlacesViewRow *row)
}
static gboolean
-on_key_press_event (GtkWidget *widget,
- GdkEventKey *event,
- GtkPlacesView *view)
+on_key_press_event (GtkEventController *controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType state,
+ GtkPlacesView *view)
{
GtkPlacesViewPrivate *priv;
- guint keyval, state;
+ GdkModifierType modifiers;
priv = gtk_places_view_get_instance_private (view);
- if (event &&
- gdk_event_get_keyval ((GdkEvent *) event, &keyval) &&
- gdk_event_get_state ((GdkEvent *) event, &state))
- {
- guint modifiers;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
+ modifiers = gtk_accelerator_get_default_mod_mask ();
- if (keyval == GDK_KEY_Return ||
- keyval == GDK_KEY_KP_Enter ||
- keyval == GDK_KEY_ISO_Enter ||
- keyval == GDK_KEY_space)
- {
- GtkWidget *focus_widget;
- GtkWindow *toplevel;
+ if (keyval == GDK_KEY_Return ||
+ keyval == GDK_KEY_KP_Enter ||
+ keyval == GDK_KEY_ISO_Enter ||
+ keyval == GDK_KEY_space)
+ {
+ GtkWidget *focus_widget;
+ GtkWindow *toplevel;
- priv->current_open_flags = GTK_PLACES_OPEN_NORMAL;
- toplevel = get_toplevel (GTK_WIDGET (view));
+ priv->current_open_flags = GTK_PLACES_OPEN_NORMAL;
+ toplevel = get_toplevel (GTK_WIDGET (view));
- if (!toplevel)
- return FALSE;
+ if (!toplevel)
+ return FALSE;
- focus_widget = gtk_window_get_focus (toplevel);
+ focus_widget = gtk_window_get_focus (toplevel);
- if (!GTK_IS_PLACES_VIEW_ROW (focus_widget))
- return FALSE;
+ if (!GTK_IS_PLACES_VIEW_ROW (focus_widget))
+ return FALSE;
- if ((state & modifiers) == GDK_SHIFT_MASK)
- priv->current_open_flags = GTK_PLACES_OPEN_NEW_TAB;
- else if ((state & modifiers) == GDK_CONTROL_MASK)
- priv->current_open_flags = GTK_PLACES_OPEN_NEW_WINDOW;
+ if ((state & modifiers) == GDK_SHIFT_MASK)
+ priv->current_open_flags = GTK_PLACES_OPEN_NEW_TAB;
+ else if ((state & modifiers) == GDK_CONTROL_MASK)
+ priv->current_open_flags = GTK_PLACES_OPEN_NEW_WINDOW;
- activate_row (view, GTK_PLACES_VIEW_ROW (focus_widget), priv->current_open_flags);
+ activate_row (view, GTK_PLACES_VIEW_ROW (focus_widget), priv->current_open_flags);
- return TRUE;
- }
+ return TRUE;
}
return FALSE;
@@ -2259,7 +2257,6 @@ gtk_places_view_class_init (GtkPlacesViewClass *klass)
gtk_widget_class_bind_template_callback (widget_class, on_address_entry_text_changed);
gtk_widget_class_bind_template_callback (widget_class, on_address_entry_show_help_pressed);
gtk_widget_class_bind_template_callback (widget_class, on_connect_button_clicked);
- gtk_widget_class_bind_template_callback (widget_class, on_key_press_event);
gtk_widget_class_bind_template_callback (widget_class, on_listbox_row_activated);
gtk_widget_class_bind_template_callback (widget_class, on_recent_servers_listbox_row_activated);
@@ -2277,6 +2274,8 @@ gtk_places_view_init (GtkPlacesView *self)
priv->open_flags = GTK_PLACES_OPEN_NORMAL;
priv->path_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
priv->space_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+ priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (self));
+ g_signal_connect (priv->key_controller, "key-pressed", G_CALLBACK (on_key_press_event), self);
gtk_widget_init_template (GTK_WIDGET (self));
}
diff --git a/gtk/ui/gtkplacesview.ui b/gtk/ui/gtkplacesview.ui
index 615109f..48db836 100644
--- a/gtk/ui/gtkplacesview.ui
+++ b/gtk/ui/gtkplacesview.ui
@@ -303,7 +303,6 @@
<template class="GtkPlacesView" parent="GtkBox">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
- <signal name="key-press-event" handler="on_key_press_event" object="GtkPlacesView" swapped="no"/>
<child>
<object class="GtkStack" id="stack">
<property name="vhomogeneous">0</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]