summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2011-12-06 15:51:12 -0600
committerFederico Mena Quintero <federico@gnome.org>2011-12-06 17:48:08 -0600
commitf65bd26d6f3691006c291f88e6c3b1add349d985 (patch)
tree2ee19bfa8693eff548a96b7292601033bd49156c
parent5f3b0071d11cc864d135f35b7b85b07a5395f97a (diff)
downloadnautilus-f65bd26d6f3691006c291f88e6c3b1add349d985.tar.gz
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>
-rw-r--r--src/nautilus-properties-window.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index 69352fe58..b715567d7 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