[nautilus/freedesktop-dbus: 8/9] Allow creating a properties window with a NULL parent widget



commit f65bd26d6f3691006c291f88e6c3b1add349d985
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue Dec 6 15:51:12 2011 -0600

    Allow creating a properties window with a NULL parent widget
    
    When the ShowItemProperties() DBus call comes in, it doesn't come from
    a parent widget.  Instead, it has a startup ID.  So, we need
    to be able to pass a NULL parent_widget to the properties window.
    
    Signed-off-by: Federico Mena Quintero <federico gnome org>

 src/nautilus-properties-window.c |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)
---
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index 69352fe..b715567 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -4774,8 +4774,10 @@ create_properties_window (StartupData *startup_data)
 	window->details->target_files = nautilus_file_list_copy (startup_data->target_files);
 
 	gtk_window_set_wmclass (GTK_WINDOW (window), "file_properties", "Nautilus");
-	gtk_window_set_screen (GTK_WINDOW (window),
-			       gtk_widget_get_screen (startup_data->parent_widget));
+
+	if (startup_data->parent_widget)
+		gtk_window_set_screen (GTK_WINDOW (window),
+				       gtk_widget_get_screen (startup_data->parent_widget));
 
 	gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG);
 
@@ -4968,9 +4970,10 @@ remove_pending (StartupData *startup_data,
 			(cancel_create_properties_window_callback, startup_data);
 	}
 	if (cancel_destroy_handler) {
-		g_signal_handlers_disconnect_by_func (startup_data->parent_widget,
-						      G_CALLBACK (parent_widget_destroyed_callback),
-						      startup_data);
+		if (startup_data->parent_widget)
+			g_signal_handlers_disconnect_by_func (startup_data->parent_widget,
+							      G_CALLBACK (parent_widget_destroyed_callback),
+							      startup_data);
 	}
 
 	g_hash_table_remove (pending_lists, startup_data->pending_key);
@@ -5014,7 +5017,7 @@ nautilus_properties_window_present (GList *original_files,
 	char *pending_key;
 
 	g_return_if_fail (original_files != NULL);
-	g_return_if_fail (GTK_IS_WIDGET (parent_widget));
+	g_return_if_fail (parent_widget == NULL || GTK_IS_WIDGET (parent_widget));
 
 	/* Create the hash tables first time through. */
 	if (windows == NULL) {
@@ -5030,8 +5033,9 @@ nautilus_properties_window_present (GList *original_files,
 	/* Look to see if there's already a window for this file. */
 	existing_window = get_existing_window (original_files);
 	if (existing_window != NULL) {
-		gtk_window_set_screen (existing_window,
-				       gtk_widget_get_screen (parent_widget));
+		if (parent_widget)
+			gtk_window_set_screen (existing_window,
+					       gtk_widget_get_screen (parent_widget));
 		gtk_window_present (existing_window);
 		return;
 	}
@@ -5059,10 +5063,13 @@ nautilus_properties_window_present (GList *original_files,
 	 */
 	
 	g_hash_table_insert (pending_lists, startup_data->pending_key, startup_data->pending_key);
-	g_signal_connect (parent_widget, "destroy",
-			  G_CALLBACK (parent_widget_destroyed_callback), startup_data);
+	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);
+		parent_window = gtk_widget_get_ancestor (parent_widget, GTK_TYPE_WINDOW);
+	} else
+		parent_window = NULL;
 
 	eel_timed_wait_start
 		(cancel_create_properties_window_callback,
@@ -5070,7 +5077,6 @@ nautilus_properties_window_present (GList *original_files,
 		 _("Creating Properties window."),
 		 parent_window == NULL ? NULL : GTK_WINDOW (parent_window));
 
-
 	for (l = startup_data->target_files; l != NULL; l = next) {
 		next = l->next;
 		nautilus_file_call_when_ready



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]