From 9c223f9a8abd21f04b292b789768bfcf80c10812 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 3 Jun 2024 10:11:32 +0600 Subject: [PATCH] Added unfocus preventation --- source/ubl-settings-repomanager.c | 8 ++++++++ source/ubl-settings-repomanager.h | 1 + 2 files changed, 9 insertions(+) diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 3f82fe6..c1bd7bd 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -1198,6 +1198,7 @@ void config_init(){ main_config.signs=NULL; main_config.signs_size=0; yon_sign_list_update(); + main_config.last_selection = NULL; } void yon_config_load_update(main_window *widgets){ @@ -1239,6 +1240,7 @@ void yon_config_load_update(main_window *widgets){ } void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){ + gtk_list_store_clear(widgets->RepoFileList); GtkTreeIter iter,itar; GtkTreeModel *model=NULL; @@ -1291,6 +1293,10 @@ void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){ } break; } + if (main_config.last_selection){ + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->RepoFileList),&itar,main_config.last_selection); + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&itar); + } } } @@ -1299,6 +1305,8 @@ void on_package_selection_changed(GtkWidget *self, main_window *widgets){ GtkTreeIter iter,itar; GtkTreeModel *model, *model2; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model,&iter)){ + if (main_config.last_selection) free(main_config.last_selection); + main_config.last_selection = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(widgets->RepoFileList),&iter); gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model2,&itar); switch (gtk_tree_store_iter_depth(widgets->RepoList,&itar)){ case 0: diff --git a/source/ubl-settings-repomanager.h b/source/ubl-settings-repomanager.h index e678605..5da0fca 100644 --- a/source/ubl-settings-repomanager.h +++ b/source/ubl-settings-repomanager.h @@ -109,6 +109,7 @@ typedef struct { int lock_root; config_str signs; int signs_size; + char *last_selection; } config; typedef struct {