Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mcomix for openSUSE:Factory checked 
in at 2026-09-10 11:48:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mcomix (Old)
 and      /work/SRC/openSUSE:Factory/.mcomix.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mcomix"

Thu Sep 10 11:48:57 2026 rev:10 rq:1376753 version:3.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/mcomix/mcomix.changes    2025-10-14 
18:09:57.850966971 +0200
+++ /work/SRC/openSUSE:Factory/.mcomix.new.1265/mcomix.changes  2026-09-10 
11:51:59.027081498 +0200
@@ -1,0 +2,19 @@
+Wed Sep  9 18:25:46 UTC 2026 - Giacomo Comes <[email protected]>
+
+- remove Leap 15.x dependencies
+
+-------------------------------------------------------------------
+Sat Aug 22 20:42:43 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.2.0:
+  * Adapt keybinding handling to changed API of
+    Gtk.accelerator_parse in newer versions of Gtk. This fixes
+    broken keybindings.
+  * The pytest package needed for running MComix' unit tests is
+    now installed when installing the `dev` dependency group.
+  * MComix now respects the XDG Thumbnail Directory specification
+    (again), and will store thumbnails relative to XDG_CACHE_HOME instead
+    of relative to the home directory on UNIX systems. Nothing
+    changes
+
+-------------------------------------------------------------------

Old:
----
  mcomix-3.1.1.tar.gz

New:
----
  mcomix-3.2.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mcomix.spec ++++++
--- /var/tmp/diff_new_pack.eKGPvd/_old  2026-09-10 11:51:59.840115595 +0200
+++ /var/tmp/diff_new_pack.eKGPvd/_new  2026-09-10 11:51:59.844115763 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package mcomix
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,14 +16,10 @@
 #
 
 
-%if 0%{?suse_version} >= 1600
 %define pythons python3
-%else
-%define pythons python311
-%endif
 
 Name:           mcomix
-Version:        3.1.1
+Version:        3.2.0
 Release:        0
 Summary:        Comics Viewer
 License:        GPL-2.0-only
@@ -34,11 +30,8 @@
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  gobject-introspection
-%if 0%{?suse_version} > 1600
-Requires:       python3-PyMuPDF
-%else
-Requires:       mupdf
-%endif
+Requires:       ( %{pythons}-PyMuPDF or mupdf )
+Suggests:       %{pythons}-PyMuPDF
 Requires:       %{pythons}
 Requires:       %{pythons}-Pillow
 Requires:       %{pythons}-chardet

++++++ mcomix-3.1.1.tar.gz -> mcomix-3.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/ChangeLog.md 
new/mcomix-3.2.0/ChangeLog.md
--- old/mcomix-3.1.1/ChangeLog.md       2025-09-06 13:03:50.000000000 +0200
+++ new/mcomix-3.2.0/ChangeLog.md       2026-08-20 11:18:04.214536700 +0200
@@ -1,3 +1,23 @@
+# MComix 3.2.0
+## Release date: 2026-08-20
+
+### Bug fixes
+
+- Adapt keybinding handling to changed API of Gtk.accelerator_parse
+  in newer versions of Gtk. This fixes broken keybindings.
+- The pytest package needed for running MComix' unit tests is now
+  installed when installing the `dev` dependency group.
+
+### Features
+
+- MComix now respects the XDG Thumbnail Directory specification (again),
+  and will store thumbnails relative to XDG_CACHE_HOME instead of
+  relative to the home directory on UNIX systems. Nothing changes
+  on Windows. Note: Existing thumbnails in the former cache directory
+  ($HOME/.thumbnails) are not moved automatically by this update.
+- Added new sort order option (GLib order) that uses GTK collate keys
+  when computing file order.
+
 # MComix 3.1.1
 ## Release date: 2025-09-06
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/PKG-INFO new/mcomix-3.2.0/PKG-INFO
--- old/mcomix-3.1.1/PKG-INFO   2025-09-06 13:06:32.493598000 +0200
+++ new/mcomix-3.2.0/PKG-INFO   2026-08-20 11:21:43.389224300 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: mcomix
-Version: 3.1.1
+Version: 3.2.0
 Summary: GTK comic book viewer
 Author: Pontus Ekberg
 Maintainer: The MComix Team
@@ -373,6 +373,7 @@
 Requires-Dist: chardet; extra == "fileformats"
 Requires-Dist: PyMuPDF>=1.19.2; extra == "fileformats"
 Provides-Extra: dev
+Requires-Dist: pytest; extra == "dev"
 Requires-Dist: pyinstaller; os_name == "nt" and extra == "dev"
 Requires-Dist: build; extra == "dev"
 Requires-Dist: pip-review; extra == "dev"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix/constants.py 
new/mcomix-3.2.0/mcomix/constants.py
--- old/mcomix-3.1.1/mcomix/constants.py        2025-09-06 13:03:50.000000000 
+0200
+++ new/mcomix-3.2.0/mcomix/constants.py        2026-08-20 11:18:04.214536700 
+0200
@@ -8,14 +8,14 @@
 from mcomix import tools
 
 APPNAME = 'MComix'
-VERSION = '3.1.1'
+VERSION = '3.2.0'
 
 HOME_DIR = tools.get_home_directory()
 CONFIG_DIR = tools.get_config_directory()
 DATA_DIR = tools.get_data_directory()
 
 BASE_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-THUMBNAIL_PATH = os.path.join(HOME_DIR if sys.platform != 'win32' else 
DATA_DIR, '.thumbnails/normal')
+THUMBNAIL_PATH = tools.get_thumbnail_directory()
 LIBRARY_DATABASE_PATH = os.path.join(DATA_DIR, 'library.db')
 LASTPAGE_DATABASE_PATH = os.path.join(DATA_DIR, 'lastreadpage.db')
 LIBRARY_COVERS_PATH = os.path.join(DATA_DIR, 'library_covers')
@@ -77,7 +77,7 @@
 SHOW_DOUBLE_AS_ONE_TITLE, SHOW_DOUBLE_AS_ONE_WIDE = 1, 2
 
 MAX_LIBRARY_COVER_SIZE = 500
-SORT_NAME, SORT_PATH, SORT_SIZE, SORT_LAST_MODIFIED, SORT_NAME_LITERAL = 1, 2, 
3, 4, 5
+SORT_NAME, SORT_PATH, SORT_SIZE, SORT_LAST_MODIFIED, SORT_NAME_LITERAL, 
SORT_NAME_GLIB = 1, 2, 3, 4, 5, 6
 SORT_DESCENDING, SORT_ASCENDING = 1, 2
 SIZE_HUGE, SIZE_LARGE, SIZE_NORMAL, SIZE_SMALL, SIZE_TINY = 
MAX_LIBRARY_COVER_SIZE, 300, 250, 125, 80
 RENDER_SIZE_LIMIT = 100000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix/file_handler.py 
new/mcomix-3.2.0/mcomix/file_handler.py
--- old/mcomix-3.1.1/mcomix/file_handler.py     2023-09-08 06:45:47.000000000 
+0200
+++ new/mcomix-3.2.0/mcomix/file_handler.py     2026-08-20 11:16:25.786536700 
+0200
@@ -7,7 +7,7 @@
 import threading
 import re
 import pickle
-from gi.repository import Gtk
+from gi.repository import Gtk, GLib
 
 from mcomix.preferences import prefs
 from mcomix import archive_extractor
@@ -323,6 +323,8 @@
             tools.alphanumeric_sort(filelist)
         elif prefs['sort archive by'] == constants.SORT_NAME_LITERAL:
             filelist.sort()
+        elif prefs['sort archive by'] == constants.SORT_NAME_GLIB:
+            filelist.sort(key=lambda filename: 
GLib.utf8_collate_key_for_filename(os.path.basename(filename), -1))
         else:
             # No sorting
             pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix/file_provider.py 
new/mcomix-3.2.0/mcomix/file_provider.py
--- old/mcomix-3.1.1/mcomix/file_provider.py    2023-09-08 06:45:47.000000000 
+0200
+++ new/mcomix-3.2.0/mcomix/file_provider.py    2026-08-20 11:16:25.786536700 
+0200
@@ -4,6 +4,7 @@
 
 import os
 import re
+from gi.repository import GLib
 
 from mcomix import image_tools
 from mcomix import archive_tools
@@ -69,6 +70,8 @@
         The list is sorted in-place. """
         if preferences.prefs['sort by'] == constants.SORT_NAME:
             tools.alphanumeric_sort(files)
+        elif preferences.prefs['sort by'] == constants.SORT_NAME_GLIB:
+            files.sort(key=lambda filename: 
GLib.utf8_collate_key_for_filename(os.path.basename(filename), -1))
         elif preferences.prefs['sort by'] == constants.SORT_LAST_MODIFIED:
             # Most recently modified file first
             files.sort(key=lambda filename: os.path.getmtime(filename)*-1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix/keybindings.py 
new/mcomix-3.2.0/mcomix/keybindings.py
--- old/mcomix-3.1.1/mcomix/keybindings.py      2024-01-01 14:07:23.000000000 
+0100
+++ new/mcomix-3.2.0/mcomix/keybindings.py      2026-08-20 11:16:25.798536800 
+0200
@@ -176,7 +176,7 @@
         # Load stored keybindings, or fall back to passed arguments
         keycodes = self._action_to_bindings[name]
         if keycodes == []:
-            keycodes = [Gtk.accelerator_parse(binding) for binding in bindings 
]
+            keycodes = [tuple(Gtk.accelerator_parse(binding)) for binding in 
bindings]
 
         for keycode in keycodes:
             if keycode in list(self._binding_to_action.keys()):
@@ -207,7 +207,7 @@
         """
         assert name in BINDING_INFO, "'%s' isn't a valid keyboard action." % 
name
 
-        nb = Gtk.accelerator_parse(new_binding)
+        nb = tuple(Gtk.accelerator_parse(new_binding))
         old_action_with_nb = self._binding_to_action.get(nb)
         if old_action_with_nb is not None:
             # The new key is already bound to an action, erase the action
@@ -216,7 +216,7 @@
 
         if old_binding and name != old_action_with_nb:
             # The action already had a key that is now being replaced
-            ob = Gtk.accelerator_parse(old_binding)
+            ob = tuple(Gtk.accelerator_parse(old_binding))
             self._binding_to_action[nb] = name
 
             # Remove action bound to the key.
@@ -238,7 +238,7 @@
         """ Remove binding for an action """
         assert name in BINDING_INFO, "'%s' isn't a valid keyboard action." % 
name
 
-        ob = Gtk.accelerator_parse(binding)
+        ob = tuple(Gtk.accelerator_parse(binding))
         self._action_to_bindings[name].remove(ob)
         self._binding_to_action.pop(ob)
 
@@ -299,7 +299,7 @@
         for action in BINDING_INFO.keys():
             if action in stored_action_bindings:
                 bindings = [
-                    Gtk.accelerator_parse(keyname)
+                    tuple(Gtk.accelerator_parse(keyname))
                     for keyname in stored_action_bindings[action] ]
                 self._action_to_bindings[action] = bindings
                 for binding in bindings:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix/main.py 
new/mcomix-3.2.0/mcomix/main.py
--- old/mcomix-3.1.1/mcomix/main.py     2024-08-19 06:40:13.000000000 +0200
+++ new/mcomix-3.2.0/mcomix/main.py     2026-08-20 11:16:25.798536800 +0200
@@ -266,6 +266,8 @@
             self._event_handler.drag_n_drop_event)
 
         self.uimanager.set_sensitivities()
+        # Restore twice, before and after show(), to make sure it works...
+        self.restore_window_geometry()
         self.show()
         self.restore_window_geometry()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix/preferences_dialog.py 
new/mcomix-3.2.0/mcomix/preferences_dialog.py
--- old/mcomix-3.1.1/mcomix/preferences_dialog.py       2024-08-19 
06:40:13.000000000 +0200
+++ new/mcomix-3.2.0/mcomix/preferences_dialog.py       2026-08-20 
11:16:25.798536800 +0200
@@ -489,6 +489,7 @@
         sortkey_items = (
                 (_('No sorting'), 0),
                 (_('File name'), constants.SORT_NAME),
+                (_('File name (GLib)'), constants.SORT_NAME_GLIB),
                 (_('File size'), constants.SORT_SIZE),
                 (_('Last modified'), constants.SORT_LAST_MODIFIED))
 
@@ -537,7 +538,8 @@
         sortkey_items = (
                 (_('No sorting'), 0),
                 (_('Natural order'), constants.SORT_NAME),
-                (_('Literal order'), constants.SORT_NAME_LITERAL))
+                (_('Literal order'), constants.SORT_NAME_LITERAL),
+                (_('GLib order'), constants.SORT_NAME_GLIB))
 
         sortkey_box = self._create_combobox(sortkey_items, prefs['sort archive 
by'],
             self._sort_archive_by_changed_cb)
@@ -557,7 +559,9 @@
         label = _("Files within archives will be sorted according to the order 
specified here. "
                   "Natural order will sort numbered files based on their 
natural order, "
                   "i.e. 1, 2, ..., 10, while literal order uses standard C 
sorting, "
-                  "i.e. 1, 2, 34, 5.")
+                  "i.e. 1, 2, 34, 5. "
+                  "GLib order will sort files using collate keys generated by 
GLib/GTK, "
+                  "used by many other GTK applications.")
         sortkey_box.set_tooltip_text(label)
         sortorder_box.set_tooltip_text(label)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix/tools.py 
new/mcomix-3.2.0/mcomix/tools.py
--- old/mcomix-3.1.1/mcomix/tools.py    2023-09-16 13:58:54.000000000 +0200
+++ new/mcomix-3.2.0/mcomix/tools.py    2026-08-20 11:16:25.798536800 +0200
@@ -114,6 +114,22 @@
         return os.path.join(base_path, 'mcomix')
 
 
+def get_thumbnail_directory() -> str:
+    """Return the path to the MComix thumbnail directory. On UNIX, this will
+    be in $XDG_CACHE_HOME. On Windows, DATA_DIR will be used. Refer to
+    https://specifications.freedesktop.org/thumbnail/latest/directory.html
+    for more information.
+    """
+    if sys.platform == 'win32':
+        cache_dir = os.path.join(get_data_directory(), '.thumbnails')
+    else:
+        cache_dir = os.getenv('XDG_CACHE_HOME',
+                              os.path.join(get_home_directory(), '.cache'))
+        cache_dir = os.path.join(cache_dir, 'thumbnails')
+
+    return os.path.join(cache_dir, 'normal')
+
+
 def number_of_digits(n: int) -> int:
     if 0 == n:
         return 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix.egg-info/PKG-INFO 
new/mcomix-3.2.0/mcomix.egg-info/PKG-INFO
--- old/mcomix-3.1.1/mcomix.egg-info/PKG-INFO   2025-09-06 13:06:32.000000000 
+0200
+++ new/mcomix-3.2.0/mcomix.egg-info/PKG-INFO   2026-08-20 11:21:43.250572400 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: mcomix
-Version: 3.1.1
+Version: 3.2.0
 Summary: GTK comic book viewer
 Author: Pontus Ekberg
 Maintainer: The MComix Team
@@ -373,6 +373,7 @@
 Requires-Dist: chardet; extra == "fileformats"
 Requires-Dist: PyMuPDF>=1.19.2; extra == "fileformats"
 Provides-Extra: dev
+Requires-Dist: pytest; extra == "dev"
 Requires-Dist: pyinstaller; os_name == "nt" and extra == "dev"
 Requires-Dist: build; extra == "dev"
 Requires-Dist: pip-review; extra == "dev"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/mcomix.egg-info/requires.txt 
new/mcomix-3.2.0/mcomix.egg-info/requires.txt
--- old/mcomix-3.1.1/mcomix.egg-info/requires.txt       2025-09-06 
13:06:32.000000000 +0200
+++ new/mcomix-3.2.0/mcomix.egg-info/requires.txt       2026-08-20 
11:21:43.253209400 +0200
@@ -3,6 +3,7 @@
 Pillow>=6.0.0
 
 [dev]
+pytest
 build
 pip-review
 python-lsp-server[flake8]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mcomix-3.1.1/pyproject.toml 
new/mcomix-3.2.0/pyproject.toml
--- old/mcomix-3.1.1/pyproject.toml     2023-09-16 20:32:27.000000000 +0200
+++ new/mcomix-3.2.0/pyproject.toml     2026-08-20 11:16:25.798536800 +0200
@@ -31,6 +31,8 @@
   "PyMuPDF>=1.19.2"
 ]
 dev = [
+  # For running tests
+  "pytest",
   # For building Windows package
   "pyinstaller; os_name == 'nt'",
   # For creating source package

Reply via email to