* focus to first item when selecting a project.
* keep focus on project after refresh.
+ * keep focus on task after refresh.
v0.0.4
------
keep focus on project after refresh.\r
</p>\r
</li>\r
+<li>\r
+<p>\r
+keep focus on task after refresh.\r
+</p>\r
+</li>\r
</ul></div>\r
</div>\r
</div>\r
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2013-12-02 12:23:12 CET\r
+Last updated 2013-12-03 08:48:03 CET\r
</div>\r
</div>\r
</body>\r
void refresh()
{
GtkWidget *dialog;
- const char *current_prj;
+ const char *current_prj, *current_uuid;
+ struct task **old_tasks;
log_fct_enter();
ui_taskpanel_update(NULL);
if (tasks) {
+ old_tasks = tasks;
current_prj = ui_projecttree_get_project();
- ui_tasktree_update(NULL, NULL);
- tw_task_list_free(tasks);
+ current_uuid = ui_tasktree_get_task_uuid();
+ ui_tasktree_update(NULL, NULL, NULL);
} else {
+ old_tasks = NULL;
current_prj = NULL;
+ current_uuid = NULL;
}
tasks = tw_get_all_tasks(ui_get_status_filter());
if (tasks) {
ui_projecttree_update(tasks);
- ui_tasktree_update(tasks, current_prj);
+ ui_tasktree_update(tasks, current_prj, current_uuid);
} else {
dialog = gtk_message_dialog_new(NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
}
+
+ if (old_tasks)
+ tw_task_list_free(old_tasks);
+
log_fct(__func__, "EXIT");
}
g_settings_set_int(settings, "tasks-sort-order", sort_order);
}
+const char *ui_tasktree_get_task_uuid()
+{
+ struct task *t;
+
+ t = ui_tasktree_get_selected_task();
+
+ if (t)
+ return t->uuid;
+ else
+ return NULL;
+}
struct task *ui_tasktree_get_selected_task()
{
return result;
}
-void ui_tasktree_update(struct task **tasks, const char *prj_filter)
+void ui_tasktree_update(struct task **tasks,
+ const char *prj_filter,
+ const char *task_uuid)
{
GtkTreeModel *model;
struct task **tasks_cur;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview));
gtk_list_store_clear(GTK_LIST_STORE(model));
+ p = NULL;
if (current_tasks) {
for (tasks_cur = current_tasks; *tasks_cur; tasks_cur++) {
COL_UUID, (*tasks_cur)->uuid,
COL_PRIORITY, (*tasks_cur)->priority,
-1);
+
+ if (task_uuid && !strcmp(task->uuid, task_uuid))
+ p = gtk_tree_model_get_path(model, &iter);
}
- p = gtk_tree_path_new_first();
+ if (!p)
+ p = gtk_tree_path_new_first();
gtk_tree_view_set_cursor(w_treeview, p, NULL, FALSE);
}
void ui_tasktree_update_filter(const char *prj_filter)
{
- ui_tasktree_update(current_tasks, prj_filter);
+ ui_tasktree_update(current_tasks, prj_filter, NULL);
}
void ui_tasktree_load_settings(GSettings *);
void ui_tasktree_save_settings(GSettings *);
struct task *ui_tasktree_get_selected_task();
-void ui_tasktree_update(struct task **, const char *);
+const char *ui_tasktree_get_task_uuid();
+void ui_tasktree_update(struct task **, const char *, const char *);
void ui_tasktree_update_filter(const char *);
#endif