diff -Nru nicotine-3.3.1/.snapcraft.yaml nicotine-3.3.2/.snapcraft.yaml --- nicotine-3.3.1/.snapcraft.yaml 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/.snapcraft.yaml 2024-02-25 19:23:05.000000000 +0000 @@ -21,6 +21,7 @@ - network - network-bind - removable-media + - unity7 parts: snapcraft-preload: diff -Nru nicotine-3.3.1/NEWS.md nicotine-3.3.2/NEWS.md --- nicotine-3.3.1/NEWS.md 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/NEWS.md 2024-02-25 19:23:05.000000000 +0000 @@ -5,6 +5,15 @@ You can run the latest unstable build of Nicotine+ to test recent changes and bug fixes, see [TESTING.md](doc/TESTING.md). +## Version 3.3.2 (February 25, 2024) + +### Corrections + + * Fixed a crash when adding transfers while in ungrouped mode + * Fixed an issue where dialog message labels were not read by screen readers + * Snap: Fixed screen reader detection for enabling GTK 3 + + ## Version 3.3.1 (February 24, 2024) ### Changes diff -Nru nicotine-3.3.1/README.md nicotine-3.3.2/README.md --- nicotine-3.3.1/README.md 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/README.md 2024-02-25 19:23:05.000000000 +0000 @@ -14,7 +14,7 @@ ## Download -The current stable version of Nicotine+ is 3.3.1, released on February 24, 2024. See the [release notes](NEWS.md). +The current stable version of Nicotine+ is 3.3.2, released on February 25, 2024. See the [release notes](NEWS.md). Downloads are available for: diff -Nru nicotine-3.3.1/data/org.nicotine_plus.Nicotine.appdata.xml nicotine-3.3.2/data/org.nicotine_plus.Nicotine.appdata.xml --- nicotine-3.3.1/data/org.nicotine_plus.Nicotine.appdata.xml 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/data/org.nicotine_plus.Nicotine.appdata.xml 2024-02-25 19:23:05.000000000 +0000 @@ -62,6 +62,10 @@

Nicotine+ pretende ser una alternativa ligera, agradable, libre y de código abierto (FOSS) al cliente oficial de Soulseek, al tiempo que ofrece un amplio conjunto de funciones.

Nicotine+ zielt darauf ab, eine leichte, angenehme, freie und offene Quelle (FOSS) Alternative zum offiziellen Soulseek-Klient zu sein, während auch eine umfassende Reihe von Funktionen zu bieten.

+ + #ffdfc7 + #733000 + Search Files @@ -242,6 +246,7 @@ mild + diff -Nru nicotine-3.3.1/data/org.nicotine_plus.Nicotine.appdata.xml.in nicotine-3.3.2/data/org.nicotine_plus.Nicotine.appdata.xml.in --- nicotine-3.3.1/data/org.nicotine_plus.Nicotine.appdata.xml.in 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/data/org.nicotine_plus.Nicotine.appdata.xml.in 2024-02-25 19:23:05.000000000 +0000 @@ -19,6 +19,10 @@ also providing a comprehensive set of features.

+ + #ffdfc7 + #733000 + Search Files @@ -78,6 +82,7 @@ mild + diff -Nru nicotine-3.3.1/debian/changelog nicotine-3.3.2/debian/changelog --- nicotine-3.3.1/debian/changelog 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/debian/changelog 2024-02-25 19:23:05.000000000 +0000 @@ -1,8 +1,14 @@ -nicotine (3.3.1-202402240352~ubuntu18.04.1) bionic; urgency=low +nicotine (3.3.2-202402251923~ubuntu18.04.1) bionic; urgency=low * Auto build. - -- Mat Sat, 24 Feb 2024 03:52:53 +0000 + -- Mat Sun, 25 Feb 2024 19:23:05 +0000 + +nicotine (3.3.2-1) mantic; urgency=medium + + * Latest upstream. + + -- Mat Sun, 25 Feb 2024 01:35:34 +0200 nicotine (3.3.1-1) mantic; urgency=medium diff -Nru nicotine-3.3.1/debian/git-build-recipe.manifest nicotine-3.3.2/debian/git-build-recipe.manifest --- nicotine-3.3.1/debian/git-build-recipe.manifest 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/debian/git-build-recipe.manifest 2024-02-25 19:23:05.000000000 +0000 @@ -1,2 +1,2 @@ -# git-build-recipe format 0.4 deb-version 3.3.1-202402240352 -lp:nicotine+ git-commit:f7f1f3f3bd601c9a37eb5970cf261dd1f16052a2 +# git-build-recipe format 0.4 deb-version 3.3.2-202402251923 +lp:nicotine+ git-commit:4bdd97f34732bc0ac88dcb2fc15ad3466fd633a9 diff -Nru nicotine-3.3.1/pynicotine/__init__.py nicotine-3.3.2/pynicotine/__init__.py --- nicotine-3.3.1/pynicotine/__init__.py 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/pynicotine/__init__.py 2024-02-25 19:23:05.000000000 +0000 @@ -18,7 +18,7 @@ __application_name__ = "Nicotine+" __application_id__ = "org.nicotine_plus.Nicotine" -__version__ = "3.3.1" +__version__ = "3.3.2" __author__ = "Nicotine+ Team" __copyright__ = """© 2004–2024 Nicotine+ Contributors © 2003–2004 Nicotine Contributors diff -Nru nicotine-3.3.1/pynicotine/downloads.py nicotine-3.3.2/pynicotine/downloads.py --- nicotine-3.3.1/pynicotine/downloads.py 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/pynicotine/downloads.py 2024-02-25 19:23:05.000000000 +0000 @@ -370,6 +370,9 @@ if not folder_path: return + if folder_path == self.get_default_download_folder(username): + return + for downloads in ( self.queued_users.get(username, {}), self.active_users.get(username, {}), diff -Nru nicotine-3.3.1/pynicotine/gtkgui/__init__.py nicotine-3.3.2/pynicotine/gtkgui/__init__.py --- nicotine-3.3.1/pynicotine/gtkgui/__init__.py 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/pynicotine/gtkgui/__init__.py 2024-02-25 19:23:05.000000000 +0000 @@ -43,8 +43,7 @@ # If screen reader is enabled, use GTK 3 until treeviews have been ported to # Gtk.ColumnView. Gtk.TreeView doesn't support screen readers in GTK 4. - if (dbus_proxy.Get("(ss)", "org.a11y.Status", "IsEnabled") - and dbus_proxy.Get("(ss)", "org.a11y.Status", "ScreenReaderEnabled")): + if dbus_proxy.Get("(ss)", "org.a11y.Status", "IsEnabled"): log.add_debug("Screen reader enabled, using GTK 3 for improved accessibility") return "3" diff -Nru nicotine-3.3.1/pynicotine/gtkgui/transfers.py nicotine-3.3.2/pynicotine/gtkgui/transfers.py --- nicotine-3.3.1/pynicotine/gtkgui/transfers.py 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/pynicotine/gtkgui/transfers.py 2024-02-25 19:23:05.000000000 +0000 @@ -604,7 +604,7 @@ return False - expand_user = select_parent + expand_user = False expand_folder = False user_iterator = None user_folder_path_iterator = None @@ -626,6 +626,7 @@ if self.grouping_mode != "ungrouped": # Group by folder or user + expand_user = select_parent select_iterator = None empty_int = 0 empty_str = "" @@ -760,10 +761,10 @@ ], select_row=False, parent_iterator=parent_iterator) self.row_id += 1 - if expand_user: + if expand_user and user_iterator is not None: self.tree_view.expand_row(user_iterator) - if expand_folder: + if expand_folder and user_folder_path_iterator is not None: self.tree_view.expand_row(user_folder_path_iterator) return True diff -Nru nicotine-3.3.1/pynicotine/gtkgui/widgets/dialogs.py nicotine-3.3.2/pynicotine/gtkgui/widgets/dialogs.py --- nicotine-3.3.1/pynicotine/gtkgui/widgets/dialogs.py 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/pynicotine/gtkgui/widgets/dialogs.py 2024-02-25 19:23:05.000000000 +0000 @@ -358,7 +358,7 @@ action_box.add(action_area) # pylint: disable=no-member for response_type, button_label in buttons: - button = Gtk.Button(label=button_label, use_underline=True, hexpand=True, visible=True) + button = Gtk.Button(use_underline=True, hexpand=True, visible=True) button.connect("clicked", self._on_button_pressed, response_type) if GTK_API_VERSION >= 4: @@ -380,6 +380,10 @@ self.message_label.set_mnemonic_widget(button) self.default_focus_widget = button + # Set mnemonic widget before button label in order for screen reader to + # read both labels + button.set_label(button_label) + return widget def _add_long_message(self, text): @@ -457,7 +461,6 @@ def _add_option_toggle(self, option_label, option_value): toggle = Gtk.CheckButton(label=option_label, active=option_value, receives_default=True, visible=True) - self.message_label.set_mnemonic_widget(toggle) if option_label: if GTK_API_VERSION >= 4: @@ -488,11 +491,13 @@ ], **kwargs) self.entry_container = None + self.entry_combobox = None + self.second_entry_combobox = None + self.entry_combobox = self.default_focus_widget = self._add_entry_combobox( default, activates_default=not use_second_entry, visibility=visibility, show_emoji_icon=show_emoji_icon, droplist=droplist ) - self.second_entry = None if use_second_entry: self.second_entry_combobox = self._add_entry_combobox( @@ -518,8 +523,8 @@ combobox.unfreeze() - if activates_default: - self.message_label.set_mnemonic_widget(entry if activates_default else combobox.widget) + if self.entry_combobox is None: + self.message_label.set_mnemonic_widget(entry if has_entry else combobox.widget) self.container.set_visible(True) return combobox @@ -539,7 +544,7 @@ else: self.entry_container.add(entry) # pylint: disable=no-member - if activates_default: + if self.entry_combobox is None: self.message_label.set_mnemonic_widget(entry) self.container.set_visible(True) diff -Nru nicotine-3.3.1/pynicotine/shares.py nicotine-3.3.2/pynicotine/shares.py --- nicotine-3.3.1/pynicotine/shares.py 2024-02-24 03:52:53.000000000 +0000 +++ nicotine-3.3.2/pynicotine/shares.py 2024-02-25 19:23:05.000000000 +0000 @@ -178,8 +178,7 @@ return key in self._value_offsets def __iter__(self): - for key in self._value_offsets: - yield key + yield from self._value_offsets def __len__(self): return len(self._value_offsets)