[gnome-music/wip/jfelder/3-36-selection-fixes: 5/5] searchview: Correctly select a song




commit 49f9538f781e46d6294ee8cfb09e4e52340e5163
Author: Jean Felder <jfelder src gnome org>
Date:   Fri Aug 21 13:32:41 2020 +0200

    searchview: Correctly select a song
    
    This allows to select a song by clicking on its widget.
    
    Closes: #407

 gnomemusic/views/searchview.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py
index 81ffb432..8473c78f 100644
--- a/gnomemusic/views/searchview.py
+++ b/gnomemusic/views/searchview.py
@@ -238,12 +238,22 @@ class SearchView(Gtk.Stack):
             self.props.search_state = Search.State.NO_RESULT
 
     def _song_activated(self, widget, event):
+        if widget.props.select_click:
+            widget.props.select_click = False
+            return
+
         mod_mask = Gtk.accelerator_get_default_mod_mask()
         if ((event.get_state() & mod_mask) == Gdk.ModifierType.CONTROL_MASK
                 and not self.props.selection_mode):
             self.props.selection_mode = True
             return
 
+        if self.props.selection_mode:
+            widget.props.select_click = True
+            widget.props.selected = not widget.props.selected
+            widget.props.coresong.props.selected = widget.props.selected
+            return
+
         (_, button) = event.get_button()
         if (button == Gdk.BUTTON_PRIMARY
                 and not self.props.selection_mode):
@@ -253,10 +263,6 @@ class SearchView(Gtk.Stack):
                 PlayerPlaylist.Type.SEARCH_RESULT, self._model)
             self._player.play(widget.props.coresong)
 
-        # FIXME: Need to ignore the event from the checkbox.
-        # if self.props.selection_mode:
-        #     widget.props.selected = not widget.props.selected
-
         return True
 
     def _on_album_flowbox_size_allocate(self, widget, allocation, data=None):


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