]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Use always a different process for every document
[evince.git] / shell / ev-window.c
index b4133ad0f72f504eed3cf9eb802a19bdc4784baa..f4974e373a1afcb449bb44c49660213fa9e6f525 100644 (file)
@@ -310,6 +310,8 @@ static void     ev_window_media_player_key_pressed      (EvWindow         *windo
                                                         gpointer          user_data);
 static void     ev_window_save_print_page_setup         (EvWindow         *window);
 
+static guint ev_window_n_copies = 0;
+
 G_DEFINE_TYPE (EvWindow, ev_window, GTK_TYPE_WINDOW)
 
 static void
@@ -2129,6 +2131,8 @@ ev_window_open_copy_at_dest (EvWindow   *window,
 {
        EvWindow *new_window = EV_WINDOW (ev_window_new ());
 
+       ev_window_n_copies++;
+
        if (window->priv->metadata)
                new_window->priv->metadata = g_object_ref (window->priv->metadata);
        ev_window_open_document (new_window,
@@ -4549,14 +4553,12 @@ ev_window_drag_data_received (GtkWidget        *widget,
 static void
 ev_window_finalize (GObject *object)
 {
-       GList *windows = ev_application_get_windows (EV_APP);
-
-       if (windows == NULL) {
+       if (ev_window_n_copies == 0) {
                ev_application_shutdown (EV_APP);
        } else {
-               g_list_free (windows);
+               ev_window_n_copies--;
        }
-       
+
        G_OBJECT_CLASS (ev_window_parent_class)->finalize (object);
 }