Add scan control

This commit is contained in:
daleclack 2024-02-08 13:42:01 +08:00
parent 130ac7cc2b
commit c92d951f20
4 changed files with 14 additions and 1 deletions

View File

@ -17,6 +17,8 @@ static void back_activated(GSimpleAction *actions,
{ {
// Show preferences window // Show preferences window
MyPrefs *prefs = main_win_get_prefs(MAIN_WIN(win)); 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)); gtk_window_present(GTK_WINDOW(prefs));
} }

View File

@ -146,6 +146,7 @@ static gboolean prefs_win_closed(GtkWidget *window, MyDock *dock)
{ {
// For the preferences window, hide it // For the preferences window, hide it
gtk_widget_set_visible(window, FALSE); 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"); gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_set), "my_prefs");
return TRUE; return TRUE;
} }

View File

@ -62,6 +62,7 @@ struct _MyPrefs
gboolean panel_mode; // Whether panel mode is activated gboolean panel_mode; // Whether panel mode is activated
DockPos dock_pos; // Dock Position DockPos dock_pos; // Dock Position
str_vec back_vec; // Vector of backgrounds str_vec back_vec; // Vector of backgrounds
gboolean scan_ctrl; // Control the scan func
}; };
G_DEFINE_TYPE(MyPrefs, my_prefs, GTK_TYPE_WINDOW) 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); load_image(file_name, image_item_index, is_internal, prefs);
} }
return TRUE; return prefs->scan_ctrl;
} }
void my_prefs_first_load(MyPrefs *self) 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) void my_prefs_start_scan(MyPrefs *self)
{ {
// Add timer to scan the list // Add timer to scan the list
self->scan_ctrl = TRUE;
g_timeout_add(1, scan_func, self); 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 // Get Dock position
DockPos my_prefs_get_dock_pos(MyPrefs *self) DockPos my_prefs_get_dock_pos(MyPrefs *self)
{ {

View File

@ -13,6 +13,8 @@ G_DECLARE_FINAL_TYPE(MyPrefs, my_prefs, MY, PREFS, GtkWindow)
void my_prefs_start_scan(MyPrefs *self); void my_prefs_start_scan(MyPrefs *self);
void my_prefs_stop_scan(MyPrefs *self);
void my_prefs_first_load(MyPrefs *self); void my_prefs_first_load(MyPrefs *self);
DockPos my_prefs_get_dock_pos(MyPrefs *self); DockPos my_prefs_get_dock_pos(MyPrefs *self);