[gtk+/wip/matthiasc/kill-key-events2: 33/48] gtk-demo: Stop using ::key-press-event in font explorer
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/matthiasc/kill-key-events2: 33/48] gtk-demo: Stop using ::key-press-event in font explorer
- Date: Thu, 8 Feb 2018 02:36:07 +0000 (UTC)
commit 542889180634f941ad85370503777518679ca2dc
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Jan 31 12:42:43 2018 +0100
gtk-demo: Stop using ::key-press-event in font explorer
Use a key controller instead. Note that this currently
breaks the handling of Enter, since we activate key bindings
twice, causing us to switch to the label and back.
demos/gtk-demo/font-features.ui | 1 -
demos/gtk-demo/font_features.c | 16 ++++++++++------
demos/gtk-demo/hypertext.c | 18 ++++++++++--------
demos/gtk-demo/search_entry2.c | 8 +++++---
4 files changed, 25 insertions(+), 18 deletions(-)
---
diff --git a/demos/gtk-demo/font-features.ui b/demos/gtk-demo/font-features.ui
index 2cc89c9..c341233 100644
--- a/demos/gtk-demo/font-features.ui
+++ b/demos/gtk-demo/font-features.ui
@@ -132,7 +132,6 @@
Разъяренный чтец эгоистично бьёт пятью жердями шустрого фехтовальщика. Наш банк вчера же выплатил Ф.Я.
Эйхгольду комиссию за ценные вещи. Эх, чужак, общий съём цен шляп (юфть) – вдрызг! В чащах юга жил бы цитрус?
Да, но фальшивый экземпляр!
Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός</property>
- <signal name="key-press-event" handler="entry_key_press"/>
<signal name="activate" handler="stop_edit"/>
<property name="valign">start</property>
<property name="width-chars">50</property>
diff --git a/demos/gtk-demo/font_features.c b/demos/gtk-demo/font_features.c
index a2df188..32d801d 100644
--- a/demos/gtk-demo/font_features.c
+++ b/demos/gtk-demo/font_features.c
@@ -1669,12 +1669,12 @@ stop_edit (void)
}
static gboolean
-entry_key_press (GtkEntry *entry, GdkEventKey *event)
+entry_key_press (GtkEventController *controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType modifiers,
+ GtkEntry *entry)
{
- guint keyval;
-
- gdk_event_get_keyval ((GdkEvent *)event, &keyval);
-
if (keyval == GDK_KEY_Escape)
{
gtk_entry_set_text (GTK_ENTRY (entry), text);
@@ -1694,6 +1694,7 @@ do_font_features (GtkWidget *do_widget)
{
GtkBuilder *builder;
GtkWidget *feature_list;
+ GtkEventController *controller;
builder = gtk_builder_new_from_resource ("/font_features/font-features.ui");
@@ -1703,7 +1704,6 @@ do_font_features (GtkWidget *do_widget)
gtk_builder_add_callback_symbol (builder, "reset", reset_features);
gtk_builder_add_callback_symbol (builder, "stop_edit", G_CALLBACK (stop_edit));
gtk_builder_add_callback_symbol (builder, "toggle_edit", G_CALLBACK (toggle_edit));
- gtk_builder_add_callback_symbol (builder, "entry_key_press", G_CALLBACK (entry_key_press));
gtk_builder_connect_signals (builder, NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
@@ -1718,6 +1718,10 @@ do_font_features (GtkWidget *do_widget)
entry = GTK_WIDGET (gtk_builder_get_object (builder, "entry"));
edit_toggle = GTK_WIDGET (gtk_builder_get_object (builder, "edit_toggle"));
+ controller = gtk_event_controller_key_new (entry);
+ g_object_set_data_full (G_OBJECT (entry), "controller", controller, g_object_unref);
+ g_signal_connect (controller, "key-pressed", G_CALLBACK (entry_key_press), entry);
+
add_check_group (feature_list, _("Kerning"), (const char *[]){ "kern", NULL });
add_check_group (feature_list, _("Ligatures"), (const char *[]){ "liga",
"dlig",
diff --git a/demos/gtk-demo/hypertext.c b/demos/gtk-demo/hypertext.c
index bf06118..0716b27 100644
--- a/demos/gtk-demo/hypertext.c
+++ b/demos/gtk-demo/hypertext.c
@@ -105,14 +105,14 @@ follow_if_link (GtkWidget *text_view,
/* Links can be activated by pressing Enter.
*/
static gboolean
-key_press_event (GtkWidget *text_view,
- GdkEventKey *event)
+key_pressed (GtkEventController *controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType modifiers,
+ GtkWidget *text_view)
{
GtkTextIter iter;
GtkTextBuffer *buffer;
- guint keyval;
-
- gdk_event_get_keyval ((GdkEvent *)event, &keyval);
switch (keyval)
{
@@ -128,7 +128,7 @@ key_press_event (GtkWidget *text_view,
break;
}
- return FALSE;
+ return GDK_EVENT_PROPAGATE;
}
static void set_cursor_if_appropriate (GtkTextView *text_view,
@@ -241,6 +241,7 @@ do_hypertext (GtkWidget *do_widget)
GtkWidget *view;
GtkWidget *sw;
GtkTextBuffer *buffer;
+ GtkEventController *controller;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hypertext");
@@ -255,8 +256,9 @@ do_hypertext (GtkWidget *do_widget)
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 20);
gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 20);
- g_signal_connect (view, "key-press-event",
- G_CALLBACK (key_press_event), NULL);
+ controller = gtk_event_controller_key_new (view);
+ g_object_set_data_full (G_OBJECT (view), "controller", controller, g_object_unref);
+ g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), view);
g_signal_connect (view, "event",
G_CALLBACK (event_cb), NULL);
diff --git a/demos/gtk-demo/search_entry2.c b/demos/gtk-demo/search_entry2.c
index 29080a0..dceb051 100644
--- a/demos/gtk-demo/search_entry2.c
+++ b/demos/gtk-demo/search_entry2.c
@@ -31,7 +31,10 @@ window_key_press_event_cb (GtkWidget *widget,
GdkEvent *event,
GtkSearchBar *bar)
{
- return gtk_search_bar_handle_event (bar, event);
+ if (gdk_event_get_event_type (event) == GDK_KEY_PRESS)
+ return gtk_search_bar_handle_event (bar, event);
+
+ return GDK_EVENT_PROPAGATE;
}
static void
@@ -99,8 +102,7 @@ do_search_entry2 (GtkWidget *do_widget)
gtk_box_pack_start (GTK_BOX (vbox), searchbar);
/* Hook the search bar to key presses */
- g_signal_connect (window, "key-press-event",
- G_CALLBACK (window_key_press_event_cb), searchbar);
+ g_signal_connect (window, "event", G_CALLBACK (window_key_press_event_cb), searchbar);
/* Help */
label = gtk_label_new ("Start Typing to search");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]