summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Catanzaro <mcatanzaro@gnome.org>2015-08-23 12:42:19 -0500
committerCarlos Soriano <csoriano@gnome.org>2016-03-02 19:48:49 +0100
commit9592caf620dee99c6c00d322cd4870b908ddf360 (patch)
tree00056868777acdf9312bb4302cb10c9c2019bdf1
parentf3919f4cb6a846e911f7c46a94e74a73ed3c112a (diff)
downloadnautilus-9592caf620dee99c6c00d322cd4870b908ddf360.tar.gz
Make file properties dialog transient for its parent window
So they don't appear as separate application windows in the GNOME Shell overview, and to avoid warnings from GTK+. https://bugzilla.gnome.org/show_bug.cgi?id=753996
-rw-r--r--src/nautilus-properties-window.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index dea8b0f58..5ebf43d6d 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -155,6 +155,7 @@ typedef struct {
GList *original_files;
GList *target_files;
GtkWidget *parent_widget;
+ GtkWindow *parent_window;
char *startup_id;
char *pending_key;
GHashTable *pending_files;
@@ -4424,6 +4425,7 @@ startup_data_new (GList *original_files,
GList *target_files,
const char *pending_key,
GtkWidget *parent_widget,
+ GtkWindow *parent_window,
const char *startup_id)
{
StartupData *data;
@@ -4433,6 +4435,7 @@ startup_data_new (GList *original_files,
data->original_files = nautilus_file_list_copy (original_files);
data->target_files = nautilus_file_list_copy (target_files);
data->parent_widget = parent_widget;
+ data->parent_window = parent_window;
data->startup_id = g_strdup (startup_id);
data->pending_key = g_strdup (pending_key);
data->pending_files = g_hash_table_new (g_direct_hash,
@@ -4588,6 +4591,10 @@ create_properties_window (StartupData *startup_data)
gtk_widget_get_screen (startup_data->parent_widget));
}
+ if (startup_data->parent_window) {
+ gtk_window_set_transient_for (GTK_WINDOW (window), startup_data->parent_window);
+ }
+
if (startup_data->startup_id) {
gtk_window_set_startup_id (GTK_WINDOW (window), startup_data->startup_id);
}
@@ -4855,10 +4862,17 @@ nautilus_properties_window_present (GList *original_files,
target_files = get_target_file_list (original_files);
+ if (parent_widget) {
+ parent_window = gtk_widget_get_ancestor (parent_widget, GTK_TYPE_WINDOW);
+ } else {
+ parent_window = NULL;
+ }
+
startup_data = startup_data_new (original_files,
target_files,
pending_key,
parent_widget,
+ GTK_WINDOW (parent_window),
startup_id);
nautilus_file_list_free (target_files);
@@ -4872,10 +4886,7 @@ nautilus_properties_window_present (GList *original_files,
if (parent_widget) {
g_signal_connect (parent_widget, "destroy",
G_CALLBACK (parent_widget_destroyed_callback), startup_data);
-
- parent_window = gtk_widget_get_ancestor (parent_widget, GTK_TYPE_WINDOW);
- } else
- parent_window = NULL;
+ }
eel_timed_wait_start
(cancel_create_properties_window_callback,