From 615399002f6581870cbe811fcc43e31346fb7643 Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Tue, 7 Feb 2017 23:29:08 -0300 Subject: [PATCH] Make mininal dialog single instance --- dialogs/display-settings/main.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c index bf93a42..36066c7 100644 --- a/dialogs/display-settings/main.c +++ b/dialogs/display-settings/main.c @@ -2882,6 +2882,7 @@ display_settings_show_minimal_dialog (GdkDisplay *display) GError *error = NULL; gboolean found = FALSE; RRMode mode; + GtkApplication *app; builder = gtk_builder_new (); @@ -2968,6 +2969,24 @@ display_settings_show_minimal_dialog (GdkDisplay *display) gtk_widget_set_sensitive (GTK_WIDGET (only_display2), FALSE); } + /* Initialize application to ensure single instance */ + app = gtk_application_new ("org.xfce.display.settings", 0); + + g_application_register (G_APPLICATION (app), NULL, &error); + if (error != NULL) + { + g_warning ("Unable to register GApplication: %s", error->message); + g_error_free (error); + error = NULL; + } + + if (g_application_get_is_remote (G_APPLICATION (app))) + { + g_application_activate (G_APPLICATION (app)); + g_object_unref (app); + return 0; + } + g_signal_connect (only_display1, "toggled", G_CALLBACK (display_settings_minimal_only_display1_toggled), builder); g_signal_connect (mirror_displays, "toggled", G_CALLBACK (display_settings_minimal_mirror_displays_toggled), @@ -2979,6 +2998,8 @@ display_settings_show_minimal_dialog (GdkDisplay *display) g_signal_connect (advanced, "clicked", G_CALLBACK (display_settings_minimal_advanced_clicked), builder); + g_signal_connect_swapped (app, "activate", G_CALLBACK (gtk_window_present), dialog); + /* Show the minimal dialog and start the main loop */ gtk_window_present (GTK_WINDOW (dialog)); gtk_main (); -- 2.11.0