[recipes] Improve key handling in cooking mode
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes] Improve key handling in cooking mode
- Date: Tue, 14 Feb 2017 02:54:52 +0000 (UTC)
commit c8c7d8f14781bcb0d351a33ccb3451b996345900
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Feb 13 21:53:45 2017 -0500
Improve key handling in cooking mode
With these changes, space, left and right work as expected.
We also handle enter to activate the explicit done button at
the end.
src/gr-cooking-page.c | 11 +++++++++++
src/gr-window.c | 17 +++++++++++++++++
src/gr-window.ui | 1 +
3 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/src/gr-cooking-page.c b/src/gr-cooking-page.c
index dc0d08d..0f48b1f 100644
--- a/src/gr-cooking-page.c
+++ b/src/gr-cooking-page.c
@@ -317,6 +317,17 @@ gr_cooking_page_handle_event (GrCookingPage *page,
return GDK_EVENT_STOP;
}
+ else if (e->keyval == GDK_KEY_Return) {
+ if (gtk_widget_get_visible (page->done_button))
+ stop_cooking (page);
+
+ return GDK_EVENT_STOP;
+ }
+ else if (e->keyval == GDK_KEY_space) {
+ next_step (page);
+
+ return GDK_EVENT_STOP;
+ }
else if (e->keyval == GDK_KEY_Left) {
prev_step (page);
diff --git a/src/gr-window.c b/src/gr-window.c
index ad40f24..05d3e94 100644
--- a/src/gr-window.c
+++ b/src/gr-window.c
@@ -350,6 +350,22 @@ window_keypress_handler (GtkWidget *widget,
}
static gboolean
+window_keypress_handler_before (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer data)
+{
+ GrWindow *window = GR_WINDOW (widget);
+ const char *visible;
+
+ visible = gtk_stack_get_visible_child_name (GTK_STACK (window->main_stack));
+
+ if (strcmp (visible, "cooking") == 0)
+ return gr_cooking_page_handle_event (GR_COOKING_PAGE (window->cooking_page), event);
+
+ return GDK_EVENT_PROPAGATE;
+}
+
+static gboolean
window_buttonpress_handler (GtkWidget *widget,
GdkEvent *event,
gpointer data)
@@ -570,6 +586,7 @@ gr_window_class_init (GrWindowClass *klass)
gtk_widget_class_bind_template_callback (widget_class, stop_search);
gtk_widget_class_bind_template_callback (widget_class, search_mode_changed);
gtk_widget_class_bind_template_callback (widget_class, window_keypress_handler);
+ gtk_widget_class_bind_template_callback (widget_class, window_keypress_handler_before);
gtk_widget_class_bind_template_callback (widget_class, window_buttonpress_handler);
gtk_widget_class_bind_template_callback (widget_class, window_mapped_handler);
gtk_widget_class_bind_template_callback (widget_class, do_undo);
diff --git a/src/gr-window.ui b/src/gr-window.ui
index 6314033..5d5da7c 100644
--- a/src/gr-window.ui
+++ b/src/gr-window.ui
@@ -3,6 +3,7 @@
<!-- interface-requires gtk+ 3.8 -->
<template class="GrWindow" parent="GtkApplicationWindow">
<property name="resizable">1</property>
+ <signal name="key-press-event" handler="window_keypress_handler_before"/>
<signal name="key-press-event" handler="window_keypress_handler" after="yes"/>
<signal name="button-press-event" handler="window_buttonpress_handler" after="yes"/>
<signal name="map" handler="window_mapped_handler" after="yes"/>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]