[banshee] [ThickClient] Ensure track filter actions updated (bgo#635426)



commit 7c0acbfaa61d15dc483b792a0d2c93e12b8250a5
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Tue Nov 23 15:31:15 2010 -0600

    [ThickClient] Ensure track filter actions updated (bgo#635426)
    
    We weren't updating the track actions when the track model changed
    (which it does when you right click an album, say).  The effect of this
    was the remove/delete confirmation dialog's track count wouldn't get
    updated.

 .../Banshee.Gui/TrackActions.cs                    |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
---
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs b/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
index 0f87b90..2eafd49 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
@@ -185,6 +185,7 @@ namespace Banshee.Gui
             FilterFocused = false;
 
             if (current_source != null && current_source.TrackModel != null) {
+                current_source.TrackModel.Reloaded -= OnReloaded;
                 current_source.TrackModel.Selection.Changed -= HandleSelectionChanged;
                 current_source = null;
             }
@@ -192,6 +193,7 @@ namespace Banshee.Gui
             ITrackModelSource new_source = ActiveSource as ITrackModelSource;
             if (new_source != null) {
                 new_source.TrackModel.Selection.Changed += HandleSelectionChanged;
+                new_source.TrackModel.Reloaded += OnReloaded;
                 current_source = new_source;
                 Selection = new_source.TrackModel.Selection;
             }
@@ -199,6 +201,13 @@ namespace Banshee.Gui
             ThreadAssist.ProxyToMain (UpdateActions);
         }
 
+        private void OnReloaded (object sender, EventArgs args)
+        {
+            ThreadAssist.ProxyToMain (delegate {
+                UpdateActions ();
+            });
+        }
+
         private void HandleActionsChanged (object sender, EventArgs args)
         {
             if (Actions.UIManager.GetAction ("/MainMenu/EditMenu") != null) {
@@ -269,6 +278,7 @@ namespace Banshee.Gui
                 if (FilterFocused) {
                     if (Selection == filter_selection) {
                         filter_selection.MaxIndex = track_source.TrackModel.Selection.MaxIndex;
+                        filter_selection.Clear (false);
                         filter_selection.SelectAll ();
                     } else {
                         Log.Error ("Filter focused, but selection is not filter selection!");



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