1. 11 May, 2020 1 commit
  2. 10 May, 2020 2 commits
    • Michael Pyne's avatar
      Merge branch 'release/20.04' · c1d00f44
      Michael Pyne authored
      Conflicts:
      	CMakeLists.txt
      c1d00f44
    • Michael Pyne's avatar
      playlist: Fix crasher with playlists using reserved columns. · e843f457
      Michael Pyne authored
      I introduced this bug in commit a800c1b3 trying to fix a different
      memory mis-using bug. Sigh.
      
      In this case playlists that reserve additional columns would get a valid
      memory assignment but would be copied into the memory block incorrectly.
      This needed a back_inserter as well.
      
      Thanks to Markus for pointing out the regression, then opening a bug,
      then leaving a comment to point out both of these, and then drafting a
      patch that fixes the bug.
      
      I can confirm it works in my testing, it also seems to address a bug
      relating to playback stopping abrupting at the end of a track instead of
      skipping to the next track, but who knows at this point.
      
      BUG:420718
      FIXED-IN:20.04.1
      e843f457
  3. 25 Apr, 2020 2 commits
  4. 15 Apr, 2020 3 commits
  5. 12 Apr, 2020 2 commits
  6. 01 Apr, 2020 2 commits
  7. 28 Mar, 2020 1 commit
  8. 24 Mar, 2020 2 commits
  9. 18 Mar, 2020 2 commits
  10. 15 Mar, 2020 2 commits
  11. 05 Mar, 2020 1 commit
  12. 02 Mar, 2020 1 commit
  13. 01 Mar, 2020 2 commits
  14. 29 Feb, 2020 1 commit
  15. 24 Feb, 2020 4 commits
  16. 23 Feb, 2020 4 commits
    • Michael Pyne's avatar
      playlist: Simplify dynamic playlist tracking of other playlists. · d8a5c948
      Michael Pyne authored
      We store pointers to other `Playlist` entries to ensure we can update
      their playing item state (which in the old JuK was a 'playback arrow'
      icon that would show up in the row for playing items). The idea being
      that there would be an entry in the Play Queue showing that an item was
      playing but also the same source item in the source playlist would also
      indicate that it was playing.
      
      This has been susceptible to all the normal frailties of storing
      pointers to objects whose lifetime is unpredictable. By using guarded
      pointers we can at least hopefully avoid crashing (especially on
      shutdown).
      d8a5c948
    • Michael Pyne's avatar
    • Michael Pyne's avatar
      playlist: Move M3U-based file loading to happen after ctor runs. · f4401608
      Michael Pyne authored
      This is another bug detected by LGTM
      https://lgtm.com/projects/g/KDE/juk?mode=list
      
      `loadFile()` itself calls at least four virtual methods. Rather than
      trying to de-virtualize them as I did in the last fix, I decided to just
      have the file load happen after the class is fully constructed, using
      the Qt event loop.
      f4401608
    • Michael Pyne's avatar
      playlist: Don't rely on overridden column count during construction. · a800c1b3
      Michael Pyne authored
      The LGTM code scanning site has coverage of JuK by virtue of its Github
      mirror, and reported [1] that `Playlist` was calling a function that was
      indirectly reliant on a virtual function (`columnOffset()`) that is
      overridden by subclasses like `HistoryPlaylist`.
      
      This is a bug since the C++ language specifies that a superclass
      constructor will be statically bound to call its own version of a
      virtual function (or an even higher superclass's), rather than whatever
      the subclass reimplementation might ultimately be.
      
      This is fixed by using the data we already have at the time of
      construction to set aside the right number of columns and then just
      holding onto the header labels generated rather than trying to
      introspect later.
      
      [1] https://lgtm.com/projects/g/KDE/juk?mode=list
      a800c1b3
  17. 18 Feb, 2020 2 commits
    • Michael Pyne's avatar
      ui: Fix bug in scrolling from playlist to search line. · 64b95b30
      Michael Pyne authored
      When the search filter was activated then the test for being the topmost
      item would be wrong (there would be a topmost item but it's probably
      filtered out!). Instead use the existing check for the *visible* item,
      which wasn't even reached by the buggy code.
      64b95b30
    • Michael Pyne's avatar
      ui: Fix return key failing to start playback. · b70139c9
      Michael Pyne authored
      The search bar was broken because a missing `returnPressed` signal
      declaration broke the signal/slot chain that was already present. An
      update to the existing key press filter was sufficient to make pressing
      return on a selected track in the Playlist work again, without the
      downsides of using `QListWidget::itemActivated`.
      b70139c9
  18. 15 Feb, 2020 1 commit
    • Michael Pyne's avatar
      search: Fix crash when clicking search playlist after startup. · b93e8cf4
      Michael Pyne authored
      Search playlists that are loaded with JuK on startup (i.e. because they
      were saved from a previous JuK invocation) cause a crash as soon as you
      click on the playlist after the recent merge request !18 (which
      refactors the search-handling code).
      
      The direct cause is that we were passing a pointer to a stack-allocated
      object (in the operator>> for SearchPlaylist), which caused a dangling
      pointer once the flow of execution left the stack frame. I did not catch
      this during the code review, but found a second instance of this in
      PlaylistCollection which I've also fixed.
      b93e8cf4
  19. 14 Feb, 2020 1 commit
  20. 13 Feb, 2020 3 commits
  21. 03 Feb, 2020 1 commit