summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2011-01-14 18:53:16 +0100
committerCosimo Cecchi <cosimoc@gnome.org>2011-01-14 18:53:16 +0100
commitbf5d259288868a70258e63960ddc0eabe96bf9c8 (patch)
treebff1a6c2b02e4951ef4b6b5c2a5ee50909bde9ff
parentf4637ff4481ee6d7d1e0453a5bd3ec4ac9dca17d (diff)
downloadnautilus-bf5d259288868a70258e63960ddc0eabe96bf9c8.tar.gz
application: don't quit if there are pending file operations
Now that we're a single-window application, this has become much more relevant.
-rw-r--r--libnautilus-private/nautilus-progress-info.c4
-rw-r--r--libnautilus-private/nautilus-ui-utilities.c23
-rw-r--r--libnautilus-private/nautilus-ui-utilities.h3
-rw-r--r--src/nautilus-application.c4
4 files changed, 33 insertions, 1 deletions
diff --git a/libnautilus-private/nautilus-progress-info.c b/libnautilus-private/nautilus-progress-info.c
index 3b8d54cae..66725a51b 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 e60f1e3c5..247bceea7 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 5c34eed3c..71b71b32b 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 b7e526ded..78ca48d2e 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