tint2conf: force refresh fix

This commit is contained in:
o9000
2017-03-04 22:36:51 +01:00
parent e833b27533
commit 3c9642c5fc
3 changed files with 41 additions and 5 deletions

View File

@@ -167,6 +167,7 @@ static void viewRowActivated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeV
static void select_first_theme();
static void load_all_themes();
static void reload_all_themes();
// ====== Globals ======
@@ -256,7 +257,7 @@ int main(int argc, char **argv)
{"ThemeEdit", GTK_STOCK_PROPERTIES, _("_Edit theme..."), NULL, _("Edit the selected theme"), G_CALLBACK(edit_theme)},
{"ThemeMakeDefault", GTK_STOCK_APPLY, _("_Make default"), NULL, _("Replace the default theme with the selected one"), G_CALLBACK(make_selected_theme_default)},
{"ThemeRefresh", GTK_STOCK_REFRESH, _("Refresh"), NULL, _("Redraw the selected theme"), G_CALLBACK(refresh_current_theme)},
{"RefreshAll", GTK_STOCK_REFRESH, _("Refresh all"), NULL, _("Redraw all themes"), G_CALLBACK(load_all_themes)},
{"RefreshAll", GTK_STOCK_REFRESH, _("Refresh all"), NULL, _("Redraw all themes"), G_CALLBACK(reload_all_themes)},
{"Quit", GTK_STOCK_QUIT, _("_Quit"), "<control>Q", _("Quit"), G_CALLBACK(gtk_main_quit)},
{"HelpMenu", NULL, _("_Help"), NULL, NULL, NULL},
{"HelpAbout", GTK_STOCK_ABOUT, _("_About"), "<Control>A", _("About"), G_CALLBACK(menuAbout)}};
@@ -837,6 +838,37 @@ static void load_all_themes()
}
}
static void reload_all_themes()
{
ensure_default_theme_exists();
gtk_list_store_clear(GTK_LIST_STORE(theme_list_store));
theme_selection_changed(NULL, NULL);
gboolean found_themes = FALSE;
if (load_user_themes())
found_themes = TRUE;
if (load_system_themes())
found_themes = TRUE;
if (found_themes) {
select_first_theme();
GtkTreeIter iter;
GtkTreeModel *model;
gboolean have_iter;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(g_theme_view));
have_iter = gtk_tree_model_get_iter_first(model, &iter);
while (have_iter) {
gtk_list_store_set(theme_list_store, &iter, COL_SNAPSHOT, NULL, COL_FORCE_REFRESH, TRUE, -1);
have_iter = gtk_tree_model_iter_next(model, &iter);
}
g_timeout_add(SNAPSHOT_TICK, (GSourceFunc)update_snapshot, NULL);
}
}
static void load_specific_themes(char **paths, int count)
{
ensure_default_theme_exists();