[nautilus] application: don't quit if there are pending file operations



commit bf5d259288868a70258e63960ddc0eabe96bf9c8
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Fri Jan 14 18:53:16 2011 +0100

    application: don't quit if there are pending file operations
    
    Now that we're a single-window application, this has become much more
    relevant.

 libnautilus-private/nautilus-progress-info.c |    4 ++++
 libnautilus-private/nautilus-ui-utilities.c  |   23 +++++++++++++++++++++++
 libnautilus-private/nautilus-ui-utilities.h  |    3 +++
 src/nautilus-application.c                   |    4 +++-
 4 files changed, 33 insertions(+), 1 deletions(-)
---
diff --git a/libnautilus-private/nautilus-progress-info.c b/libnautilus-private/nautilus-progress-info.c
index 3b8d54c..66725a5 100644
--- a/libnautilus-private/nautilus-progress-info.c
+++ b/libnautilus-private/nautilus-progress-info.c
@@ -29,6 +29,7 @@
 #include <eel/eel-string.h>
 #include <eel/eel-glib-extensions.h>
 #include "nautilus-progress-info.h"
+#include "nautilus-ui-utilities.h"
 
 enum {
   CHANGED,
@@ -227,6 +228,9 @@ get_progress_window (void)
 				 GTK_WIN_POS_CENTER);
 	gtk_window_set_icon_name (GTK_WINDOW (progress_window),
 				"system-file-manager");
+
+	gtk_application_add_window (nautilus_get_application (),
+				    GTK_WINDOW (progress_window));
 	
 	vbox = gtk_vbox_new (FALSE, 0);
 	gtk_box_set_spacing (GTK_BOX (vbox), 5);
diff --git a/libnautilus-private/nautilus-ui-utilities.c b/libnautilus-private/nautilus-ui-utilities.c
index e60f1e3..247bcee 100644
--- a/libnautilus-private/nautilus-ui-utilities.c
+++ b/libnautilus-private/nautilus-ui-utilities.c
@@ -30,6 +30,29 @@
 #include <gtk/gtk.h>
 #include <eel/eel-debug.h>
 
+/* FIXME: this is needed only because we need to access the application
+ * object from inside libnautilus-private and that's in src instead.
+ */
+static GtkApplication *app = NULL;
+
+GtkApplication *
+nautilus_get_application (void)
+{
+	g_assert (app != NULL);
+
+	return app;
+}
+
+void
+nautilus_store_application (GtkApplication *application)
+{
+	if (app != NULL) {
+		return;
+	}
+
+	app = application; 
+}
+
 void
 nautilus_ui_unmerge_ui (GtkUIManager *ui_manager,
 			guint *merge_id,
diff --git a/libnautilus-private/nautilus-ui-utilities.h b/libnautilus-private/nautilus-ui-utilities.h
index 5c34eed..71b71b3 100644
--- a/libnautilus-private/nautilus-ui-utilities.h
+++ b/libnautilus-private/nautilus-ui-utilities.h
@@ -40,4 +40,7 @@ GtkAction * nautilus_action_from_menu_item         (NautilusMenuItem  *item);
 GtkAction * nautilus_toolbar_action_from_menu_item (NautilusMenuItem  *item);
 const char *nautilus_ui_string_get                 (const char        *filename);
 
+GtkApplication *nautilus_get_application (void);
+void nautilus_store_application (GtkApplication *application);
+
 #endif /* NAUTILUS_UI_UTILITIES_H */
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index b7e526d..78ca48d 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -57,6 +57,7 @@
 #include <libnautilus-private/nautilus-lib-self-check-functions.h>
 #include <libnautilus-private/nautilus-module.h>
 #include <libnautilus-private/nautilus-signaller.h>
+#include <libnautilus-private/nautilus-ui-utilities.h>
 #include <libnautilus-private/nautilus-undo-manager.h>
 #include <libnautilus-extension/nautilus-menu-provider.h>
 
@@ -1245,7 +1246,8 @@ nautilus_application_constructor (GType type,
 static void
 nautilus_application_init (NautilusApplication *application)
 {
-	/* do nothing */
+	/* FIXME: make this available to libnautilus-private in another way */
+	nautilus_store_application (GTK_APPLICATION (application));
 }
 
 static void



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