all repos — tint2 @ f5236f1d21463bd4cfb75bb106d0d97688b5b8e8

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

tint2conf: Show only one popup during long operations (issue #563)
o9000 mrovi9000@gmail.com
commit

f5236f1d21463bd4cfb75bb106d0d97688b5b8e8

parent

b0f172a8e1208d52847ff116597c8c1b530d8042

3 files changed, 24 insertions(+), 13 deletions(-)

jump to
M src/tint2conf/main.csrc/tint2conf/main.c

@@ -481,7 +481,7 @@ char *file;

sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(g_theme_view)); if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(sel), &model, &iter)) { - GtkWidget *dialog = create_please_wait(); + create_please_wait(); process_events(); gtk_tree_model_get(model, &iter, COL_THEME_FILE, &file, -1);

@@ -491,7 +491,7 @@ save_icon_cache(icon_theme);

gtk_window_present(GTK_WINDOW(prop)); g_free(file); - gtk_widget_destroy(dialog); + destroy_please_wait(); } }
M src/tint2conf/properties.csrc/tint2conf/properties.c

@@ -2209,7 +2209,7 @@ }

void icon_theme_changed() { - GtkWidget *dialog = create_please_wait(); + create_please_wait(); process_events(); if (icon_theme)

@@ -2227,7 +2227,7 @@ load_icons(launcher_apps);

load_icons(all_apps); save_icon_cache(icon_theme); - gtk_widget_destroy(dialog); + destroy_please_wait(); } void launcher_icon_theme_changed(GtkWidget *widget, gpointer data)

@@ -5380,15 +5380,17 @@

change_paragraph(parent); } -GtkWidget *create_please_wait() +static GtkWidget *please_wait_dialog = NULL; +void create_please_wait() { - GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_NONE, "%s", _("Loading...")); - gtk_window_set_title(GTK_WINDOW(dialog), _("Please wait...")); - gtk_window_set_deletable(GTK_WINDOW(dialog), FALSE); - gtk_window_set_default_size(GTK_WINDOW(dialog), 400, 200); - gtk_widget_show_all(dialog); - gtk_widget_set_size_request(dialog, 300, 100); - return (GtkWidget*)dialog; + if (please_wait_dialog) + return; + please_wait_dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_NONE, "%s", _("Loading...")); + gtk_window_set_title(GTK_WINDOW(please_wait_dialog), _("Please wait...")); + gtk_window_set_deletable(GTK_WINDOW(please_wait_dialog), FALSE); + gtk_window_set_default_size(GTK_WINDOW(please_wait_dialog), 400, 200); + gtk_widget_show_all(please_wait_dialog); + gtk_widget_set_size_request(please_wait_dialog, 300, 100); } void process_events()

@@ -5396,3 +5398,11 @@ {

while (gtk_events_pending()) gtk_main_iteration_do(FALSE); } + +void destroy_please_wait() +{ + if (!please_wait_dialog) + return; + gtk_widget_destroy(please_wait_dialog); + please_wait_dialog = NULL; +}
M src/tint2conf/properties.hsrc/tint2conf/properties.h

@@ -204,7 +204,8 @@ Executor *execp_get_last();

void execp_remove(int i); void execp_update_indices(); -GtkWidget *create_please_wait(); +void create_please_wait(); void process_events(); +void destroy_please_wait(); #endif