Hello community, here is the log from the commit of package lollypop for openSUSE:Factory checked in at 2019-06-24 21:52:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lollypop (Old) and /work/SRC/openSUSE:Factory/.lollypop.new.4615 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lollypop" Mon Jun 24 21:52:44 2019 rev:85 rq:711565 version:1.1.1 Changes: -------- --- /work/SRC/openSUSE:Factory/lollypop/lollypop.changes 2019-06-21 09:58:41.108688864 +0200 +++ /work/SRC/openSUSE:Factory/.lollypop.new.4615/lollypop.changes 2019-06-24 21:53:50.752128388 +0200 @@ -1,0 +2,11 @@ +Sun Jun 23 15:07:52 UTC 2019 - [email protected] + +- Update to version 1.1.1: + * Add support for reading synced lyrics from tags. + * Fix a crash on playlist update (glgo#World/lollypop#1864). + * Don't lose search results upon search mode switch + (glgo#World/lollypop#1859). + * Fix a case of playback stopping unexpectedly + (glgo#World/lollypop#1840). + +------------------------------------------------------------------- Old: ---- lollypop-1.1.0.tar.xz New: ---- lollypop-1.1.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lollypop.spec ++++++ --- /var/tmp/diff_new_pack.WR7aQK/_old 2019-06-24 21:53:51.516128979 +0200 +++ /var/tmp/diff_new_pack.WR7aQK/_new 2019-06-24 21:53:51.520128981 +0200 @@ -17,7 +17,7 @@ Name: lollypop -Version: 1.1.0 +Version: 1.1.1 Release: 0 Summary: GNOME music playing application License: GPL-3.0-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.WR7aQK/_old 2019-06-24 21:53:51.552129006 +0200 +++ /var/tmp/diff_new_pack.WR7aQK/_new 2019-06-24 21:53:51.556129010 +0200 @@ -1,7 +1,7 @@ <services> <service mode="disabled" name="tar_scm"> <param name="changesgenerate">enable</param> - <param name="revision">1.1.0</param> + <param name="revision">1.1.1</param> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/World/lollypop.git</param> <param name="versionformat">@PARENT_TAG@</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.WR7aQK/_old 2019-06-24 21:53:51.576129025 +0200 +++ /var/tmp/diff_new_pack.WR7aQK/_new 2019-06-24 21:53:51.576129025 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">https://gitlab.gnome.org/World/lollypop.git</param> - <param name="changesrevision">31a19c75ddb30350eb5964f943da43741055e10d</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">3fd7197bc786ad224bf5a5a58bdfbdba1443f6a3</param></service></servicedata> \ No newline at end of file ++++++ lollypop-1.1.0.tar.xz -> lollypop-1.1.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/README.md new/lollypop-1.1.1/README.md --- old/lollypop-1.1.0/README.md 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/README.md 2019-06-23 15:43:48.000000000 +0200 @@ -60,12 +60,12 @@ # pip3 install pylast ``` -### On Debian GNU/Linux (Jessie) +### On Debian/Ubuntu ```bash $ git clone https://gitlab.gnome.org/World/lollypop.git $ cd lollypop -# apt-get install meson libglib2.0-dev yelp-tools libgirepository1.0-dev libgtk-3-dev +# apt-get install meson libglib2.0-dev yelp-tools libgirepository1.0-dev libgtk-3-dev gir1.2-totemplparser-1.0 $ meson builddir --prefix=/usr # sudo ninja -C builddir install ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/data/AlbumBannerWidget.ui new/lollypop-1.1.1/data/AlbumBannerWidget.ui --- old/lollypop-1.1.0/data/AlbumBannerWidget.ui 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/data/AlbumBannerWidget.ui 2019-06-23 15:43:48.000000000 +0200 @@ -83,8 +83,7 @@ <property name="image">image1</property> <signal name="clicked" handler="_on_menu_button_clicked" swapped="no"/> <style> - <class name="light-button"/> - <class name="light-button-no-right-border"/> + <class name="menu-button-48"/> </style> </object> <packing> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/data/ArtistView.ui new/lollypop-1.1.1/data/ArtistView.ui --- old/lollypop-1.1.0/data/ArtistView.ui 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/data/ArtistView.ui 2019-06-23 15:43:48.000000000 +0200 @@ -91,7 +91,6 @@ <property name="valign">center</property> <child> <object class="GtkButton" id="play-button"> - <property name="width_request">48</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> @@ -99,7 +98,7 @@ <property name="image">image1</property> <signal name="clicked" handler="_on_play_clicked" swapped="no"/> <style> - <class name="menu-button"/> + <class name="menu-button-48"/> <class name="black-transparent"/> </style> </object> @@ -111,7 +110,6 @@ </child> <child> <object class="GtkButton" id="add-button"> - <property name="width_request">48</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> @@ -119,7 +117,7 @@ <property name="image">image3</property> <signal name="clicked" handler="_on_add_clicked" swapped="no"/> <style> - <class name="menu-button"/> + <class name="menu-button-48"/> <class name="black-transparent"/> </style> </object> @@ -131,7 +129,6 @@ </child> <child> <object class="GtkToggleButton" id="lastfm-button"> - <property name="width_request">48</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> @@ -139,7 +136,7 @@ <property name="image">image4</property> <signal name="toggled" handler="_on_similars_button_toggled" swapped="no"/> <style> - <class name="menu-button"/> + <class name="menu-button-48"/> <class name="black-transparent"/> </style> </object> @@ -151,7 +148,6 @@ </child> <child> <object class="GtkButton" id="jump-button"> - <property name="width_request">48</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> @@ -161,7 +157,7 @@ <property name="image">image2</property> <signal name="clicked" handler="_on_jump_button_clicked" swapped="no"/> <style> - <class name="menu-button"/> + <class name="menu-button-48"/> <class name="black-transparent"/> </style> </object> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/data/PlaylistView.ui new/lollypop-1.1.1/data/PlaylistView.ui --- old/lollypop-1.1.0/data/PlaylistView.ui 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/data/PlaylistView.ui 2019-06-23 15:43:48.000000000 +0200 @@ -36,7 +36,6 @@ <property name="can_focus">False</property> <property name="halign">end</property> <property name="valign">center</property> - <property name="column_spacing">20</property> <child> <object class="GtkButton" id="play_button"> <property name="visible">True</property> @@ -45,11 +44,10 @@ <property name="tooltip_text" translatable="yes">Play</property> <property name="halign">start</property> <property name="image">image1</property> - <property name="relief">none</property> <signal name="clicked" handler="_on_play_button_clicked" swapped="no"/> <style> - <class name="light-button"/> - <class name="light-button-no-right-border"/> + <class name="menu-button-48"/> + <class name="black-transparent"/> </style> </object> <packing> @@ -65,11 +63,10 @@ <property name="tooltip_text" translatable="yes">Play playlist randomized</property> <property name="halign">start</property> <property name="image">image5</property> - <property name="relief">none</property> <signal name="clicked" handler="_on_shuffle_button_clicked" swapped="no"/> <style> - <class name="light-button"/> - <class name="light-button-no-right-border"/> + <class name="menu-button-48"/> + <class name="black-transparent"/> </style> </object> <packing> @@ -86,11 +83,10 @@ <property name="tooltip_text" translatable="yes">Go to current track</property> <property name="halign">start</property> <property name="image">image2</property> - <property name="relief">none</property> <signal name="clicked" handler="_on_jump_button_clicked" swapped="no"/> <style> - <class name="light-button"/> - <class name="light-button-no-right-border"/> + <class name="menu-button-48"/> + <class name="black-transparent"/> </style> </object> <packing> @@ -105,11 +101,10 @@ <property name="receives_default">True</property> <property name="halign">start</property> <property name="image">image7</property> - <property name="relief">none</property> <signal name="clicked" handler="_on_menu_button_clicked" swapped="no"/> <style> - <class name="menu-button"/> - <class name="light-button-no-right-border"/> + <class name="menu-button-48"/> + <class name="black-transparent"/> </style> </object> <packing> @@ -117,6 +112,9 @@ <property name="top_attach">0</property> </packing> </child> + <style> + <class name="linked"/> + </style> </object> <object class="GtkLabel" id="title"> <property name="height_request">32</property> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/data/application.css new/lollypop-1.1.1/data/application.css --- old/lollypop-1.1.0/data/application.css 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/data/application.css 2019-06-23 15:43:48.000000000 +0200 @@ -593,37 +593,38 @@ color: inherit; } -.light-button { +.menu-button-48 { opacity: 0.6; - box-shadow: none; - min-height: 24px; - min-width: 24px; + box-shadow: none; + min-height: 36px; + min-width: 48px; padding-left: 4px; padding-right: 4px; padding-top: 0px; padding-bottom: 0px; background-image: none; - background-color: transparent; border-style: solid; border-image-source: none; - border-bottom-width: 0px; - border-top-width: 0px; - border-left-width: 0px; + border-bottom-width: 1px; + border-top-width: 1px; + border-left-width: 1px; border-right-width: 1px; - border-radius: 0px; - border-color: alpha(@theme_fg_color, 0.3); + border-color: transparent; color: inherit; } -.light-button-no-right-border { - border-right-width: 0px; + +.menu-button-48:disabled { + opacity: 0.4; } -.light-button:hover { +.menu-button-48:hover { color: inherit; + border-color: alpha(@theme_fg_color, 0.1); opacity: 1; } + .menu-button { opacity: 0.6; box-shadow: none; @@ -654,10 +655,6 @@ opacity: 1; } -.menu-button-no-border:hover -{ - border-color: transparent; -} .album-menu-button { opacity: 0.6; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/data/org.gnome.Lollypop.appdata.xml.in new/lollypop-1.1.1/data/org.gnome.Lollypop.appdata.xml.in --- old/lollypop-1.1.0/data/org.gnome.Lollypop.appdata.xml.in 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/data/org.gnome.Lollypop.appdata.xml.in 2019-06-23 15:43:48.000000000 +0200 @@ -27,11 +27,10 @@ </ul> </description> <releases> - <release version="1.1.0" date="2019-06-20"> + <release version="1.1.1" date="2019-06-23"> <description> - <ul>New fullscreen mode</ul> - <ul>New MTP sync mode</ul> - <ul>New synced lyrics support</ul> + <ul>Bug fixes</ul> + <ul>Read synced lyrics from tags</ul> </description> </release> </releases> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/controller_information.py new/lollypop-1.1.1/lollypop/controller_information.py --- old/lollypop-1.1.0/lollypop/controller_information.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/controller_information.py 2019-06-23 15:43:48.000000000 +0200 @@ -13,6 +13,7 @@ from gi.repository import GLib from lollypop.define import Type, App, ArtBehaviour +from lollypop.objects import Album class InformationController: @@ -98,7 +99,7 @@ elif App().player.current_track.id is not None: if self.__per_track_cover: effect = self.__effect | ArtBehaviour.NO_CACHE - album = App().player.current_track.album + album = Album(App().player.current_track.album.id) App().art.clean_album_cache(album) album.set_tracks([App().player.current_track]) else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/database.py new/lollypop-1.1.1/lollypop/database.py --- old/lollypop-1.1.0/lollypop/database.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/database.py 2019-06-23 15:43:48.000000000 +0200 @@ -196,7 +196,7 @@ @param track as str @param album as str @param artists as [str] - @return bool + @return object """ artist_ids = [] for artist in artists: @@ -204,14 +204,14 @@ artist_ids.append(artist_id) album_id = App().albums.get_id_by_name_artists(album, artist_ids) if album_id is None: - return False + return None elif App().albums.get_mtime(album_id) > 0 or track is None: - return True + return album_id else: track_id = App().tracks.get_id_by(track, album_id, artist_ids) - return track_id is not None + return track_id ####################### # PRIVATE # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/helper_lyrics.py new/lollypop-1.1.1/lollypop/helper_lyrics.py --- old/lollypop-1.1.0/lollypop/helper_lyrics.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/helper_lyrics.py 2019-06-23 15:43:48.000000000 +0200 @@ -35,7 +35,19 @@ self.__timestamps = {} uri_no_ext = ".".join(track.uri.split(".")[:-1]) self.__lrc_file = Gio.File.new_for_uri(uri_no_ext + ".lrc") - self.__get_timestamps() + if self.__lrc_file.query_exists(): + self.__get_timestamps() + else: + from lollypop.tagreader import TagReader + reader = TagReader() + try: + info = reader.get_info(track.uri) + except: + info = None + if info is not None: + tags = info.get_tags() + for (lyrics, timestamp) in reader.get_synced_lyrics(tags): + self.__timestamps[timestamp] = lyrics def get_lyrics_for_timestamp(self, timestamp): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/helper_spotify.py new/lollypop-1.1.1/lollypop/helper_spotify.py --- old/lollypop-1.1.0/lollypop/helper_spotify.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/helper_spotify.py 2019-06-23 15:43:48.000000000 +0200 @@ -17,7 +17,7 @@ from time import time, sleep from lollypop.logger import Logger -from lollypop.objects import Album +from lollypop.objects import Album, Track from lollypop.helper_task import TaskHelper from lollypop.define import SPOTIFY_CLIENT_ID, SPOTIFY_SECRET, App @@ -305,10 +305,17 @@ for item in payload: if cancellable.is_cancelled(): raise Exception("cancelled") - if App().db.exists_in_db(item["album"]["name"], - [artist["name"] - for artist in item["artists"]], - item["name"]): + track_id = App().db.exists_in_db(item["album"]["name"], + [artist["name"] + for artist in item["artists"]], + item["name"]) + if track_id is not None: + track = Track(track_id) + if track.album.id not in album_ids: + print("track", track.is_web) + if track.is_web: + self.__create_album(track.album.id, None, cancellable) + album_ids.append(track.album.id) continue (album_id, track_id, @@ -334,10 +341,19 @@ for album_item in payload: if cancellable.is_cancelled(): return - if App().db.exists_in_db(album_item["name"], + album_id = App().db.exists_in_db( + album_item["name"], [artist["name"] - for artist in album_item["artists"]], - None): + for artist in album_item["artists"]], + None) + if album_id is not None: + if album_id not in album_ids: + album = Album(album_id) + if album.tracks: + track = album.tracks[0] + if track.is_web: + self.__create_album(album_id, None, cancellable) + album_ids.append(album_id) continue uri = "https://api.spotify.com/v1/albums/%s" % album_item["id"] token = "Bearer %s" % self.__token diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/menu_sync.py new/lollypop-1.1.1/lollypop/menu_sync.py --- old/lollypop-1.1.0/lollypop/menu_sync.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/menu_sync.py 2019-06-23 15:43:48.000000000 +0200 @@ -57,23 +57,29 @@ @param name as str @param status as bool """ + def on_get_synced(synced, sync_action): + sync_action.set_state(GLib.Variant.new_boolean(synced)) + sync_action.set_enabled(True) + synced = False devices = list(App().settings.get_value("devices")) action_name = "sync_%s" % name encoded = sha256(action_name.encode("utf-8")).hexdigest() + sync_action = Gio.SimpleAction.new_stateful( + encoded, + None, + GLib.Variant.new_boolean(synced)) + App().add_action(sync_action) + sync_action.set_enabled(False) try: if name == self.__all_devices: index = 0 else: index = devices.index(name) + 1 - synced = self._get_synced(index) + App().task_helper.run(self._get_synced, index, + callback=(on_get_synced, sync_action)) except Exception as e: Logger.warning("SyncMenu::__add_sync_action(): %s", e) - sync_action = Gio.SimpleAction.new_stateful( - encoded, - None, - GLib.Variant.new_boolean(synced)) - App().add_action(sync_action) if name != self.__all_devices: self.__actions.append(sync_action) sync_action.connect("change-state", @@ -107,7 +113,7 @@ action.set_state(variant) if name == self.__all_devices: synced = variant.get_boolean() - self._set_synced(0, synced) + App().task_helper.run(self._set_synced, 0, synced) for action in self.__actions: action.set_enabled(not synced) else: @@ -122,7 +128,9 @@ App().settings.set_value("devices", GLib.Variant("as", devices)) index = devices.index(name) + 1 - self._set_synced(index, variant.get_boolean()) + App().task_helper.run(self._set_synced, + index, + variant.get_boolean()) class SyncAlbumMenu(SyncMenu): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/selectionlist.py new/lollypop-1.1.1/lollypop/selectionlist.py --- old/lollypop-1.1.0/lollypop/selectionlist.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/selectionlist.py 2019-06-23 15:43:48.000000000 +0200 @@ -107,6 +107,14 @@ self.add(self.__grid) self.set_artwork() + def set_label(self, string): + """ + Set label for row + @param string as str + """ + self.__name = string + self.__label.set_markup(GLib.markup_escape_text(string)) + def set_artwork(self): """ set_artwork widget @@ -282,12 +290,12 @@ found = False for child in self.__listbox.get_children(): if child.id == object_id: - child.set_name(name) + child.set_label(name) found = True break if not found: self.__fastscroll.clear() - row = self.__add_value((object_id, name, name)) + row = self.__add_value(object_id, name, name) row.populate() if self.__mask & SelectionListMask.ARTISTS: self.__fastscroll.populate() @@ -308,7 +316,7 @@ item_ids = set([child.id for child in self.__listbox.get_children()]) for value in values: if not value[0] in item_ids: - row = self.__add_value(value) + row = self.__add_value(value[0], value[1], value[2]) row.populate() if self.__mask & SelectionListMask.ARTISTS: self.__fastscroll.populate() @@ -437,7 +445,7 @@ def __add_values(self, values): """ Add values to the list - @param items as [(int,str)] + @param items as [(int, str, str)] """ if values: (rowid, name, sortname) = values.pop(0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/tagreader.py new/lollypop-1.1.1/lollypop/tagreader.py --- old/lollypop-1.1.0/lollypop/tagreader.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/tagreader.py 2019-06-23 15:43:48.000000000 +0200 @@ -467,7 +467,6 @@ def get_lyrics(self, tags): """ Return lyrics for tags - All this code sucks @parma tags as Gst.TagList @return lyrics as str """ @@ -535,6 +534,54 @@ lyrics = get_ogg() return lyrics + def get_synced_lyrics(self, tags): + """ + Return synced lyrics for tags + @parma tags as Gst.TagList + @return lyrics as ([str, int]) + """ + def decode_lyrics(bytes_list, encoding): + lyrics = [] + from lollypop.utils import decodeUnicode, splitUnicode + try: + for frame in bytes_list: + (l, t) = splitUnicode(frame, encoding) + if l: + lyrics.append((decodeUnicode(l, encoding), + int.from_bytes(t[1:4], "big"))) + except Exception as e: + Logger.warning("TagReader::get_synced_lyrics1(): %s", e) + return lyrics + + def get_id3(): + try: + size = tags.get_tag_size("private-id3v2-frame") + for i in range(0, size): + (exists, sample) = tags.get_sample_index( + "private-id3v2-frame", + i) + if not exists: + continue + (exists, m) = sample.get_buffer().map(Gst.MapFlags.READ) + if not exists: + continue + prefix = (m.data[0:4]) + if prefix not in [b"SYLT"]: + continue + frame = m.data[10:] + encoding = frame[0:1] + string = decode_lyrics(frame.split(b"\n"), encoding) + if string is not None: + return string + except Exception as e: + Logger.error("TagReader::get_synced_lyrics2(): %s" % e) + return "" + + if tags is None: + return "" + lyrics = get_id3() + return lyrics + def add_artists(self, artists, sortnames, mb_artist_ids=""): """ Add artists to db diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/view_albums_box.py new/lollypop-1.1.1/lollypop/view_albums_box.py --- old/lollypop-1.1.0/lollypop/view_albums_box.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/view_albums_box.py 2019-06-23 15:43:48.000000000 +0200 @@ -18,6 +18,7 @@ from lollypop.widgets_album_simple import AlbumSimpleWidget from lollypop.define import App, Type, ViewType from lollypop.objects import Album +from lollypop.logger import Logger from lollypop.utils import get_icon_name, get_network_available from lollypop.controller_view import ViewController, ViewControllerType @@ -128,19 +129,23 @@ """ Set active ids """ - FlowBoxView._on_map(self, widget) - if self._view_type & ViewType.SMALL: - return - if self.__genre_ids: - App().settings.set_value("state-one-ids", - GLib.Variant("ai", self.__genre_ids)) - App().settings.set_value("state-two-ids", - GLib.Variant("ai", self.__artist_ids)) - else: - App().settings.set_value("state-one-ids", - GLib.Variant("ai", self.__artist_ids)) - App().settings.set_value("state-two-ids", - GLib.Variant("ai", [])) + try: + FlowBoxView._on_map(self, widget) + if self._view_type & ViewType.SMALL: + return + if self.__genre_ids: + App().settings.set_value("state-one-ids", + GLib.Variant("ai", self.__genre_ids)) + App().settings.set_value("state-two-ids", + GLib.Variant("ai", self.__artist_ids)) + else: + App().settings.set_value("state-one-ids", + GLib.Variant("ai", self.__artist_ids)) + App().settings.set_value("state-two-ids", + GLib.Variant("ai", [])) + except: + Logger.warning( + "https://gitlab.gnome.org/World/lollypop/issues/1864") ####################### # PRIVATE # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/view_current_albums.py new/lollypop-1.1.1/lollypop/view_current_albums.py --- old/lollypop-1.1.0/lollypop/view_current_albums.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/view_current_albums.py 2019-06-23 15:43:48.000000000 +0200 @@ -15,7 +15,7 @@ from gettext import gettext as _ from lollypop.view_albums_list import AlbumsListView -from lollypop.define import App, ViewType +from lollypop.define import App, ViewType, MARGIN_SMALL class CurrentAlbumsView(AlbumsListView): @@ -39,6 +39,7 @@ "light-button-no-right-border") self.__clear_button.set_sensitive(App().player.albums) self.__clear_button.connect("clicked", self.__on_clear_clicked) + self.__clear_button.set_margin_end(MARGIN_SMALL) self.__save_button = Gtk.Button.new_from_icon_name( "document-new-symbolic", Gtk.IconSize.MENU) @@ -70,6 +71,7 @@ grid.add(self.__save_button) grid.add(self.__clear_button) grid.show_all() + grid.set_margin_bottom(MARGIN_SMALL) self.set_row_spacing(2) self.insert_row(0) self.attach(grid, 0, 0, 1, 1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/view_playlists.py new/lollypop-1.1.1/lollypop/view_playlists.py --- old/lollypop-1.1.0/lollypop/view_playlists.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/view_playlists.py 2019-06-23 15:43:48.000000000 +0200 @@ -18,6 +18,7 @@ from lollypop.view import LazyLoadingView from lollypop.widgets_playlist import PlaylistsWidget from lollypop.define import App, Type, ViewType, SidebarContent, MARGIN +from lollypop.define import MARGIN_SMALL from lollypop.controller_view import ViewController, ViewControllerType from lollypop.widgets_playlist_banner import PlaylistBannerWidget @@ -63,17 +64,24 @@ self.__playlists_widget.show() self._viewport.add(self.__playlists_widget) self.__title_label.set_margin_start(MARGIN) - self.__duration_label.set_margin_start(MARGIN) self.__buttons.set_margin_end(MARGIN) if self.__view_type & (ViewType.POPOVER | ViewType.FULLSCREEN): - self.__duration_label.set_margin_end(MARGIN) self.__title_label.get_style_context().add_class("dim-label") self.__duration_label.get_style_context().add_class("dim-label") self.__widget.add(self.__title_label) + self.__jump_button = Gtk.Button.new_from_icon_name( + "go-jump-symbolic", Gtk.IconSize.BUTTON) + self.__jump_button.connect("clicked", self._on_jump_button_clicked) + self.__jump_button.set_relief(Gtk.ReliefStyle.NONE) + self.__jump_button.show() + self.__jump_button.set_margin_end(MARGIN_SMALL) self.__widget.add(self.__duration_label) + self.__widget.add(self.__jump_button) + self.__widget.set_margin_bottom(MARGIN_SMALL) self.add(self.__widget) self.add(self._scrolled) else: + self.__duration_label.set_margin_start(MARGIN) self._overlay = Gtk.Overlay.new() self._overlay.add(self._scrolled) self._overlay.show() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/lollypop/widgets_album_banner.py new/lollypop-1.1.1/lollypop/widgets_album_banner.py --- old/lollypop-1.1.0/lollypop/widgets_album_banner.py 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/lollypop/widgets_album_banner.py 2019-06-23 15:43:48.000000000 +0200 @@ -101,6 +101,7 @@ self.__grid = builder.get_object("grid") self.__widget = builder.get_object("widget") if view_type & ViewType.ALBUM: + menu_button.get_style_context().add_class("black-transparent") self.get_style_context().add_class("black") self.__artwork.get_style_context().add_class("black") self.connect("size-allocate", self.__on_size_allocate) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.1.0/meson.build new/lollypop-1.1.1/meson.build --- old/lollypop-1.1.0/meson.build 2019-06-20 15:58:34.000000000 +0200 +++ new/lollypop-1.1.1/meson.build 2019-06-23 15:43:48.000000000 +0200 @@ -1,5 +1,5 @@ project('lollypop', - version: '1.1.0', + version: '1.1.1', meson_version: '>= 0.40.0' ) i18n = import('i18n')
