[gnome-todo] task-row: make edit pane drop from above
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] task-row: make edit pane drop from above
- Date: Fri, 29 Sep 2017 01:23:03 +0000 (UTC)
commit cc8033731e394f2aacff2574c352a7dbd3854baa
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Sep 28 21:30:46 2017 -0300
task-row: make edit pane drop from above
data/ui/task-row.ui | 195 ++++++++++++++++++++++++++++-----------------------
src/gtd-task-row.c | 42 ++++++-----
2 files changed, 131 insertions(+), 106 deletions(-)
---
diff --git a/data/ui/task-row.ui b/data/ui/task-row.ui
index 0d2d904..d6b224d 100644
--- a/data/ui/task-row.ui
+++ b/data/ui/task-row.ui
@@ -14,120 +14,145 @@
<property name="transition_duration">200</property>
<child>
- <object class="GtkStack" id="stack">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="interpolate-size">True</property>
- <property name="homogeneous">False</property>
- <property name="transition-type">slide-up-down</property>
- <property name="transition-duration">500</property>
+ <property name="orientation">vertical</property>
- <!-- Main page, visible when the task row is unfocused -->
<child>
- <object class="GtkEventBox">
+ <object class="GtkStack" id="stack">
<property name="visible">True</property>
- <signal name="enter-notify-event" handler="mouse_over_event_cb" object="GtdTaskRow"
swapped="no" />
- <signal name="leave-notify-event" handler="mouse_out_event_cb" object="GtdTaskRow"
swapped="no" />
+ <property name="can_focus">False</property>
+ <property name="interpolate-size">True</property>
+ <property name="homogeneous">False</property>
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">500</property>
+
+ <!-- Main page, visible when the task row is unfocused -->
<child>
- <object class="GtkBox">
+ <object class="GtkEventBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin-end">18</property>
- <property name="margin-start">8</property>
- <property name="margin-top">3</property>
- <property name="margin-bottom">3</property>
- <property name="height-request">32</property>
- <property name="spacing">4</property>
-
- <!-- Box with DnD margin -->
+ <signal name="enter-notify-event" handler="mouse_over_event_cb" object="GtdTaskRow"
swapped="no" />
+ <signal name="leave-notify-event" handler="mouse_out_event_cb" object="GtdTaskRow"
swapped="no" />
<child>
- <object class="GtkBox" id="dnd_box">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
- </object>
- </child>
+ <property name="margin-end">18</property>
+ <property name="margin-start">8</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ <property name="height-request">32</property>
+ <property name="spacing">4</property>
+
+ <!-- Box with DnD margin -->
+ <child>
+ <object class="GtkBox" id="dnd_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkEventBox" id="dnd_event_box">
+ <property name="visible">True</property>
+ <signal name="button-press-event" handler="button_press_event"
object="GtdTaskRow" swapped="no" />
+ <signal name="drag-begin" handler="drag_begin_cb" object="GtdTaskRow"
swapped="no" />
+ <signal name="drag-failed" handler="drag_failed_cb" object="GtdTaskRow"
swapped="no" />
+ <signal name="enter-notify-event" handler="mouse_over_dnd_event_cb"
object="GtdTaskRow" swapped="no" />
+ <signal name="leave-notify-event" handler="mouse_out_dnd_event_cb"
object="GtdTaskRow" swapped="no" />
+ <child>
+ <object class="GtkImage" id="dnd_icon">
+ <property name="visible">True</property>
+ <property name="icon-name">open-menu-symbolic</property>
+ <property name="pixel-size">12</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
- <child>
- <object class="GtkEventBox" id="dnd_event_box">
- <property name="visible">True</property>
- <signal name="button-press-event" handler="button_press_event" object="GtdTaskRow"
swapped="no" />
- <signal name="drag-begin" handler="drag_begin_cb" object="GtdTaskRow" swapped="no" />
- <signal name="drag-failed" handler="drag_failed_cb" object="GtdTaskRow" swapped="no"
/>
- <signal name="enter-notify-event" handler="mouse_over_dnd_event_cb"
object="GtdTaskRow" swapped="no" />
- <signal name="leave-notify-event" handler="mouse_out_dnd_event_cb"
object="GtdTaskRow" swapped="no" />
<child>
- <object class="GtkImage" id="dnd_icon">
+ <object class="GtkCheckButton" id="done_check">
<property name="visible">True</property>
- <property name="icon-name">open-menu-symbolic</property>
- <property name="pixel-size">12</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="margin-start">6</property>
+ <signal name="toggled" handler="complete_check_toggled_cb" object="GtdTaskRow"
swapped="no" />
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="title_label">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="ellipsize">end</property>
+ <property name="xalign">0.0</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="task_date_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1.0</property>
<style>
- <class name="dim-label" />
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="task_list_label">
+ <property name="visible">False</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="max_width_chars">18</property>
+ <property name="ellipsize">middle</property>
+ <style>
+ <class name="dim-label"/>
</style>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkCheckButton" id="done_check">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="vexpand">True</property>
- <property name="draw_indicator">True</property>
- <property name="margin-start">6</property>
- <signal name="toggled" handler="complete_check_toggled_cb" object="GtdTaskRow"
swapped="no" />
</object>
</child>
+ </object>
+ <packing>
+ <property name="name">unfocused</property>
+ </packing>
+ </child>
- <child>
- <object class="GtkLabel" id="title_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="ellipsize">end</property>
- <property name="xalign">0.0</property>
- </object>
- </child>
+ <!-- Edit header page -->
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="task_date_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1.0</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="task_list_label">
- <property name="visible">False</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="max_width_chars">18</property>
- <property name="ellipsize">middle</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- </child>
+ <!-- TODO: move the title entry to this page -->
</object>
+ <packing>
+ <property name="name">edit</property>
+ </packing>
</child>
+
</object>
- <packing>
- <property name="name">unfocused</property>
- </packing>
</child>
- <!-- Edit page -->
+ <!-- Edit Panel revealer -->
<child>
- <object class="GtkBox">
+ <object class="GtkRevealer" id="edit_panel_revealer">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="transition_type">slide-down</property>
+ <property name="transition_duration">500</property>
<child>
<object class="GtdEditPane" id="edit_panel">
<property name="visible">True</property>
@@ -137,11 +162,7 @@
</object>
</child>
</object>
- <packing>
- <property name="name">edit</property>
- </packing>
</child>
-
</object>
</child>
</object>
diff --git a/src/gtd-task-row.c b/src/gtd-task-row.c
index 1d2ab2e..cfa960b 100644
--- a/src/gtd-task-row.c
+++ b/src/gtd-task-row.c
@@ -29,35 +29,35 @@
struct _GtdTaskRow
{
- GtkListBoxRow parent;
+ GtkListBoxRow parent;
/*<private>*/
- GtkRevealer *revealer;
+ GtkRevealer *revealer;
- GtkWidget *done_check;
- GtkWidget *edit_panel;
- GtkWidget *stack;
+ GtkWidget *done_check;
+ GtkWidget *edit_panel;
+ GtkWidget *edit_panel_revealer;
+ GtkWidget *stack;
/* task widgets */
- GtkEntry *title_label;
- GtkLabel *task_date_label;
- GtkLabel *task_list_label;
+ GtkEntry *title_label;
+ GtkLabel *task_date_label;
+ GtkLabel *task_list_label;
/* dnd widgets */
- GtkWidget *dnd_box;
- GtkWidget *dnd_event_box;
- GtkWidget *dnd_icon;
- gdouble clicked_x;
- gdouble clicked_y;
+ GtkWidget *dnd_box;
+ GtkWidget *dnd_event_box;
+ GtkWidget *dnd_icon;
+ gdouble clicked_x;
+ gdouble clicked_y;
- gboolean handle_subtasks : 1;
+ gboolean handle_subtasks : 1;
/* data */
- GtdTask *task;
+ GtdTask *task;
- gint destroy_row_timeout_id;
-
- gboolean active;
+ gint destroy_row_timeout_id;
+ gboolean active;
};
#define PRIORITY_ICON_SIZE 8
@@ -65,7 +65,8 @@ struct _GtdTaskRow
G_DEFINE_TYPE (GtdTaskRow, gtd_task_row, GTK_TYPE_LIST_BOX_ROW)
-enum {
+enum
+{
ENTER,
EXIT,
REMOVE_TASK,
@@ -615,6 +616,7 @@ gtd_task_row_class_init (GtdTaskRowClass *klass)
gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, dnd_icon);
gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, done_check);
gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, edit_panel);
+ gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, edit_panel_revealer);
gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, revealer);
gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, stack);
gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, task_date_label);
@@ -872,6 +874,8 @@ gtd_task_row_set_active (GtdTaskRow *self,
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (self), !active);
gtk_widget_set_can_focus (GTK_WIDGET (self), !active);
+ gtk_revealer_set_reveal_child (GTK_REVEALER (self->edit_panel_revealer), active);
+
if (active)
{
gtk_stack_set_visible_child_name (GTK_STACK (self->stack), "edit");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]