[gnome-photos] item-manager: Handle failures better



commit bbbd84950f6202ff1668698e221deb40175a9a43
Author: Debarshi Ray <debarshir gnome org>
Date:   Fri Sep 26 09:22:40 2014 +0200

    item-manager: Handle failures better
    
    Emit "active-collection-changed" and update GtkRecentManager only when
    the parent's invocation of set_active_item has succeeded.
    
    Fixes: https://bugzilla.gnome.org/737071

 src/photos-item-manager.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)
---
diff --git a/src/photos-item-manager.c b/src/photos-item-manager.c
index 3e062a4..967c174 100644
--- a/src/photos-item-manager.c
+++ b/src/photos-item-manager.c
@@ -217,10 +217,9 @@ photos_item_manager_set_active_object (PhotosBaseManager *manager, GObject *obje
   PhotosItemManager *self = PHOTOS_ITEM_MANAGER (manager);
   PhotosItemManagerPrivate *priv = self->priv;
   GObject *active_item;
-  GtkRecentManager *recent;
   gboolean active_collection_changed = FALSE;
   gboolean ret_val = FALSE;
-  const gchar *uri;
+  gboolean start_loading = FALSE;
 
   g_return_val_if_fail (PHOTOS_IS_BASE_ITEM (object) || object == NULL, FALSE);
 
@@ -256,18 +255,26 @@ photos_item_manager_set_active_object (PhotosBaseManager *manager, GObject *obje
       g_clear_object (&priv->active_collection);
       priv->active_collection = g_object_ref (object);
       active_collection_changed = TRUE;
-      goto end;
     }
-
-  recent = gtk_recent_manager_get_default ();
-  uri = photos_base_item_get_uri (PHOTOS_BASE_ITEM (object));
-  gtk_recent_manager_add_item (recent, uri);
+  else
+    start_loading = TRUE;
 
  end:
   ret_val = PHOTOS_BASE_MANAGER_CLASS (photos_item_manager_parent_class)->set_active_object (manager, 
object);
-  if (active_collection_changed)
+
+  if (ret_val && active_collection_changed)
     g_signal_emit (self, signals[ACTIVE_COLLECTION_CHANGED], 0, priv->active_collection);
 
+  if (ret_val && start_loading)
+    {
+      GtkRecentManager *recent;
+      const gchar *uri;
+
+      recent = gtk_recent_manager_get_default ();
+      uri = photos_base_item_get_uri (PHOTOS_BASE_ITEM (object));
+      gtk_recent_manager_add_item (recent, uri);
+    }
+
  out:
   return ret_val;
 }


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