static const char *program_name;
static struct task **tasks;
-static GtkTreeView *w_treeview;
static GSettings *settings;
-enum {
- COL_ID,
- COL_DESCRIPTION,
- COL_PROJECT,
- COL_UUID,
- COL_PRIORITY
-};
-
static struct option long_options[] = {
{"version", no_argument, 0, 'v'},
{"help", no_argument, 0, 'h'},
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();
+ current_uuid = ui_tasktree_get_task_uuid();
ui_tasktree_update(NULL, NULL);
- tw_task_list_free(tasks);
} 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);
+ if (current_uuid)
+ ui_tasktree_set_selected_task(current_uuid);
} else {
dialog = gtk_message_dialog_new(NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
}
- log_fct(__func__, "EXIT");
-}
-static int cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
-{
- log_fct_enter();
-
- ui_taskpanel_update(ui_tasktree_get_selected_task());
+ if (old_tasks)
+ tw_task_list_free(old_tasks);
log_fct_exit();
-
- return FALSE;
}
static void log_init()
ui_tasktree_init(builder);
ui_projecttree_init(builder);
- w_treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "tasktree"));
-
gtk_builder_connect_signals(builder, NULL);
- g_signal_connect(w_treeview,
- "cursor-changed", (GCallback)cursor_changed_cbk,
- tasks);
-
g_object_unref(G_OBJECT(builder));
refresh();