[gnome-music/wip/jfelder/ctrl-space-selection-fix: 11/11] playertoolbar: Always hide the bar in selection-mode



commit ad6cc8f248d02b89e9dbcb1ff5ed512bb48ada16
Author: rajalakshmi-v15 <raji11997 gmail com>
Date:   Mon Jul 30 14:37:46 2018 +0200

    playertoolbar: Always hide the bar in selection-mode
    
    PlayerToolbar listens to selection-mode changes. Only display the
    player toolbar if not in selection-mode and a song is being
    played.
    Remove BaseView specific code as it is now handled by PlayerToolbar.
    
    Closes: #197

 gnomemusic/views/baseview.py        |  5 +----
 gnomemusic/widgets/playertoolbar.py | 15 +++++++++++++--
 gnomemusic/window.py                |  4 ++--
 3 files changed, 16 insertions(+), 8 deletions(-)
---
diff --git a/gnomemusic/views/baseview.py b/gnomemusic/views/baseview.py
index 450df951..1625609b 100644
--- a/gnomemusic/views/baseview.py
+++ b/gnomemusic/views/baseview.py
@@ -146,10 +146,7 @@ class BaseView(Gtk.Stack):
 
     @log
     def _on_selection_mode_changed(self, widget, data=None):
-        if self.props.selection_mode:
-            self.set_player_visible(False)
-        else:
-            self.set_player_visible(self.player.current_song is not None)
+        if not self.props.selection_mode:
             self.unselect_all()
 
     @log
diff --git a/gnomemusic/widgets/playertoolbar.py b/gnomemusic/widgets/playertoolbar.py
index e5de8064..9bfa954d 100644
--- a/gnomemusic/widgets/playertoolbar.py
+++ b/gnomemusic/widgets/playertoolbar.py
@@ -64,9 +64,10 @@ class PlayerToolbar(Gtk.ActionBar):
         return '<PlayerToolbar>'
 
     @log
-    def __init__(self, player):
+    def __init__(self, player, headerbar):
         super().__init__()
 
+        self._headerbar = headerbar
         self._player = player
         self._progress_scale.player = self._player.get_gst_player()
 
@@ -75,6 +76,8 @@ class PlayerToolbar(Gtk.ActionBar):
 
         self._sync_repeat_image()
 
+        self._headerbar.connect(
+            'notify::selection-mode', self._on_selection_mode_changed)
         self._player.connect('clock-tick', self._on_clock_tick)
         self._player.connect('song-changed', self._update_view)
         self._player.connect('prev-next-invalidated', self._sync_prev_next)
@@ -114,6 +117,13 @@ class PlayerToolbar(Gtk.ActionBar):
     def _on_next_button_clicked(self, button):
         self._player.next()
 
+    @log
+    def _on_selection_mode_changed(self, headerbar, selection_mode):
+        if self._headerbar.props.selection_mode:
+            self.hide()
+        elif self._player.playing:
+            self.show()
+
     @log
     def _sync_repeat_image(self, player=None):
         icon = None
@@ -130,7 +140,8 @@ class PlayerToolbar(Gtk.ActionBar):
 
     @log
     def _sync_playing(self, player):
-        self.show()
+        if not self._headerbar.props.selection_mode:
+            self.show()
 
         if self._player.get_playback_status() == Playback.PLAYING:
             image = self._pause_image
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 270f0593..ee21c18f 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -207,10 +207,10 @@ class Window(Gtk.ApplicationWindow):
     @log
     def _setup_view(self):
         self._box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+        self.headerbar = HeaderBar()
         self.player = Player(self)
-        self.player_toolbar = PlayerToolbar(self.player)
+        self.player_toolbar = PlayerToolbar(self.player, self.headerbar)
         self.selection_toolbar = SelectionToolbar()
-        self.headerbar = HeaderBar()
         self.views = [None] * len(View)
         self._stack = Gtk.Stack(
             transition_type=Gtk.StackTransitionType.CROSSFADE,


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