Jakub Filak b69ae49
From b1911301e6c8cbe0ae4ea90d4e0cbb08e575e743 Mon Sep 17 00:00:00 2001
Jakub Filak b69ae49
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak b69ae49
Date: Fri, 18 Jul 2014 08:28:04 +0200
Jakub Filak b69ae49
Subject: [PATCH 2/8] gui: make preferences dialogue modal for parents
Jakub Filak b69ae49
Jakub Filak b69ae49
Resolves rhbz#1120879
Jakub Filak b69ae49
Jakub Filak b69ae49
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak b69ae49
---
Jakub Filak b69ae49
 src/gtk-helpers/config_dialog.c | 26 +++++++++++++++++++-------
Jakub Filak b69ae49
 1 file changed, 19 insertions(+), 7 deletions(-)
Jakub Filak b69ae49
Jakub Filak b69ae49
diff --git a/src/gtk-helpers/config_dialog.c b/src/gtk-helpers/config_dialog.c
Jakub Filak b69ae49
index 6de08e3..2397df7 100644
Jakub Filak b69ae49
--- a/src/gtk-helpers/config_dialog.c
Jakub Filak b69ae49
+++ b/src/gtk-helpers/config_dialog.c
Jakub Filak b69ae49
@@ -282,7 +282,17 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
Jakub Filak b69ae49
     INITIALIZE_LIBREPORT();
Jakub Filak b69ae49
 
Jakub Filak b69ae49
     // config window
Jakub Filak b69ae49
-    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Jakub Filak b69ae49
+    GtkWidget *window = NULL;
Jakub Filak b69ae49
+    if (parent != NULL)
Jakub Filak b69ae49
+    {
Jakub Filak b69ae49
+        window = gtk_dialog_new();
Jakub Filak b69ae49
+        gtk_window_set_icon_name(GTK_WINDOW(window), gtk_window_get_icon_name(parent));
Jakub Filak b69ae49
+        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
Jakub Filak b69ae49
+        gtk_window_set_transient_for(GTK_WINDOW(window), parent);
Jakub Filak b69ae49
+    }
Jakub Filak b69ae49
+    else
Jakub Filak b69ae49
+        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Jakub Filak b69ae49
+
Jakub Filak b69ae49
     gtk_container_set_border_width(GTK_CONTAINER(window), 5);
Jakub Filak b69ae49
     gtk_window_set_title(GTK_WINDOW(window), _("Configuration"));
Jakub Filak b69ae49
     gtk_window_set_default_size(GTK_WINDOW(window), 450, 400);
Jakub Filak b69ae49
@@ -290,11 +300,6 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
Jakub Filak b69ae49
                             ? GTK_WIN_POS_CENTER_ON_PARENT
Jakub Filak b69ae49
                             : GTK_WIN_POS_CENTER);
Jakub Filak b69ae49
 
Jakub Filak b69ae49
-    if (parent != NULL)
Jakub Filak b69ae49
-    {
Jakub Filak b69ae49
-        gtk_window_set_modal(GTK_WINDOW(window), true);
Jakub Filak b69ae49
-        gtk_window_set_transient_for(GTK_WINDOW(window), parent);
Jakub Filak b69ae49
-    }
Jakub Filak b69ae49
 
Jakub Filak b69ae49
     //g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
Jakub Filak b69ae49
 
Jakub Filak b69ae49
@@ -334,7 +339,14 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
Jakub Filak b69ae49
 
Jakub Filak b69ae49
 
Jakub Filak b69ae49
     gtk_box_pack_start(GTK_BOX(main_vbox), btn_box, 0, 0, 0);
Jakub Filak b69ae49
-    gtk_container_add(GTK_CONTAINER(window), main_vbox);
Jakub Filak b69ae49
+    if (parent != NULL)
Jakub Filak b69ae49
+    {
Jakub Filak b69ae49
+        GtkWidget *content = gtk_dialog_get_content_area(GTK_DIALOG(window));
Jakub Filak b69ae49
+        gtk_box_pack_start(GTK_BOX(content), main_vbox, /*expand*/TRUE, /*fill*/TRUE, /*padding*/0);
Jakub Filak b69ae49
+        gtk_widget_show_all(content);
Jakub Filak b69ae49
+    }
Jakub Filak b69ae49
+    else
Jakub Filak b69ae49
+        gtk_container_add(GTK_CONTAINER(window), main_vbox);
Jakub Filak b69ae49
 
Jakub Filak b69ae49
     //gtk_widget_show_all(window);
Jakub Filak b69ae49
     return GTK_WINDOW(window);
Jakub Filak b69ae49
-- 
Jakub Filak b69ae49
1.9.3
Jakub Filak b69ae49