diff options
| author | Balló György <[email protected]> | 2026-10-24 03:26:51 +0200 |
|---|---|---|
| committer | Luke from DC <[email protected]> | 2026-10-24 16:40:08 +0000 |
| commit | e33eab7048a97994e4288bc9644f2854ec127db2 (patch) | |
| tree | ebaa34bcae5b84393d882026aaa53008e0e704f2 | |
| parent | 58ac6c101bdf2e2975c0395723ad16e9c9764f5c (diff) | |
| download | mate-panel-master.tar.bz2 mate-panel-master.tar.xz | |
gtk_show_about_dialog() sets its values only on first invocation, and
cannot be used to display the about dialog with different content.
This fixes the problem that wrong content is shown, when the about dialog
is opened from multiple applets, and the applets are built as in-process.
| -rw-r--r-- | applets/clock/clock.c | 6 | ||||
| -rw-r--r-- | applets/fish/fish.c | 5 | ||||
| -rw-r--r-- | applets/notification_area/main.c | 6 | ||||
| -rw-r--r-- | applets/wncklet/showdesktop.c | 10 | ||||
| -rw-r--r-- | applets/wncklet/window-list.c | 10 | ||||
| -rw-r--r-- | applets/wncklet/window-menu.c | 10 | ||||
| -rw-r--r-- | applets/wncklet/workspace-switcher.c | 10 |
7 files changed, 34 insertions, 23 deletions
diff --git a/applets/clock/clock.c b/applets/clock/clock.c index 0c104f31..f4b9580c 100644 --- a/applets/clock/clock.c +++ b/applets/clock/clock.c @@ -3687,7 +3687,7 @@ static void display_about_dialog(GtkAction* action, ClockData* cd) NULL }; - gtk_show_about_dialog(NULL, + GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, "program-name", _("Clock"), "title", _("About Clock"), "authors", authors, @@ -3700,6 +3700,10 @@ static void display_about_dialog(GtkAction* action, ClockData* cd) "version", VERSION, "website", PACKAGE_URL, NULL); + + g_signal_connect_swapped (about, "response", + G_CALLBACK (gtk_widget_destroy), about); + gtk_widget_show (about); } static gboolean diff --git a/applets/fish/fish.c b/applets/fish/fish.c index a72ff5e4..0f326f83 100644 --- a/applets/fish/fish.c +++ b/applets/fish/fish.c @@ -549,7 +549,7 @@ static void display_about_dialog(GtkAction* action, FishApplet* fish) descr = g_strdup_printf(about_format, fish->name); - gtk_show_about_dialog(NULL, + GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, "program-name", _("Fish"), "title", _("About Fish"), "authors", authors, @@ -564,6 +564,9 @@ static void display_about_dialog(GtkAction* action, FishApplet* fish) "website", PACKAGE_URL, NULL); + g_signal_connect_swapped (about, "response", + G_CALLBACK (gtk_widget_destroy), about); + gtk_widget_show (about); g_free(descr); g_free(authors[0]); } diff --git a/applets/notification_area/main.c b/applets/notification_area/main.c index 20ef2b3c..3eb86694 100644 --- a/applets/notification_area/main.c +++ b/applets/notification_area/main.c @@ -266,7 +266,7 @@ static void about_cb(GtkAction* action, NaTrayApplet* applet) NULL }; - gtk_show_about_dialog(NULL, + GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, "program-name", _("Notification Area"), "title", _("About Notification Area"), "authors", authors, @@ -280,6 +280,10 @@ static void about_cb(GtkAction* action, NaTrayApplet* applet) "translator-credits", _("translator-credits"), "version", VERSION, NULL); + + g_signal_connect_swapped (about, "response", + G_CALLBACK (gtk_widget_destroy), about); + gtk_widget_show (about); } static const GtkActionEntry menu_actions [] = { diff --git a/applets/wncklet/showdesktop.c b/applets/wncklet/showdesktop.c index d393d6c3..fd66a203 100644 --- a/applets/wncklet/showdesktop.c +++ b/applets/wncklet/showdesktop.c @@ -574,11 +574,7 @@ static void display_about_dialog(GtkAction* action, ShowDesktopData* sdd) NULL }; - GtkWidget* toplevel = gtk_widget_get_toplevel (sdd->applet); - if (!GTK_IS_WINDOW (toplevel)) - toplevel = NULL; - - gtk_show_about_dialog(toplevel ? GTK_WINDOW(toplevel) : NULL, + GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, "program-name", _("Show Desktop Button"), "title", _("About Show Desktop Button"), "authors", authors, @@ -593,6 +589,10 @@ static void display_about_dialog(GtkAction* action, ShowDesktopData* sdd) "version", VERSION, "website", PACKAGE_URL, NULL); + + g_signal_connect_swapped (about, "response", + G_CALLBACK (gtk_widget_destroy), about); + gtk_widget_show (about); } static void button_toggled_callback(GtkWidget* button, ShowDesktopData* sdd) diff --git a/applets/wncklet/window-list.c b/applets/wncklet/window-list.c index cc09c417..79e80ed2 100644 --- a/applets/wncklet/window-list.c +++ b/applets/wncklet/window-list.c @@ -1055,11 +1055,7 @@ static void display_about_dialog(GtkAction* action, TasklistData* tasklist) NULL }; - GtkWidget* toplevel = gtk_widget_get_toplevel (tasklist->applet); - if (!GTK_IS_WINDOW (toplevel)) - toplevel = NULL; - - gtk_show_about_dialog(toplevel ? GTK_WINDOW(toplevel) : NULL, + GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, "program-name", _("Window List"), "title", _("About Window List"), "authors", authors, @@ -1074,6 +1070,10 @@ static void display_about_dialog(GtkAction* action, TasklistData* tasklist) "version", VERSION, "website", PACKAGE_URL, NULL); + + g_signal_connect_swapped (about, "response", + G_CALLBACK (gtk_widget_destroy), about); + gtk_widget_show (about); } static void group_windows_toggled(GtkToggleButton* button, TasklistData* tasklist) diff --git a/applets/wncklet/window-menu.c b/applets/wncklet/window-menu.c index 21d2117f..c75bcc27 100644 --- a/applets/wncklet/window-menu.c +++ b/applets/wncklet/window-menu.c @@ -87,11 +87,7 @@ static void window_menu_about(GtkAction* action, WindowMenu* window_menu) NULL }; - GtkWidget* toplevel = gtk_widget_get_toplevel (window_menu->applet); - if (!GTK_IS_WINDOW (toplevel)) - toplevel = NULL; - - gtk_show_about_dialog(toplevel ? GTK_WINDOW(toplevel) : NULL, + GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, "program-name", _("Window Selector"), "title", _("About Window Selector"), "authors", authors, @@ -108,6 +104,10 @@ static void window_menu_about(GtkAction* action, WindowMenu* window_menu) "version", VERSION, "website", PACKAGE_URL, NULL); + + g_signal_connect_swapped (about, "response", + G_CALLBACK (gtk_widget_destroy), about); + gtk_widget_show (about); } static const GtkActionEntry window_menu_actions[] = { diff --git a/applets/wncklet/workspace-switcher.c b/applets/wncklet/workspace-switcher.c index b4ae493d..caf59bfa 100644 --- a/applets/wncklet/workspace-switcher.c +++ b/applets/wncklet/workspace-switcher.c @@ -990,11 +990,7 @@ static void display_about_dialog(GtkAction* action, PagerData* pager) NULL }; - GtkWidget* toplevel = gtk_widget_get_toplevel (pager->applet); - if (!GTK_IS_WINDOW (toplevel)) - toplevel = NULL; - - gtk_show_about_dialog(toplevel ? GTK_WINDOW(toplevel) : NULL, + GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, "program-name", _("Workspace Switcher"), "title", _("About Workspace Switcher"), "authors", authors, @@ -1009,6 +1005,10 @@ static void display_about_dialog(GtkAction* action, PagerData* pager) "version", VERSION, "website", PACKAGE_URL, NULL); + + g_signal_connect_swapped (about, "response", + G_CALLBACK (gtk_widget_destroy), about); + gtk_widget_show (about); } static void wrap_workspaces_toggled(GtkToggleButton* button, PagerData* pager) |
