[gnome-photos/wip/halfline/album-refresh] item-manager: Refresh album view when photos are removed from album




commit 3b8b8e0ba9f07a28df920510dce66a7269007427
Author: Ray Strode <rstrode redhat com>
Date:   Wed May 4 13:33:50 2022 -0400

    item-manager: Refresh album view when photos are removed from album
    
    At the moment removing a photo from a collection gets deferred if the
    collection is currently getting viewed; the collection view fails to
    update.
    
    This commit forces a refresh of the view to make it react more
    dynamically to the user.

 src/photos-item-manager.c                       | 14 ++++++++++++++
 src/photos-tracker-collection-view-controller.c |  5 +++++
 2 files changed, 19 insertions(+)
---
diff --git a/src/photos-item-manager.c b/src/photos-item-manager.c
index 73ccaaa6..9da3920a 100644
--- a/src/photos-item-manager.c
+++ b/src/photos-item-manager.c
@@ -76,6 +76,7 @@ enum
   LOAD_FINISHED,
   LOAD_STARTED,
   WINDOW_MODE_CHANGED,
+  ACTIVE_COLLECTION_UPDATED,
   LAST_SIGNAL
 };
 
@@ -289,6 +290,8 @@ photos_item_manager_info_updated (PhotosBaseItem *item, gpointer user_data)
         photos_base_manager_remove_object (self->item_mngr_chldrn[PHOTOS_WINDOW_MODE_FAVORITES], G_OBJECT 
(item));
     }
 
+    if (self->active_collection == item)
+      g_signal_emit (self, signals[ACTIVE_COLLECTION_UPDATED], 0, self->active_collection);
  out:
   return;
 }
@@ -1222,6 +1225,17 @@ photos_item_manager_class_init (PhotosItemManagerClass *class)
                                                2,
                                                PHOTOS_TYPE_WINDOW_MODE,
                                                PHOTOS_TYPE_WINDOW_MODE);
+
+  signals[ACTIVE_COLLECTION_UPDATED] = g_signal_new ("active-collection-updated",
+                                                     G_TYPE_FROM_CLASS (class),
+                                                     G_SIGNAL_RUN_LAST,
+                                                     0,
+                                                     NULL, /*accumulator */
+                                                     NULL, /*accu_data */
+                                                     g_cclosure_marshal_VOID__OBJECT,
+                                                     G_TYPE_NONE,
+                                                     1,
+                                                     PHOTOS_TYPE_BASE_ITEM);
 }
 
 
diff --git a/src/photos-tracker-collection-view-controller.c b/src/photos-tracker-collection-view-controller.c
index ad33f9ed..f6dc31b7 100644
--- a/src/photos-tracker-collection-view-controller.c
+++ b/src/photos-tracker-collection-view-controller.c
@@ -165,6 +165,11 @@ photos_tracker_collection_view_controller_init (PhotosTrackerCollectionViewContr
                             G_CALLBACK (photos_tracker_collection_view_controller_active_collection_changed),
                             self);
 
+  g_signal_connect_swapped (self->item_mngr,
+                            "active-collection-updated",
+                            G_CALLBACK (photos_tracker_controller_refresh_for_object),
+                            self);
+
   self->offset_cntrlr = photos_offset_collection_view_controller_dup_singleton ();
 
   photos_tracker_controller_set_frozen (PHOTOS_TRACKER_CONTROLLER (self), TRUE);


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