[recipes] edit page: Bring back row reordering by keynav
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes] edit page: Bring back row reordering by keynav
- Date: Tue, 9 May 2017 19:55:36 +0000 (UTC)
commit 51bfe549919758f731c3bd65546a61c0e3a7c2a5
Author: Matthias Clasen <mclasen redhat com>
Date: Tue May 9 15:51:08 2017 -0400
edit page: Bring back row reordering by keynav
When the drag handle has focus, listen to Up/Down
arrows to move the row around.
src/gr-ingredients-viewer-row.c | 29 +++++++++++++++++++++++++++++
src/gr-ingredients-viewer-row.ui | 1 +
2 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/src/gr-ingredients-viewer-row.c b/src/gr-ingredients-viewer-row.c
index 89b9b42..60ad6d4 100644
--- a/src/gr-ingredients-viewer-row.c
+++ b/src/gr-ingredients-viewer-row.c
@@ -368,6 +368,34 @@ entry_key_press (GrIngredientsViewerRow *row,
return GDK_EVENT_PROPAGATE;
}
+static gboolean
+drag_key_press (GtkButton *button,
+ GdkEventKey *event,
+ GrIngredientsViewerRow *row)
+{
+ GtkWidget *list;
+ int index;
+
+ list = gtk_widget_get_parent (GTK_WIDGET (row));
+ index = gtk_list_box_row_get_index (GTK_LIST_BOX_ROW (row));
+
+ if (event->keyval == GDK_KEY_Up)
+ index -= 1;
+ else if (event->keyval == GDK_KEY_Down)
+ index += 1;
+ else
+ return GDK_EVENT_PROPAGATE;
+
+ g_object_ref (row);
+ gtk_container_remove (GTK_CONTAINER (list), GTK_WIDGET (row));
+ gtk_list_box_insert (GTK_LIST_BOX (list), GTK_WIDGET (row), index);
+ g_object_unref (row);
+
+ gtk_widget_grab_focus (GTK_WIDGET (button));
+
+ return GDK_EVENT_STOP;
+}
+
static void
gr_ingredients_viewer_row_class_init (GrIngredientsViewerRowClass *klass)
{
@@ -452,6 +480,7 @@ gr_ingredients_viewer_row_class_init (GrIngredientsViewerRowClass *klass)
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);
+ gtk_widget_class_bind_template_callback (widget_class, drag_key_press);
}
static GtkTargetEntry entries[] = {
diff --git a/src/gr-ingredients-viewer-row.ui b/src/gr-ingredients-viewer-row.ui
index 7ee277a..85b0ecf 100644
--- a/src/gr-ingredients-viewer-row.ui
+++ b/src/gr-ingredients-viewer-row.ui
@@ -133,6 +133,7 @@
<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"/>
+ <signal name="key-press-event" handler="drag_key_press"/>
<style>
<class name="image-button"/>
<class name="circular"/>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]