[gnome-todo] task-row: allow editing task name
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] task-row: allow editing task name
- Date: Thu, 27 Aug 2015 12:56:31 +0000 (UTC)
commit 31c4487a6f34b294dfaa16230844ece9d7fa20ad
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Aug 27 09:56:11 2015 -0300
task-row: allow editing task name
data/ui/task-row.ui | 1 +
src/gtd-task-row.c | 35 ++++++++++++++++++++++++++++-------
2 files changed, 29 insertions(+), 7 deletions(-)
---
diff --git a/data/ui/task-row.ui b/data/ui/task-row.ui
index 1f63613..0571ac7 100644
--- a/data/ui/task-row.ui
+++ b/data/ui/task-row.ui
@@ -77,6 +77,7 @@
<object class="GtkEntry" id="title_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <signal name="focus_out_event" handler="gtd_task_row__entry_focus_out"
object="GtdTaskRow" swapped="no" />
</object>
<packing>
<property name="name">title</property>
diff --git a/src/gtd-task-row.c b/src/gtd-task-row.c
index e64253a..23f1a05 100644
--- a/src/gtd-task-row.c
+++ b/src/gtd-task-row.c
@@ -37,6 +37,7 @@ typedef struct
GtkEntry *title_entry;
GtkLabel *task_date_label;
GtkLabel *task_list_label;
+ GtkStack *task_stack;
GtkSpinner *task_loading_spinner;
GtkLabel *title_label;
@@ -205,9 +206,9 @@ gtd_task_row__entry_focus_out (GtkWidget *widget,
g_return_val_if_fail (GTD_IS_TASK_ROW (user_data), FALSE);
if (priv->new_task_mode)
- {
- gtk_stack_set_visible_child_name (priv->new_task_stack, "label");
- }
+ gtk_stack_set_visible_child_name (priv->new_task_stack, "label");
+ else
+ gtk_stack_set_visible_child_name (priv->task_stack, "label");
return FALSE;
}
@@ -225,6 +226,11 @@ gtd_task_row__focus_in (GtkWidget *widget,
gtk_stack_set_visible_child_name (priv->new_task_stack, "entry");
gtk_widget_grab_focus (GTK_WIDGET (priv->new_task_entry));
}
+ else
+ {
+ gtk_stack_set_visible_child_name (priv->task_stack, "title");
+ gtk_widget_grab_focus (GTK_WIDGET (priv->title_entry));
+ }
return FALSE;
}
@@ -452,6 +458,7 @@ gtd_task_row_class_init (GtdTaskRowClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, revealer);
gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_date_label);
gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_list_label);
+ gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_stack);
gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_loading_spinner);
gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, title_entry);
gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, title_label);
@@ -549,16 +556,30 @@ void
gtd_task_row_set_task (GtdTaskRow *row,
GtdTask *task)
{
+ GtdTaskRowPrivate *priv;
+
g_return_if_fail (GTD_IS_TASK_ROW (row));
+ priv = row->priv;
+
if (row->priv->task != task)
{
row->priv->task = task;
if (task)
{
- gtk_entry_set_text (row->priv->title_entry, gtd_task_get_title (task));
- gtk_label_set_label (row->priv->task_list_label, gtd_task_list_get_name (gtd_task_get_list
(task)));
+ g_object_bind_property (task,
+ "title",
+ priv->title_entry,
+ "text",
+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
+
+ g_object_bind_property (task,
+ "title",
+ priv->task_list_label,
+ "label",
+ G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
+
g_object_bind_property (task,
"complete",
row->priv->done_check,
@@ -567,13 +588,13 @@ gtd_task_row_set_task (GtdTaskRow *row,
g_object_bind_property (task,
"ready",
- row->priv->task_loading_spinner,
+ priv->task_loading_spinner,
"visible",
G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE);
g_object_bind_property_full (task,
"due-date",
- row->priv->task_date_label,
+ priv->task_date_label,
"label",
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE,
gtd_task_row__date_changed_binding,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]