[banshee/source-contents: 141/141] Fix the NowPlaying fullscreen handler override



commit 68ad2f0671ddd2b4c6f454a5961cd4c5e2d859cf
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Wed Jun 17 18:53:47 2009 -0500

    Fix the NowPlaying fullscreen handler override

 .../Banshee.Sources.Gui/SourceContentManager.cs    |   18 ++++++++-------
 .../Banshee.NowPlaying/NowPlayingInterface.cs      |   23 ++++++++++++++++++++
 .../Banshee.NowPlaying/NowPlayingSource.cs         |   14 ------------
 3 files changed, 33 insertions(+), 22 deletions(-)
---
diff --git a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceContentManager.cs b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceContentManager.cs
index a032030..0312dfd 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceContentManager.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceContentManager.cs
@@ -78,16 +78,18 @@ namespace Banshee.Sources.Gui
 
         public void Dispose ()
         {
-            foreach (SourceContentProvider provider in providers.Values) {
-                IDisposable disposable = provider as IDisposable;
-                if (disposable != null) {
-                    disposable.Dispose ();
-                }
-            }
+            lock (providers) {
+                AddinManager.RemoveExtensionNodeHandler ("/Banshee/ThickClient/SourceContentProvider", OnExtensionChanged);
 
-            providers.Clear ();
+                foreach (SourceContentProvider provider in providers.Values) {
+                    IDisposable disposable = provider as IDisposable;
+                    if (disposable != null) {
+                        disposable.Dispose ();
+                    }
+                }
 
-            AddinManager.RemoveExtensionNodeHandler ("/Banshee/ThickClient/SourceContentProvider", OnExtensionChanged);
+                providers.Clear ();
+            }
         }
 
         private void OnExtensionChanged (object o, ExtensionNodeEventArgs args) 
diff --git a/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs b/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs
index d581342..4abd3f8 100644
--- a/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs
+++ b/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs
@@ -70,6 +70,7 @@ namespace Banshee.NowPlaying
     public class NowPlayingInterface : VBox, ISourceContents
     {   
         private NowPlayingSource source;
+        private bool source_active = false;
         private Hyena.Widgets.RoundedFrame frame;
         private Gtk.Window video_window;
         private FullscreenAdapter fullscreen_adapter;
@@ -101,14 +102,35 @@ namespace Banshee.NowPlaying
             
             fullscreen_adapter = new FullscreenAdapter ();
             screensaver = new ScreensaverManager ();
+
+            ServiceManager.SourceManager.ActiveSourceChanged += OnActiveSourceChanged;
         }
         
         public override void Dispose ()
         {
             base.Dispose ();
+            ServiceManager.SourceManager.ActiveSourceChanged -= OnActiveSourceChanged;
             screensaver.Dispose ();
         }
 
+        private void OnActiveSourceChanged (SourceEventArgs args)
+        {
+            UpdateFullscreenOverride (args.Source);
+        }
+
+        private void UpdateFullscreenOverride (Source activeSource)
+        {
+            if (activeSource is NowPlayingSource) {
+                if (!source_active) {
+                    source_active = true;
+                    OverrideFullscreen ();
+                }
+            } else if (source_active) {
+                source_active = false;
+                RelinquishFullscreen ();
+            }
+        }
+
         private void MoveVideoExternal (bool hidden)
         {
             if (contents.Parent != video_window) {
@@ -204,6 +226,7 @@ namespace Banshee.NowPlaying
         public bool SetSource (ISource src)
         {
             this.source = source as NowPlayingSource;
+            UpdateFullscreenOverride (ServiceManager.SourceManager.ActiveSource);
             return this.source != null;
         }
 
diff --git a/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs b/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs
index ceeb4fd..ea538bc 100644
--- a/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs
+++ b/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs
@@ -98,19 +98,5 @@ namespace Banshee.NowPlaying
                 OnUserNotifyUpdated ();
             }
         }
-        
-        public override void Activate ()
-        {
-            /*if (now_playing_interface != null) {
-                now_playing_interface.OverrideFullscreen ();
-            }*/
-        }
-
-        public override void Deactivate ()
-        {
-            /*if (now_playing_interface != null) {
-                now_playing_interface.RelinquishFullscreen ();
-            }*/
-        }
     }
 }



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