Blob Blame Raw
From b1911301e6c8cbe0ae4ea90d4e0cbb08e575e743 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 18 Jul 2014 08:28:04 +0200
Subject: [PATCH 2/8] gui: make preferences dialogue modal for parents

Resolves rhbz#1120879

Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
 src/gtk-helpers/config_dialog.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/gtk-helpers/config_dialog.c b/src/gtk-helpers/config_dialog.c
index 6de08e3..2397df7 100644
--- a/src/gtk-helpers/config_dialog.c
+++ b/src/gtk-helpers/config_dialog.c
@@ -282,7 +282,17 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
     INITIALIZE_LIBREPORT();
 
     // config window
-    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+    GtkWidget *window = NULL;
+    if (parent != NULL)
+    {
+        window = gtk_dialog_new();
+        gtk_window_set_icon_name(GTK_WINDOW(window), gtk_window_get_icon_name(parent));
+        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
+        gtk_window_set_transient_for(GTK_WINDOW(window), parent);
+    }
+    else
+        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
     gtk_container_set_border_width(GTK_CONTAINER(window), 5);
     gtk_window_set_title(GTK_WINDOW(window), _("Configuration"));
     gtk_window_set_default_size(GTK_WINDOW(window), 450, 400);
@@ -290,11 +300,6 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
                             ? GTK_WIN_POS_CENTER_ON_PARENT
                             : GTK_WIN_POS_CENTER);
 
-    if (parent != NULL)
-    {
-        gtk_window_set_modal(GTK_WINDOW(window), true);
-        gtk_window_set_transient_for(GTK_WINDOW(window), parent);
-    }
 
     //g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
 
@@ -334,7 +339,14 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
 
 
     gtk_box_pack_start(GTK_BOX(main_vbox), btn_box, 0, 0, 0);
-    gtk_container_add(GTK_CONTAINER(window), main_vbox);
+    if (parent != NULL)
+    {
+        GtkWidget *content = gtk_dialog_get_content_area(GTK_DIALOG(window));
+        gtk_box_pack_start(GTK_BOX(content), main_vbox, /*expand*/TRUE, /*fill*/TRUE, /*padding*/0);
+        gtk_widget_show_all(content);
+    }
+    else
+        gtk_container_add(GTK_CONTAINER(window), main_vbox);
 
     //gtk_widget_show_all(window);
     return GTK_WINDOW(window);
-- 
1.9.3