diff --git a/Gtk4_Reset/src/core/MyStack.cpp b/Gtk4_Reset/src/core/MyStack.cpp index a569d76..6320df9 100644 --- a/Gtk4_Reset/src/core/MyStack.cpp +++ b/Gtk4_Reset/src/core/MyStack.cpp @@ -17,6 +17,8 @@ static void back_activated(GSimpleAction *actions, { // Show preferences window MyPrefs *prefs = main_win_get_prefs(MAIN_WIN(win)); + my_prefs_first_load(prefs); + my_prefs_start_scan(prefs); gtk_window_present(GTK_WINDOW(prefs)); } diff --git a/Gtk4_Reset/src/ui/MyDock.cpp b/Gtk4_Reset/src/ui/MyDock.cpp index e97da6e..02ea8a3 100644 --- a/Gtk4_Reset/src/ui/MyDock.cpp +++ b/Gtk4_Reset/src/ui/MyDock.cpp @@ -146,6 +146,7 @@ static gboolean prefs_win_closed(GtkWidget *window, MyDock *dock) { // For the preferences window, hide it gtk_widget_set_visible(window, FALSE); + my_prefs_stop_scan(dock->prefs_win); gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_set), "my_prefs"); return TRUE; } diff --git a/Gtk4_Reset/src/ui/MyPrefs.cpp b/Gtk4_Reset/src/ui/MyPrefs.cpp index f738ba4..2594a34 100644 --- a/Gtk4_Reset/src/ui/MyPrefs.cpp +++ b/Gtk4_Reset/src/ui/MyPrefs.cpp @@ -62,6 +62,7 @@ struct _MyPrefs gboolean panel_mode; // Whether panel mode is activated DockPos dock_pos; // Dock Position str_vec back_vec; // Vector of backgrounds + gboolean scan_ctrl; // Control the scan func }; G_DEFINE_TYPE(MyPrefs, my_prefs, GTK_TYPE_WINDOW) @@ -609,7 +610,7 @@ static gboolean scan_func(gpointer data) { load_image(file_name, image_item_index, is_internal, prefs); } - return TRUE; + return prefs->scan_ctrl; } void my_prefs_first_load(MyPrefs *self) @@ -875,9 +876,16 @@ static void my_prefs_class_init(MyPrefsClass *klass) void my_prefs_start_scan(MyPrefs *self) { // Add timer to scan the list + self->scan_ctrl = TRUE; g_timeout_add(1, scan_func, self); } +void my_prefs_stop_scan(MyPrefs *self) +{ + // Stop scan for background update + self->scan_ctrl = FALSE; +} + // Get Dock position DockPos my_prefs_get_dock_pos(MyPrefs *self) { diff --git a/Gtk4_Reset/src/ui/MyPrefs.h b/Gtk4_Reset/src/ui/MyPrefs.h index e169780..e90d011 100644 --- a/Gtk4_Reset/src/ui/MyPrefs.h +++ b/Gtk4_Reset/src/ui/MyPrefs.h @@ -13,6 +13,8 @@ G_DECLARE_FINAL_TYPE(MyPrefs, my_prefs, MY, PREFS, GtkWindow) void my_prefs_start_scan(MyPrefs *self); +void my_prefs_stop_scan(MyPrefs *self); + void my_prefs_first_load(MyPrefs *self); DockPos my_prefs_get_dock_pos(MyPrefs *self);