[recipes] Improve keynav in ingredients list



commit be65f44b25ecefedd916ae1e2ecc2d1917f8cd42
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon May 8 22:01:35 2017 -0400

    Improve keynav in ingredients list
    
    Make tabbing through the list 'move the entry'.
    There is a small issue with tabbing backwards, still.

 src/gr-ingredients-viewer-row.c  |   10 ++++++++++
 src/gr-ingredients-viewer-row.ui |    7 +++++++
 2 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/src/gr-ingredients-viewer-row.c b/src/gr-ingredients-viewer-row.c
index dc01012..89b9b42 100644
--- a/src/gr-ingredients-viewer-row.c
+++ b/src/gr-ingredients-viewer-row.c
@@ -296,6 +296,15 @@ edit_unit (GrIngredientsViewerRow *row)
 }
 
 static void
+edit_unit_or_focus_out (GrIngredientsViewerRow *row)
+{
+        if (!row->active)
+                edit_unit (row);
+        else
+                save_row (row);
+}
+
+static void
 parse_unit (const char  *text,
             char       **amount,
             char       **unit)
@@ -439,6 +448,7 @@ gr_ingredients_viewer_row_class_init (GrIngredientsViewerRowClass *klass)
         gtk_widget_class_bind_template_callback (widget_class, emit_delete);
         gtk_widget_class_bind_template_callback (widget_class, drag_handle_clicked);
         gtk_widget_class_bind_template_callback (widget_class, edit_unit);
+        gtk_widget_class_bind_template_callback (widget_class, edit_unit_or_focus_out);
         gtk_widget_class_bind_template_callback (widget_class, edit_ingredient);
         gtk_widget_class_bind_template_callback (widget_class, save_row);
         gtk_widget_class_bind_template_callback (widget_class, entry_key_press);
diff --git a/src/gr-ingredients-viewer-row.ui b/src/gr-ingredients-viewer-row.ui
index a230ee0..7ee277a 100644
--- a/src/gr-ingredients-viewer-row.ui
+++ b/src/gr-ingredients-viewer-row.ui
@@ -2,6 +2,7 @@
 <interface domain="gnome-recipes">
   <template class="GrIngredientsViewerRow" parent="GtkListBoxRow">
     <property name="visible">1</property>
+    <signal name="focus-in-event" handler="edit_unit_or_focus_out" swapped="yes"/>
     <child>
       <object class="GtkBox" id="box">
         <property name="visible">1</property>
@@ -14,7 +15,9 @@
             <child>
               <object class="GtkEventBox" id="unit_event_box">
                 <property name="visible">1</property>
+                <property name="can-focus">1</property>
                 <signal name="button-press-event" handler="edit_unit" swapped="yes"/>
+                <signal name="focus-in-event" handler="edit_unit" swapped="yes"/>
                 <child>
                   <object class="GtkLabel" id="unit_label">
                     <property name="visible">1</property>
@@ -52,7 +55,9 @@
             <child>
               <object class="GtkEventBox" id="ingredient_event_box">
                 <property name="visible">1</property>
+                <property name="can-focus">1</property>
                 <signal name="button-press-event" handler="edit_ingredient" swapped="yes"/>
+                <signal name="focus-in-event" handler="edit_ingredient" swapped="yes"/>
                 <child>
                   <object class="GtkLabel" id="ingredient_label">
                     <property name="visible">1</property>
@@ -108,6 +113,7 @@
                     <property name="visible">1</property>
                     <property name="relief">none</property>
                     <signal name="clicked" handler="emit_delete" swapped="yes"/>
+                    <signal name="focus-in-event" handler="save_row" swapped="yes" after="yes"/>
                     <style>
                       <class name="image-button"/>
                       <class name="circular"/>
@@ -126,6 +132,7 @@
                     <property name="visible">1</property>
                     <property name="relief">none</property>
                     <signal name="clicked" handler="drag_handle_clicked" swapped="yes"/>
+                    <signal name="focus-in-event" handler="save_row" swapped="yes" after="yes"/>
                     <style>
                       <class name="image-button"/>
                       <class name="circular"/>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]