summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2011-12-13 18:10:02 -0600
committerFederico Mena Quintero <federico@gnome.org>2011-12-13 18:13:46 -0600
commit625dac4492e7daf7fef46c8dc4990da5d786efad (patch)
tree6ffa60620a2dce432e448d806e7c169564f6590b
parent9868b796ec9d4761512d0a948bf0d6438be6702c (diff)
downloadnautilus-625dac4492e7daf7fef46c8dc4990da5d786efad.tar.gz
Add nautilus_properties_window_present_with_startup_id()
This lets us pass a startup_id string instead of a parent_widget; this will be used from the Freedesktop DBus interface. Signed-off-by: Federico Mena Quintero <federico@gnome.org>
-rw-r--r--src/nautilus-properties-window.c36
-rw-r--r--src/nautilus-properties-window.h3
2 files changed, 34 insertions, 5 deletions
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index 5d952fbd4..5267f3e79 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -158,6 +158,7 @@ typedef struct {
GList *original_files;
GList *target_files;
GtkWidget *parent_widget;
+ char *startup_id;
char *pending_key;
GHashTable *pending_files;
} StartupData;
@@ -4634,7 +4635,8 @@ static StartupData *
startup_data_new (GList *original_files,
GList *target_files,
const char *pending_key,
- GtkWidget *parent_widget)
+ GtkWidget *parent_widget,
+ const char *startup_id)
{
StartupData *data;
GList *l;
@@ -4643,6 +4645,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->startup_id = g_strdup (startup_id);
data->pending_key = g_strdup (pending_key);
data->pending_files = g_hash_table_new (g_direct_hash,
g_direct_equal);
@@ -4661,6 +4664,7 @@ startup_data_free (StartupData *data)
nautilus_file_list_free (data->target_files);
g_hash_table_destroy (data->pending_files);
g_free (data->pending_key);
+ g_free (data->startup_id);
g_free (data);
}
@@ -4778,6 +4782,8 @@ create_properties_window (StartupData *startup_data)
if (startup_data->parent_widget)
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (startup_data->parent_widget));
+ else if (startup_data->startup_id)
+ gtk_window_set_startup_id (GTK_WINDOW (window), startup_data->startup_id);
gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG);
@@ -5004,9 +5010,10 @@ is_directory_ready_callback (NautilusFile *file,
}
-void
-nautilus_properties_window_present (GList *original_files,
- GtkWidget *parent_widget)
+static void
+prepare_properties_window (GList *original_files,
+ GtkWidget *parent_widget,
+ const char *startup_id)
{
GList *l, *next;
GtkWidget *parent_window;
@@ -5035,6 +5042,9 @@ nautilus_properties_window_present (GList *original_files,
if (parent_widget)
gtk_window_set_screen (existing_window,
gtk_widget_get_screen (parent_widget));
+ else if (startup_id)
+ gtk_window_set_startup_id (existing_window, startup_id);
+
gtk_window_present (existing_window);
return;
}
@@ -5052,7 +5062,8 @@ nautilus_properties_window_present (GList *original_files,
startup_data = startup_data_new (original_files,
target_files,
pending_key,
- parent_widget);
+ parent_widget,
+ startup_id);
nautilus_file_list_free (target_files);
g_free(pending_key);
@@ -5086,6 +5097,21 @@ nautilus_properties_window_present (GList *original_files,
}
}
+void
+nautilus_properties_window_present (GList *original_files,
+ GtkWidget *parent_widget)
+{
+ prepare_properties_window (original_files, parent_widget, NULL);
+}
+
+void
+nautilus_properties_window_present_with_startup_id (GList *original_files,
+ const char *startup_id)
+{
+ prepare_properties_window (original_files, NULL, startup_id);
+}
+
+
static void
real_response (GtkDialog *dialog,
int response)
diff --git a/src/nautilus-properties-window.h b/src/nautilus-properties-window.h
index 9d5a8a6f9..727573755 100644
--- a/src/nautilus-properties-window.h
+++ b/src/nautilus-properties-window.h
@@ -64,4 +64,7 @@ GType nautilus_properties_window_get_type (void);
void nautilus_properties_window_present (GList *files,
GtkWidget *parent_widget);
+void nautilus_properties_window_present_with_startup_id (GList *files,
+ const char *startup_id);
+
#endif /* NAUTILUS_PROPERTIES_WINDOW_H */