diff options
author | Matthias Clasen <mclasen@redhat.com> | 2018-01-31 12:42:43 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2018-02-07 16:11:56 -0500 |
commit | 542889180634f941ad85370503777518679ca2dc (patch) | |
tree | 4aa632ff864f7204503172c790a5e7bcf328a20d | |
parent | 5068522fa831fde9ed4df3398e316006ade9c6de (diff) | |
download | gtk+-542889180634f941ad85370503777518679ca2dc.tar.gz |
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.
-rw-r--r-- | demos/gtk-demo/font-features.ui | 1 | ||||
-rw-r--r-- | demos/gtk-demo/font_features.c | 16 | ||||
-rw-r--r-- | demos/gtk-demo/hypertext.c | 18 | ||||
-rw-r--r-- | 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 2cc89c92bc..c341233526 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 a2df188a6a..32d801d71f 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 bf06118095..0716b2748d 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 29080a0375..dceb051674 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"); |