[Pkg-xfce-commits] [Git][xfce-team/apps/ristretto][upstream/latest] New upstream version 0.12.3.

Unit 193 (@unit193) gitlab at salsa.debian.org
Wed Jul 13 04:05:25 BST 2022



Unit 193   pushed to branch upstream/latest at xfce / apps / ristretto


Commits:
5d8ec4e3 by Unit 193 at 2022-07-12T22:59:24-04:00
New upstream version 0.12.3.
- - - - -


24 changed files:

- ChangeLog
- Makefile.am
- Makefile.in
- NEWS
- − TODO
- aclocal.m4
- config.h.in
- configure
- configure.ac
- org.xfce.ristretto.appdata.xml.in
- po/da.po
- po/el.po
- po/ko.po
- po/ms.po
- po/pt_BR.po
- po/tr.po
- po/zh_CN.po
- src/file.c
- src/image_list.c
- src/image_viewer.c
- src/main.c
- src/main_window.c
- src/thumbnailer.c
- src/tumbler.c


Changes:

=====================================
ChangeLog
=====================================
@@ -1,3 +1,271 @@
+commit 5aade5c6e1b4b0a815aa4c336fabb3b2a7a92b5a
+Author: Anonymous <noreply at xfce.org>
+Date:   Tue Jul 5 00:49:58 2022 +0200
+
+    I18n: Update translation ko (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 4b67569ed5061d36279c32ac72b8dd649760d958
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sun Jul 3 16:11:17 2022 +0200
+
+    thumbnailer: Fall back on lower qualities in case of unsupported flavor
+    
+    Replaces: de65c2f23ce2b5b84d5f6de9e7568e707073bf3f
+    Related: #81
+
+commit f40f8cd591b773aeed6afac0e22715cd5bb8d4a9
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sun Jul 3 11:28:57 2022 +0200
+
+    Secure error handling when opening multiple files
+    
+    Although this opening mode is made for a small number of files, there is
+    no guarantee that this is respected and there is therefore a risk of
+    integer overflow.
+    
+    Related: !33
+
+commit e77550803f83d64dfcc02f49452476f602887748
+Author: Anonymous <noreply at xfce.org>
+Date:   Fri Jul 1 12:51:07 2022 +0200
+
+    I18n: Update translation tr (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 34dd6350c288c7e76fc168e7476515113b36c99b
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Tue Jun 14 09:10:01 2022 +0200
+
+    Use `G_FILE_MONITOR_WATCH_MOVES` for file monitoring
+    
+    For file monitoring only, not for directory monitoring, where this is
+    unnecessary. The rationale is that it allows for proper handling of file
+    renaming, which otherwise requires directory monitoring to receive the
+    `G_FILE_MONITOR_EVENT_CREATED` event.
+    
+    Requires: GLib 2.46
+
+commit f02794eb51a1c48ac64efcbdb46f0dba39051c4f
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Mon Jun 13 22:52:17 2022 +0200
+
+    Do not keep sticky state when current file is removed
+    
+    Unlike what was done in d135e3ad185c90cf3527b786b856e1bfffe30cfc. This
+    allows in particular to stay on the current image when renaming it,
+    which is done via a deleted-created pair, at least when the monitoring
+    is done at the directory level. The case of file monitoring, which only
+    works halfway, is treated in the next commit.
+
+commit 89dfeeb7f5e38826d98b78c896e6d93a4935eb92
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Mon Jun 13 18:25:57 2022 +0200
+
+    Fix management of transaction source id
+
+commit fe18deb2b60c98b314ecda0605d117ff778dacb4
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sun Jun 12 12:13:12 2022 +0200
+
+    flatpak: Some updates from Flathub
+
+commit 37cb321608508cd0d556f409d8da9897edc3232a
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Tue Jun 7 19:14:04 2022 +0200
+
+    Correctly handle deletion when there is only one image
+    
+    A double regression, introduced in:
+    d135e3ad185c90cf3527b786b856e1bfffe30cfc
+    a849a32050cd5b484da71cc515b70386f46d1f9b
+    
+    The first one causes a crash (division by zero), the second one causes
+    critical warnings.
+    
+    Fixes: #89
+
+commit 3605979c12e4adf2f971d4074ec9e7f7ecc136e0
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sat May 14 19:20:47 2022 +0200
+
+    Update iter list on insertion and deletion
+    
+    Another mistake in a849a32050cd5b484da71cc515b70386f46d1f9b, from which
+    this update becomes necessary.
+    
+    Fixes: #88
+
+commit 103b7af4adaa21088525a0f7a073039b169dccbd
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Fri May 13 19:00:58 2022 +0200
+
+    build: Fix intltool lock file problem during make distcheck
+    
+    See https://mail.xfce.org/pipermail/xfce4-dev/2022-May/032915.html
+
+commit 69e75422c82c91a0072e872a7901a61698b68d0a
+Author: Anonymous <noreply at xfce.org>
+Date:   Sun Apr 24 12:53:52 2022 +0200
+
+    I18n: Update translation ms (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 2a6a2b7867293bb8ef1c67504ef3bb5411c362ce
+Author: Anonymous <noreply at xfce.org>
+Date:   Fri Apr 1 00:50:31 2022 +0200
+
+    I18n: Update translation tr (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 20924941a3989109388ced8d617589051282d2e8
+Author: Anonymous <noreply at xfce.org>
+Date:   Sun Mar 20 00:50:28 2022 +0100
+
+    I18n: Update translation da (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 44327a53d3a1dfe63b72efbe651642d6a91b3733
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Thu Mar 17 12:11:12 2022 +0100
+
+    Remove old icon files
+    
+    Related to !10.
+
+commit cc2de997d2a93453393d151cad7929e5ddcd2168
+Author: Ápo <apostolos.papadimitriu at gmail.com>
+Date:   Thu Mar 17 00:52:19 2022 +0100
+
+    I18n: Update translation el (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit f50734aa276e08dfc6e976fb098497edda59a378
+Author: Anonymous <noreply at xfce.org>
+Date:   Mon Mar 14 12:52:30 2022 +0100
+
+    I18n: Update translation da (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit df97e49a803998b6d3e1de02cca713ebf7eb2c03
+Author: Anonymous <noreply at xfce.org>
+Date:   Mon Mar 14 00:50:20 2022 +0100
+
+    I18n: Update translation da (98%).
+    
+    203 translated messages, 3 untranslated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 9b05cb65f475ded3e1d0ca0bc5ec836a41e24f19
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sat Mar 12 20:32:51 2022 +0100
+
+    Display error message on stderr
+
+commit 63ada24f0a07efb79ff437dbb2cf56b97c109535
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sat Mar 12 16:33:06 2022 +0100
+
+    i18n: Use `xfce_textdomain()` to initialize translations
+    
+    We already depend on libxfce4util, it's the same code in one line, and
+    the check for `bind_textdomain_codeset()` was not done here while it is
+    done in libxfce4util, which is safer: see
+    https://www.gnu.org/software/gnulib/manual/html_node/bind_005ftextdomain_005fcodeset.html
+
+commit 1aa42b3be7cc301a59d982a8701a4696874aa17e
+Author: Michael Martins <michaelfm21 at gmail.com>
+Date:   Tue Mar 8 12:51:39 2022 +0100
+
+    I18n: Update translation pt_BR (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 388cd3918c3e32fc0e917d01dd0a1b2e14ad0b02
+Author: 玉堂白鹤 <yjwork at qq.com>
+Date:   Tue Mar 1 12:51:24 2022 +0100
+
+    I18n: Update translation zh_CN (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit c95e1efb8839af21758298c83546c8b4d63a48f8
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Tue Feb 8 15:52:12 2022 +0100
+
+    Remove TODO file
+
+commit 3eea0ee4c1916e2233fd6f452a2228e8df37e59a
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Mon Feb 7 22:29:46 2022 +0100
+
+    Flatpak: Add libopenraw dependency
+
+commit dd09dba0d8572847115770def727a00bc6f23ba8
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sat Feb 5 10:46:41 2022 +0100
+
+    Ensure that an error is set if no pixbuf is available
+    
+    It shouldn't happen, but it does: see e.g.
+    https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/204.
+    
+    Related to https://gitlab.xfce.org/xfce/tumbler/-/issues/44#note_42317.
+
+commit c59f3b849a138184e618f23b39a461a4e14e0064
+Author: Anonymous <noreply at xfce.org>
+Date:   Fri Feb 4 00:50:08 2022 +0100
+
+    I18n: Update translation pt_BR (100%).
+    
+    206 translated messages.
+    
+    Transifex (https://www.transifex.com/xfce/public/).
+
+commit 22f7d07ed22d6921dd2b6bec5263f566113a5037
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Sat Jan 15 19:47:52 2022 +0100
+
+    Fix some memory leaks
+
+commit 75f9a64af99eb06e82852925179749d733914703
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Fri Jan 14 12:30:51 2022 +0100
+
+    Back to development
+
+commit f40fa28e4c249809e398e918a2e3983c3c63efd5
+Author: Gaël Bonithon <gael at xfce.org>
+Date:   Fri Jan 14 12:29:25 2022 +0100
+
+    Updates for release
+
 commit 3cad2c06e59ad6325cb74954026346050d3ea91a
 Author: Gaël Bonithon <gael at xfce.org>
 Date:   Tue Jan 11 11:52:42 2022 +0100


=====================================
Makefile.am
=====================================
@@ -30,6 +30,7 @@ DISTCLEANFILES = \
 	intltool-extract \
 	intltool-merge \
 	intltool-update \
+	po/.intltool-merge-cache.lock \
 	$(desktop_DATA) \
 	$(appdata_DATA)
 


=====================================
Makefile.in
=====================================
@@ -185,8 +185,8 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 DIST_SUBDIRS = $(SUBDIRS)
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
-	COPYING ChangeLog NEWS README.md TODO compile config.guess \
-	config.sub depcomp install-sh missing
+	COPYING ChangeLog NEWS README.md compile config.guess \
+	config.sub install-sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -412,6 +412,7 @@ DISTCLEANFILES = \
 	intltool-extract \
 	intltool-merge \
 	intltool-update \
+	po/.intltool-merge-cache.lock \
 	$(desktop_DATA) \
 	$(appdata_DATA)
 


=====================================
NEWS
=====================================
@@ -1,3 +1,29 @@
+0.12.3 (2022-07-09)
+======
+- Bug Fixes:
+  - thumbnailer: Fall back on lower qualities in case of unsupported flavor (#81)
+  - Secure error handling when opening multiple files
+  - Use `G_FILE_MONITOR_WATCH_MOVES` for file monitoring
+  - Do not keep sticky state when current file is removed
+  - Fix management of transaction source id
+  - Correctly handle deletion when there is only one image (#89)
+  - Update iter list on insertion and deletion (#88)
+  - build: Fix intltool lock file problem during make distcheck
+  - Display error message on stderr
+  - i18n: Use `xfce_textdomain()` to initialize translations
+  - Ensure that an error is set if no pixbuf is available
+  - Fix some memory leaks
+
+- Code Refactoring:
+  - flatpak: Some updates from Flathub
+  - Remove old icon files
+  - Remove TODO file
+  - Flatpak: Add libopenraw dependency
+
+- Translation Updates:
+  Chinese (China), Danish, Greek, Korean, Malay, Portuguese (Brazil),
+  Turkish
+
 0.12.2 (2022-01-14)
 ======
 - New Features:


=====================================
TODO deleted
=====================================


=====================================
aclocal.m4
=====================================
@@ -212,7 +212,8 @@ AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
 
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
-#   Copyright (C) 1996-2001, 2003-2018 Free Software Foundation, Inc.
+#   Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software
+#   Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -243,7 +244,7 @@ m4_define([_LT_COPYING], [dnl
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ])
 
-# serial 58 LT_INIT
+# serial 59 LT_INIT
 
 
 # LT_PREREQ(VERSION)
@@ -393,6 +394,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
 m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
 m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_DECL_FILECMD])dnl
 m4_require([_LT_CHECK_MAGIC_METHOD])dnl
 m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
@@ -983,7 +985,7 @@ _LT_EOF
   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
   # text mode, it properly converts lines to CR/LF.  This bash problem
   # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
+  $SED '$q' "$ltmain" >> "$cfgfile" \
      || (rm -f "$cfgfile"; exit 1)
 
    mv -f "$cfgfile" "$ofile" ||
@@ -1270,17 +1272,12 @@ _LT_EOF
       _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
     darwin1.*)
       _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]][[,.]]*)
-	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+    darwin*)
+      case $MACOSX_DEPLOYMENT_TARGET,$host in
+        10.[[012]],*|,*powerpc*-darwin[[5-8]]*)
+          _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+        *)
+          _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
       esac
     ;;
   esac
@@ -1329,12 +1326,12 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
     output_verbose_link_cmd=func_echo_all
     _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
     _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
     m4_if([$1], [CXX],
 [   if test yes != "$lt_cv_apple_cc_single_mod"; then
       _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
     fi
 ],[])
   else
@@ -1448,7 +1445,8 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
 # _LT_WITH_SYSROOT
 # ----------------
 AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
+[m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([for sysroot])
 AC_ARG_WITH([sysroot],
 [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
   [Search for dependent libraries within DIR (or the compiler's sysroot
@@ -1465,7 +1463,7 @@ case $with_sysroot in #(
    fi
    ;; #(
  /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"`
    ;; #(
  no|'')
    ;; #(
@@ -1495,7 +1493,7 @@ ia64-*-hpux*)
   # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *ELF-32*)
 	HPUX_IA64_MODE=32
 	;;
@@ -1512,7 +1510,7 @@ ia64-*-hpux*)
   echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     if test yes = "$lt_cv_prog_gnu_ld"; then
-      case `/usr/bin/file conftest.$ac_objext` in
+      case `$FILECMD conftest.$ac_objext` in
 	*32-bit*)
 	  LD="${LD-ld} -melf32bsmip"
 	  ;;
@@ -1524,7 +1522,7 @@ ia64-*-hpux*)
 	;;
       esac
     else
-      case `/usr/bin/file conftest.$ac_objext` in
+      case `$FILECMD conftest.$ac_objext` in
 	*32-bit*)
 	  LD="${LD-ld} -32"
 	  ;;
@@ -1546,7 +1544,7 @@ mips64*-*linux*)
   echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *32-bit*)
 	emul="${emul}32"
 	;;
@@ -1554,7 +1552,7 @@ mips64*-*linux*)
 	emul="${emul}64"
 	;;
     esac
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *MSB*)
 	emul="${emul}btsmip"
 	;;
@@ -1562,7 +1560,7 @@ mips64*-*linux*)
 	emul="${emul}ltsmip"
 	;;
     esac
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *N32*)
 	emul="${emul}n32"
 	;;
@@ -1582,14 +1580,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # not appear in the list.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
+    case `$FILECMD conftest.o` in
       *32-bit*)
 	case $host in
 	  x86_64-*kfreebsd*-gnu)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    case `/usr/bin/file conftest.o` in
+	    case `$FILECMD conftest.o` in
 	      *x86-64*)
 		LD="${LD-ld} -m elf32_x86_64"
 		;;
@@ -1657,7 +1655,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
+    case `$FILECMD conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
       yes*)
@@ -1930,7 +1928,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+  bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1973,7 +1971,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
   sysv5* | sco5v6* | sysv4.2uw2*)
     kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
     if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+      lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[	 ]]//'`
     else
       lt_cv_sys_max_cmd_len=32768
     fi
@@ -2774,7 +2772,7 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
 m4_if([$1], [],[
       sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
@@ -2784,7 +2782,7 @@ m4_if([$1], [],[
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
       ;;
     esac
     dynamic_linker='Win32 ld.exe'
@@ -2810,7 +2808,7 @@ m4_if([$1], [],[
       done
       IFS=$lt_save_ifs
       # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
       ;;
     cygwin*)
       # Convert to unix form, then to dos form, then back to unix form
@@ -2880,7 +2878,7 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
   if test -x /usr/bin/objformat; then
@@ -3679,7 +3677,7 @@ beos*)
 
 bsdi[[45]]*)
   lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_cmd='$FILECMD -L'
   lt_cv_file_magic_test_file=/shlib/libc.so
   ;;
 
@@ -3713,14 +3711,14 @@ darwin* | rhapsody*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
       # Not sure whether the presence of OpenBSD here was a mistake.
       # Let's accept both of them until this is cleared up.
       lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_cmd=$FILECMD
       lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
       ;;
     esac
@@ -3734,7 +3732,7 @@ haiku*)
   ;;
 
 hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_cmd=$FILECMD
   case $host_cpu in
   ia64*)
     lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
@@ -3781,7 +3779,7 @@ netbsd*)
 
 newos6*)
   lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_cmd=$FILECMD
   lt_cv_file_magic_test_file=/usr/lib/libnls.so
   ;;
 
@@ -3908,13 +3906,13 @@ else
 	mingw*) lt_bad_file=conftest.nm/nofile ;;
 	*) lt_bad_file=/dev/null ;;
 	esac
-	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in
 	*$lt_bad_file* | *'Invalid file or object type'*)
 	  lt_cv_path_NM="$tmp_nm -B"
 	  break 2
 	  ;;
 	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in
 	  */dev/null*)
 	    lt_cv_path_NM="$tmp_nm -p"
 	    break 2
@@ -3940,7 +3938,7 @@ else
     # Let the user override the test.
   else
     AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in
     *COFF*)
       DUMPBIN="$DUMPBIN -symbols -headers"
       ;;
@@ -4180,7 +4178,7 @@ esac
 
 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
   # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'"
   # Adjust the below global symbol transforms to fixup imported variables.
   lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
   lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
@@ -4198,20 +4196,20 @@ fi
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+lt_cv_sys_global_symbol_to_cdecl="$SED -n"\
 $lt_cdecl_hook\
 " -e 's/^T .* \(.*\)$/extern int \1();/p'"\
 " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\
 $lt_c_name_hook\
 " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
 " -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
 
 # Transform an extracted symbol line into symbol name with lib prefix and
 # symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\
 $lt_c_name_lib_hook\
 " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
 " -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
@@ -4253,9 +4251,9 @@ for ac_symprfx in "" "_"; do
 "     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx]"
   else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+    lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -4542,7 +4540,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      freebsd* | dragonfly*)
+      freebsd* | dragonfly* | midnightbsd*)
 	# FreeBSD uses GNU C++
 	;;
       hpux9* | hpux10* | hpux11*)
@@ -4625,7 +4623,7 @@ m4_if([$1], [CXX], [
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
 	    ;;
 	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
+	    case `$CC -V 2>&1 | $SED 5q` in
 	    *Sun\ C*)
 	      # Sun C++ 5.9
 	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4961,7 +4959,7 @@ m4_if([$1], [CXX], [
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
 	;;
       *)
-	case `$CC -V 2>&1 | sed 5q` in
+	case `$CC -V 2>&1 | $SED 5q` in
 	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -5269,7 +5267,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
       _LT_TAGVAR(whole_archive_flag_spec, $1)=
     fi
     supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+    case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in
       *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -5396,7 +5394,7 @@ _LT_EOF
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
     gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
@@ -5439,7 +5437,7 @@ _LT_EOF
 	  _LT_TAGVAR(compiler_needs_object, $1)=yes
 	  ;;
 	esac
-	case `$CC -V 2>&1 | sed 5q` in
+	case `$CC -V 2>&1 | $SED 5q` in
 	*Sun\ C*)			# Sun C 5.9
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  _LT_TAGVAR(compiler_needs_object, $1)=yes
@@ -5451,7 +5449,7 @@ _LT_EOF
 
         if test yes = "$supports_anon_versioning"; then
           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
             echo "local: *; };" >> $output_objdir/$libname.ver~
             $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
@@ -5467,7 +5465,7 @@ _LT_EOF
 	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test yes = "$supports_anon_versioning"; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
               echo "local: *; };" >> $output_objdir/$libname.ver~
               $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
 	  fi
@@ -5876,7 +5874,7 @@ _LT_EOF
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
+    freebsd* | dragonfly* | midnightbsd*)
       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       _LT_TAGVAR(hardcode_direct, $1)=yes
@@ -6984,7 +6982,7 @@ if test yes != "$_lt_caught_CXX_error"; then
         _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         ;;
 
-      freebsd* | dragonfly*)
+      freebsd* | dragonfly* | midnightbsd*)
         # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
         # conventions
         _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -7121,7 +7119,7 @@ if test yes != "$_lt_caught_CXX_error"; then
 	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
 	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
 	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
 	;;
       irix5* | irix6*)
         case $cc_basename in
@@ -7261,13 +7259,13 @@ if test yes != "$_lt_caught_CXX_error"; then
 	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 	    if test yes = "$supports_anon_versioning"; then
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
                 echo "local: *; };" >> $output_objdir/$libname.ver~
                 $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
 	    fi
 	    ;;
 	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
+	    case `$CC -V 2>&1 | $SED 5q` in
 	    *Sun\ C*)
 	      # Sun C++ 5.9
 	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
@@ -8405,6 +8403,14 @@ _LT_DECL([], [DLLTOOL], [1], [DLL creation program])
 AC_SUBST([DLLTOOL])
 ])
 
+# _LT_DECL_FILECMD
+# ----------------
+# Check for a file(cmd) program that can be used to detect file type and magic
+m4_defun([_LT_DECL_FILECMD],
+[AC_CHECK_TOOL([FILECMD], [file], [:])
+_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types])
+])# _LD_DECL_FILECMD
+
 # _LT_DECL_SED
 # ------------
 # Check for a fully-functional sed program, that truncates
@@ -9078,6 +9084,15 @@ AC_DEFUN([XDT_CHECK_PACKAGE],
     AC_SUBST([$1_LIBS])
     AC_SUBST([$1_REQUIRED_VERSION])
 
+    if test x"$1" = x"GLIB"; then
+      dnl Use GLib structured logging, see https://docs.gtk.org/glib/logging.html
+      dnl XFCE apps&libraries can override this setting after XDT_CHECK_PACKAGE(GLIB)
+      dnl using AC_DEFINE.
+      dnl Note that it requires GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 to work
+      dnl properly in GLib logging macros (not documented, see glib/gmessages.h).
+      AC_DEFINE(G_LOG_USE_STRUCTURED, 1, [Use GLib structured logging])
+    fi
+
     ifelse([$4], , , [$4])
   elif $PKG_CONFIG --exists "$2" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "$2"`


=====================================
config.h.in
=====================================
@@ -9,12 +9,15 @@
 /* Name of default gettext domain */
 #undef GETTEXT_PACKAGE
 
-/* Warn when using post 2_44 APIs */
+/* Warn when using post 2_46 APIs */
 #undef GLIB_VERSION_MAX_ALLOWED
 
-/* Don't warn about post 2_44 deprecations */
+/* Don't warn about post 2_46 deprecations */
 #undef GLIB_VERSION_MIN_REQUIRED
 
+/* Use GLib structured logging */
+#undef G_LOG_USE_STRUCTURED
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 


=====================================
configure
=====================================
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for ristretto 0.12.2.
+# Generated by GNU Autoconf 2.71 for ristretto 0.12.3.
 #
 # Copyright (c) 2006-2022
 #         The Xfce development team. All rights reserved.
@@ -613,8 +613,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='ristretto'
 PACKAGE_TARNAME='ristretto'
-PACKAGE_VERSION='0.12.2'
-PACKAGE_STRING='ristretto 0.12.2'
+PACKAGE_VERSION='0.12.3'
+PACKAGE_STRING='ristretto 0.12.3'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1407,7 +1407,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ristretto 0.12.2 to adapt to many kinds of systems.
+\`configure' configures ristretto 0.12.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1482,7 +1482,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ristretto 0.12.2:";;
+     short | recursive ) echo "Configuration of ristretto 0.12.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1598,7 +1598,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ristretto configure 0.12.2
+ristretto configure 0.12.3
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1859,7 +1859,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ristretto $as_me 0.12.2, which was
+It was created by ristretto $as_me 0.12.3, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -2618,7 +2618,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-RISTRETTO_VERSION=0.12.2
+RISTRETTO_VERSION=0.12.3
 am__api_version='1.16'
 
 
@@ -3133,7 +3133,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='ristretto'
- VERSION='0.12.2'
+ VERSION='0.12.3'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -6529,10 +6529,10 @@ printf "%s\n" "$localedir" >&6; }
 
 
 
-printf "%s\n" "#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_44" >>confdefs.h
+printf "%s\n" "#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_46" >>confdefs.h
 
 
-printf "%s\n" "#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_44" >>confdefs.h
+printf "%s\n" "#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_46" >>confdefs.h
 
 
 
@@ -6684,9 +6684,9 @@ fi
 
 
 
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glib-2.0 >= 2.44.0" >&5
-printf %s "checking for glib-2.0 >= 2.44.0... " >&6; }
-  if $PKG_CONFIG "--atleast-version=2.44.0" "glib-2.0" >/dev/null 2>&1; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glib-2.0 >= 2.46.0" >&5
+printf %s "checking for glib-2.0 >= 2.46.0... " >&6; }
+  if $PKG_CONFIG "--atleast-version=2.46.0" "glib-2.0" >/dev/null 2>&1; then
     GLIB_VERSION=`$PKG_CONFIG --modversion "glib-2.0"`
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GLIB_VERSION" >&5
 printf "%s\n" "$GLIB_VERSION" >&6; }
@@ -6703,13 +6703,19 @@ printf %s "checking GLIB_LIBS... " >&6; }
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GLIB_LIBS" >&5
 printf "%s\n" "$GLIB_LIBS" >&6; }
 
-    GLIB_REQUIRED_VERSION=2.44.0
+    GLIB_REQUIRED_VERSION=2.46.0
 
 
 
 
 
 
+    if test x"GLIB" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
 
   elif $PKG_CONFIG --exists "glib-2.0" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "glib-2.0"`
@@ -6719,7 +6725,7 @@ printf "%s\n" "found, but $xdt_cv_version" >&6; }
 
       echo "*** The required package glib-2.0 was found on your system,"
       echo "*** but the installed version ($xdt_cv_version) is too old."
-      echo "*** Please upgrade glib-2.0 to atleast version 2.44.0, or adjust"
+      echo "*** Please upgrade glib-2.0 to atleast version 2.46.0, or adjust"
       echo "*** the PKG_CONFIG_PATH environment variable if you installed"
       echo "*** the new version of the package in a nonstandard prefix so"
       echo "*** pkg-config is able to find it."
@@ -6731,7 +6737,7 @@ printf "%s\n" "not found" >&6; }
 
 
       echo "*** The required package glib-2.0 was not found on your system."
-      echo "*** Please install glib-2.0 (atleast version 2.44.0) or adjust"
+      echo "*** Please install glib-2.0 (atleast version 2.46.0) or adjust"
       echo "*** the PKG_CONFIG_PATH environment variable if you"
       echo "*** installed the package in a nonstandard prefix so that"
       echo "*** pkg-config is able to find it."
@@ -6915,6 +6921,12 @@ printf "%s\n" "$GTK_LIBS" >&6; }
 
 
 
+    if test x"GTK" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
 
   elif $PKG_CONFIG --exists "gtk+-3.0" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "gtk+-3.0"`
@@ -7121,6 +7133,12 @@ printf "%s\n" "$LIBXFCE4UI_LIBS" >&6; }
 
 
 
+    if test x"LIBXFCE4UI" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
 
   elif $PKG_CONFIG --exists "libxfce4ui-2" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "libxfce4ui-2"`
@@ -7326,6 +7344,12 @@ printf "%s\n" "$LIBXFCE4UTIL_LIBS" >&6; }
 
 
 
+    if test x"LIBXFCE4UTIL" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
 
   elif $PKG_CONFIG --exists "libxfce4util-1.0" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "libxfce4util-1.0"`
@@ -7531,6 +7555,12 @@ printf "%s\n" "$XFCONF_LIBS" >&6; }
 
 
 
+    if test x"XFCONF" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
 
   elif $PKG_CONFIG --exists "libxfconf-0" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "libxfconf-0"`
@@ -7737,6 +7767,12 @@ printf "%s\n" "$LIBEXIF_LIBS" >&6; }
 
 
 
+    if test x"LIBEXIF" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
 
   elif $PKG_CONFIG --exists "libexif" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "libexif"`
@@ -7942,6 +7978,12 @@ printf "%s\n" "$CAIRO_LIBS" >&6; }
 
 
 
+    if test x"CAIRO" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
 
   elif $PKG_CONFIG --exists "cairo" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "cairo"`
@@ -9837,7 +9879,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ristretto $as_me 0.12.2, which was
+This file was extended by ristretto $as_me 0.12.3, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -9905,7 +9947,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-ristretto config.status 0.12.2
+ristretto config.status 0.12.3
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 


=====================================
configure.ac
=====================================
@@ -16,8 +16,8 @@ dnl *** Version information ***
 dnl ***************************
 m4_define([ristretto_version_major], [0])
 m4_define([ristretto_version_minor], [12])
-m4_define([ristretto_version_micro], [2])
-m4_define([ristretto_version_build], [r3cad2c06])
+m4_define([ristretto_version_micro], [3])
+m4_define([ristretto_version_build], [r5aade5c6])
 m4_define([ristretto_version_tag], []) # Leave empty for releases
 m4_define([ristretto_version], [ristretto_version_major().ristretto_version_minor().ristretto_version_micro()ifelse(ristretto_version_tag(), [], [], [ristretto_version_tag()-ristretto_version_build()])])
 
@@ -55,9 +55,9 @@ IT_PROG_INTLTOOL([0.35], [no-xml])
 dnl Check for i18n support
 XDT_I18N([])
 
-AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, GLIB_VERSION_2_44, Warn when using post 2_44 APIs)
-AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, GLIB_VERSION_2_44, Don't warn about post 2_44 deprecations)
-XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.44.0])
+AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, GLIB_VERSION_2_46, Warn when using post 2_46 APIs)
+AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, GLIB_VERSION_2_46, Don't warn about post 2_46 deprecations)
+XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.46.0])
 XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.22.0])
 
 XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.16.0])


=====================================
org.xfce.ristretto.appdata.xml.in
=====================================
@@ -36,6 +36,7 @@
   <launchable type="desktop-id">org.xfce.ristretto.desktop</launchable>
   <content_rating type="oars-1.1"/>
   <releases>
+    <release date="2022-07-09" version="0.12.3"/>
     <release date="2022-01-14" version="0.12.2"/>
     <release date="2021-11-26" version="0.12.1"/>
     <release date="2021-10-11" version="0.12.0"/>


=====================================
po/da.po
=====================================
@@ -4,14 +4,14 @@
 # 
 # Translators:
 # Per Kongstad <p_kongstad at op.pl>, 2008-2009
-# scootergrisen, 2016-2021
+# scootergrisen, 2016-2022
 msgid ""
 msgstr ""
 "Project-Id-Version: Xfce Apps\n"
 "Report-Msgid-Bugs-To: xfce-i18n at xfce.org\n"
 "POT-Creation-Date: 2021-12-10 12:50+0100\n"
-"PO-Revision-Date: 2021-12-10 11:50+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2013-07-03 18:30+0000\n"
+"Last-Translator: scootergrisen, 2016-2022\n"
 "Language-Team: Danish (http://www.transifex.com/xfce/xfce-apps/language/da/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -54,17 +54,17 @@ msgstr "Kunne ikke gemme fil"
 
 #: ../src/main_window.c:42
 msgid "Some files could not be opened: see the text logs for details"
-msgstr ""
+msgstr "Nogle filer kunne ikke åbnes: se tekstloggene for detaljer"
 
 #: ../src/main_window.c:43
 #, c-format
 msgid "An error occurred when deleting image '%s' from disk"
-msgstr ""
+msgstr "Der opstod en fejl under sletning af billedet '%s' fra disken"
 
 #: ../src/main_window.c:44
 #, c-format
 msgid "An error occurred when sending image '%s' to trash"
-msgstr ""
+msgstr "Der opstod en fejl under sending af billedet '%s' til papirkurven"
 
 #: ../src/main_window.c:329
 msgid "_File"
@@ -545,7 +545,7 @@ msgstr "Ristretto er en billedfremviser til Xfce-skrivebordsmiljøet."
 
 #: ../src/main_window.c:2929
 msgid "translator-credits"
-msgstr "Per Kongstad\n\nDansk-gruppen\nWebsted http://dansk-gruppen.dk\nE-mail <dansk at dansk-gruppen.dk>"
+msgstr "Per Kongstad"
 
 #: ../src/main_window.c:3479
 msgid "Open image"
@@ -870,19 +870,19 @@ msgstr "%s - Egenskaber"
 
 #: ../src/image_list.c:32
 msgid "No supported image type found in the directory"
-msgstr ""
+msgstr "Ingen understøttede billedtype fundet i mappen"
 
 #: ../src/image_list.c:33
 msgid "Directory only partially loaded"
-msgstr ""
+msgstr "Mappe kun delvist indlæst"
 
 #: ../src/image_list.c:34
 msgid "Could not load directory"
-msgstr ""
+msgstr "Kunne ikke indlæse mappe"
 
 #: ../src/image_list.c:35
 msgid "Unsupported mime type"
-msgstr ""
+msgstr "Ikke-understøttet MIME-type"
 
 #: ../src/thumbnailer.c:292
 msgid ""


=====================================
po/el.po
=====================================
@@ -3,6 +3,7 @@
 # This file is distributed under the same license as the PACKAGE package..
 # 
 # Translators:
+# Ápo. <apostolos.papadimitriu at gmail.com>, 2022
 # Ápo. <apostolos.papadimitriu at gmail.com>, 2016
 # Ápo. <apostolos.papadimitriu at gmail.com>, 2017
 # Efstathios Iosifidis <iosifidis at opensuse.org>, 2012
@@ -16,8 +17,8 @@ msgstr ""
 "Project-Id-Version: Xfce Apps\n"
 "Report-Msgid-Bugs-To: xfce-i18n at xfce.org\n"
 "POT-Creation-Date: 2021-12-10 12:50+0100\n"
-"PO-Revision-Date: 2021-12-10 11:50+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2013-07-03 18:30+0000\n"
+"Last-Translator: Ápo. <apostolos.papadimitriu at gmail.com>, 2022\n"
 "Language-Team: Greek (http://www.transifex.com/xfce/xfce-apps/language/el/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -60,17 +61,17 @@ msgstr "Αδυναμία αποθήκευσης αρχείου"
 
 #: ../src/main_window.c:42
 msgid "Some files could not be opened: see the text logs for details"
-msgstr ""
+msgstr "Αδυναμία ανοίγματος ορισμένων αρχείων: δείτε τις καταγραφές για λεπτομέρειες"
 
 #: ../src/main_window.c:43
 #, c-format
 msgid "An error occurred when deleting image '%s' from disk"
-msgstr ""
+msgstr "Σφάλμα κατά την διαγραφή της εικόνας '%s' από το δίσκο"
 
 #: ../src/main_window.c:44
 #, c-format
 msgid "An error occurred when sending image '%s' to trash"
-msgstr ""
+msgstr "Σφάλμα κατά την αποστολή της εικόνας '%s' στα απορρίματα"
 
 #: ../src/main_window.c:329
 msgid "_File"
@@ -145,7 +146,7 @@ msgstr "Έξοδος από το ristretto"
 
 #: ../src/main_window.c:378
 msgid "_Copy image to clipboard"
-msgstr ""
+msgstr "_Αντιγραφή εικόνας στο πρόχειρο"
 
 #: ../src/main_window.c:384
 msgid "_Open with"
@@ -257,7 +258,7 @@ msgstr "Μεγένθυση στο 100%"
 
 #: ../src/main_window.c:471
 msgid "_Default Zoom"
-msgstr ""
+msgstr "_Προεπιλεγμένη μεγέθυνση"
 
 #: ../src/main_window.c:478
 msgid "_Rotation"
@@ -458,7 +459,7 @@ msgstr "Πολύ μεγάλο"
 #. Icon-name
 #: ../src/main_window.c:736
 msgid "_Smart Zoom"
-msgstr ""
+msgstr "_Έξυπνη Μεγέθυνση"
 
 #: ../src/main_window.c:874
 msgid "Images"
@@ -876,19 +877,19 @@ msgstr "%s - Ιδιότητες"
 
 #: ../src/image_list.c:32
 msgid "No supported image type found in the directory"
-msgstr ""
+msgstr "Δεν βρέθηκε υποστηριζόμενος τύπος αρχείου εικόνας στον κατάλογο"
 
 #: ../src/image_list.c:33
 msgid "Directory only partially loaded"
-msgstr ""
+msgstr "Μερική φόρτωση καταλόγου"
 
 #: ../src/image_list.c:34
 msgid "Could not load directory"
-msgstr ""
+msgstr "Αδυναμία φόρτωσης καταλόγου"
 
 #: ../src/image_list.c:35
 msgid "Unsupported mime type"
-msgstr ""
+msgstr "Μη υποστηριζόμενος τύπος mime"
 
 #: ../src/thumbnailer.c:292
 msgid ""
@@ -950,11 +951,11 @@ msgstr "Δείτε τις εικόνες σας εύκολα"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:1
 msgid "Ristretto"
-msgstr ""
+msgstr "Ristretto"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:2
 msgid "Fast and lightweight image viewer"
-msgstr ""
+msgstr "Γρήγορο και ελαφρύ πρόγραμμα αναπαραγωγής εικόνων"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:4
 msgid ""


=====================================
po/ko.po
=====================================
@@ -4,14 +4,14 @@
 # 
 # Translators:
 # 박정규(Jung-Kyu Park) <bagjunggyu at gmail.com>, 2016-2017
-# Seong-ho Cho <darkcircle.0426 at gmail.com>, 2012-2013,2015-2016,2019
+# Seong-ho Cho <darkcircle.0426 at gmail.com>, 2012-2013,2015-2016,2019,2022
 msgid ""
 msgstr ""
 "Project-Id-Version: Xfce Apps\n"
 "Report-Msgid-Bugs-To: xfce-i18n at xfce.org\n"
 "POT-Creation-Date: 2021-12-10 12:50+0100\n"
-"PO-Revision-Date: 2021-12-10 11:50+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2013-07-03 18:30+0000\n"
+"Last-Translator: Seong-ho Cho <darkcircle.0426 at gmail.com>, 2012-2013,2015-2016,2019,2022\n"
 "Language-Team: Korean (http://www.transifex.com/xfce/xfce-apps/language/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -54,17 +54,17 @@ msgstr "파일을 저장할 수 없습니다"
 
 #: ../src/main_window.c:42
 msgid "Some files could not be opened: see the text logs for details"
-msgstr ""
+msgstr "일부 파일을 열 수 없습니다: 자세한 내용은 텍스트 로그를 살펴보십시오"
 
 #: ../src/main_window.c:43
 #, c-format
 msgid "An error occurred when deleting image '%s' from disk"
-msgstr ""
+msgstr "디스크에서 '%s' 이미지 삭제 중 오류가 나타났습니다"
 
 #: ../src/main_window.c:44
 #, c-format
 msgid "An error occurred when sending image '%s' to trash"
-msgstr ""
+msgstr "휴지통에 '%s' 그림을 보내는 중 오류가 나타났습니다"
 
 #: ../src/main_window.c:329
 msgid "_File"
@@ -139,7 +139,7 @@ msgstr "리스트레또 나가기"
 
 #: ../src/main_window.c:378
 msgid "_Copy image to clipboard"
-msgstr ""
+msgstr "그림을 클립보드에 복사(_C)"
 
 #: ../src/main_window.c:384
 msgid "_Open with"
@@ -251,7 +251,7 @@ msgstr "원래 크기"
 
 #: ../src/main_window.c:471
 msgid "_Default Zoom"
-msgstr ""
+msgstr "기본 확대율(_D)"
 
 #: ../src/main_window.c:478
 msgid "_Rotation"
@@ -452,7 +452,7 @@ msgstr "매우 크게"
 #. Icon-name
 #: ../src/main_window.c:736
 msgid "_Smart Zoom"
-msgstr ""
+msgstr "지능형 확대(_S)"
 
 #: ../src/main_window.c:874
 msgid "Images"
@@ -870,19 +870,19 @@ msgstr "%s - 속성"
 
 #: ../src/image_list.c:32
 msgid "No supported image type found in the directory"
-msgstr ""
+msgstr "디렉터리에 지원하지 않는 그림 형식이 있습니다"
 
 #: ../src/image_list.c:33
 msgid "Directory only partially loaded"
-msgstr ""
+msgstr "디렉터리에서 일부만 불러왔습니다"
 
 #: ../src/image_list.c:34
 msgid "Could not load directory"
-msgstr ""
+msgstr "디렉터리 내용을 불러올 수 없습니다"
 
 #: ../src/image_list.c:35
 msgid "Unsupported mime type"
-msgstr ""
+msgstr "지원하지 않는 MIME 형식"
 
 #: ../src/thumbnailer.c:292
 msgid ""
@@ -944,11 +944,11 @@ msgstr "그림을 쉽게 봅니다"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:1
 msgid "Ristretto"
-msgstr ""
+msgstr "리스트레또"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:2
 msgid "Fast and lightweight image viewer"
-msgstr ""
+msgstr "빠르고 가벼운 그림 보기 프로그램"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:4
 msgid ""


=====================================
po/ms.po
=====================================
@@ -3,15 +3,15 @@
 # This file is distributed under the same license as the PACKAGE package..
 # 
 # Translators:
-# abuyop <abuyop at gmail.com>, 2014-2017,2019
+# abuyop <abuyop at gmail.com>, 2014-2017,2019,2022
 # Puretech <terjemah.puretech at gmail.com>, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: Xfce Apps\n"
 "Report-Msgid-Bugs-To: xfce-i18n at xfce.org\n"
 "POT-Creation-Date: 2021-12-10 12:50+0100\n"
-"PO-Revision-Date: 2021-12-10 11:50+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2013-07-03 18:30+0000\n"
+"Last-Translator: abuyop <abuyop at gmail.com>, 2014-2017,2019,2022\n"
 "Language-Team: Malay (http://www.transifex.com/xfce/xfce-apps/language/ms/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -54,17 +54,17 @@ msgstr "Tidak dapat simpan fail"
 
 #: ../src/main_window.c:42
 msgid "Some files could not be opened: see the text logs for details"
-msgstr ""
+msgstr "Beberapa fail gagal dibuka; sila rujuk log teks untuk perincian"
 
 #: ../src/main_window.c:43
 #, c-format
 msgid "An error occurred when deleting image '%s' from disk"
-msgstr ""
+msgstr "Satu ralat berlaku ketika memadam imej '%s' daripada cakera"
 
 #: ../src/main_window.c:44
 #, c-format
 msgid "An error occurred when sending image '%s' to trash"
-msgstr ""
+msgstr "Satu ralat berlaku ketika menghantar imej '%s' ke dalam tong sampah"
 
 #: ../src/main_window.c:329
 msgid "_File"
@@ -139,7 +139,7 @@ msgstr "Keluar dari Ristretto"
 
 #: ../src/main_window.c:378
 msgid "_Copy image to clipboard"
-msgstr ""
+msgstr "Sa_lin imej ke papan keratan"
 
 #: ../src/main_window.c:384
 msgid "_Open with"
@@ -251,7 +251,7 @@ msgstr "Zum ke 100%"
 
 #: ../src/main_window.c:471
 msgid "_Default Zoom"
-msgstr ""
+msgstr "Zum _Lalai"
 
 #: ../src/main_window.c:478
 msgid "_Rotation"
@@ -452,7 +452,7 @@ msgstr "Sangat Besar"
 #. Icon-name
 #: ../src/main_window.c:736
 msgid "_Smart Zoom"
-msgstr ""
+msgstr "Zum _Pintar"
 
 #: ../src/main_window.c:874
 msgid "Images"
@@ -870,19 +870,19 @@ msgstr "%s - Sifat"
 
 #: ../src/image_list.c:32
 msgid "No supported image type found in the directory"
-msgstr ""
+msgstr "Tiada jenis imej disokong ditemui dalam direktori"
 
 #: ../src/image_list.c:33
 msgid "Directory only partially loaded"
-msgstr ""
+msgstr "Direktori hanya dimuatkan separa"
 
 #: ../src/image_list.c:34
 msgid "Could not load directory"
-msgstr ""
+msgstr "Tidak dapat memuatkan direktori"
 
 #: ../src/image_list.c:35
 msgid "Unsupported mime type"
-msgstr ""
+msgstr "Jenis mime tidak disokong"
 
 #: ../src/thumbnailer.c:292
 msgid ""
@@ -944,11 +944,11 @@ msgstr "Lihat imej anda dengan mudah"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:1
 msgid "Ristretto"
-msgstr ""
+msgstr "Ristretto"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:2
 msgid "Fast and lightweight image viewer"
-msgstr ""
+msgstr "Pelihat imej yang ringan dan pantas"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:4
 msgid ""


=====================================
po/pt_BR.po
=====================================
@@ -6,6 +6,7 @@
 # Andre Miranda <andre42m at gmail.com>, 2019
 # Andre Miranda <andre42m at gmail.com>, 2016-2017
 # Andre Miranda <andre42m at gmail.com>, 2015
+# C. E., 2022
 # Frederico Schardong <frede_sch at gmail.com>, 2011
 # Lucas Wilm <lucaswilm at gmail.com>, 2021
 # Michael Martins <michaelfm21 at gmail.com>, 2019
@@ -15,8 +16,8 @@ msgstr ""
 "Project-Id-Version: Xfce Apps\n"
 "Report-Msgid-Bugs-To: xfce-i18n at xfce.org\n"
 "POT-Creation-Date: 2021-12-10 12:50+0100\n"
-"PO-Revision-Date: 2021-12-10 11:50+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2022-03-08 01:02+0000\n"
+"Last-Translator: Michael Martins <michaelfm21 at gmail.com>\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/xfce/xfce-apps/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -457,7 +458,7 @@ msgstr "Muito grande"
 #. Icon-name
 #: ../src/main_window.c:736
 msgid "_Smart Zoom"
-msgstr ""
+msgstr "_Smart Zoom"
 
 #: ../src/main_window.c:874
 msgid "Images"
@@ -949,7 +950,7 @@ msgstr "Veja suas imagens facilmente"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:1
 msgid "Ristretto"
-msgstr ""
+msgstr "Ristretto"
 
 #: ../org.xfce.ristretto.appdata.xml.in.h:2
 msgid "Fast and lightweight image viewer"


=====================================
po/tr.po
=====================================
@@ -6,7 +6,7 @@
 # Ali Polatel <ali.polatel at ozguryazilim.com.tr>, 2015
 # Ayhan YALÇINSOY <ayhanyalcinsoy at gmail.com>, 2012
 # Demiray Muhterem <mdemiray at msn.com>, 2019,2021
-# Emin Tufan Çetin <etcetin at gmail.com>, 2020-2021
+# Emin Tufan Çetin <etcetin at gmail.com>, 2020-2022
 # Emin Tufan Çetin <etcetin at gmail.com>, 2020
 # Gökmen Görgen <gkmngrgn at gmail.com>, 2008
 # Necdet Yücel <necdetyucel at gmail.com>, 2015-2017
@@ -18,8 +18,8 @@ msgstr ""
 "Project-Id-Version: Xfce Apps\n"
 "Report-Msgid-Bugs-To: xfce-i18n at xfce.org\n"
 "POT-Creation-Date: 2021-12-10 12:50+0100\n"
-"PO-Revision-Date: 2021-12-10 11:50+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2013-07-03 18:30+0000\n"
+"Last-Translator: Emin Tufan Çetin <etcetin at gmail.com>, 2020-2022\n"
 "Language-Team: Turkish (http://www.transifex.com/xfce/xfce-apps/language/tr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -72,7 +72,7 @@ msgstr "Diskten '%s' görüntüsü silinirken bir hata oluştu"
 #: ../src/main_window.c:44
 #, c-format
 msgid "An error occurred when sending image '%s' to trash"
-msgstr "'%s' resmi çöp kutusuna gönderilirken bir hata oluştu "
+msgstr "'%s' resmi çöp kutusuna gönderilirken hata oluştu "
 
 #: ../src/main_window.c:329
 msgid "_File"
@@ -249,7 +249,7 @@ msgstr "Pencereye uydur"
 #. Icon-name
 #: ../src/main_window.c:464 ../src/main_window.c:748
 msgid "_Normal Size"
-msgstr "_Normal boyut"
+msgstr "_Olağan boyut"
 
 #. Label-text
 #. Keyboard shortcut
@@ -259,7 +259,7 @@ msgstr "%100'e yaklaştır."
 
 #: ../src/main_window.c:471
 msgid "_Default Zoom"
-msgstr "_Varsayılan Yakınlaştırma"
+msgstr "Ö_ntanımlı Yakınlaştırma"
 
 #: ../src/main_window.c:478
 msgid "_Rotation"
@@ -443,7 +443,7 @@ msgstr "Küçük"
 
 #: ../src/main_window.c:707
 msgid "Normal"
-msgstr "_Normal"
+msgstr "_Olağan"
 
 #: ../src/main_window.c:713
 msgid "Large"


=====================================
po/zh_CN.po
=====================================
@@ -7,15 +7,15 @@
 # Hunt Xu <mhuntxu at gmail.com>, 2008-2010,2016
 # Mingcong Bai <jeffbai at aosc.xyz>, 2016-2017
 # wuli <wurisky at gmail.com>, 2008
-# 玉堂白鹤 <yjwork at qq.com>, 2015-2016,2019-2021
+# 玉堂白鹤 <yjwork at qq.com>, 2015-2016,2019-2022
 # Mingcong Bai <jeffbai at aosc.xyz>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: Xfce Apps\n"
 "Report-Msgid-Bugs-To: xfce-i18n at xfce.org\n"
 "POT-Creation-Date: 2021-12-10 12:50+0100\n"
-"PO-Revision-Date: 2021-12-10 11:50+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2022-03-01 04:51+0000\n"
+"Last-Translator: 玉堂白鹤 <yjwork at qq.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/xfce/xfce-apps/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -850,7 +850,7 @@ msgstr "<b>大小:</b>"
 
 #: ../src/properties_dialog.c:165
 msgid "General"
-msgstr "一般"
+msgstr "通用"
 
 #: ../src/properties_dialog.c:171
 msgid "Image"


=====================================
src/file.c
=====================================
@@ -567,7 +567,12 @@ rstto_file_get_thumbnail (RsttoFile *r_file,
     const gchar *thumbnail_path;
     guint n_pixels;
 
+    /* get the flavor, trying to fall back on lower qualities if necessary */
     flavor = rstto_util_get_thumbnail_flavor (size);
+    while (r_file->priv->thumbnail_states[flavor] == RSTTO_THUMBNAIL_STATE_ERROR
+           && flavor > RSTTO_THUMBNAIL_FLAVOR_NORMAL)
+        flavor--;
+
     switch (r_file->priv->thumbnail_states[flavor])
     {
         case RSTTO_THUMBNAIL_STATE_PROCESSED:
@@ -616,6 +621,9 @@ rstto_file_get_thumbnail (RsttoFile *r_file,
         return NULL;
     }
 
+    if (r_file->priv->pixbufs[size] != NULL)
+        g_object_unref (r_file->priv->pixbufs[size]);
+
     n_pixels = rstto_util_get_thumbnail_n_pixels (size);
     r_file->priv->pixbufs[size] =
         gdk_pixbuf_new_from_file_at_scale (thumbnail_path, n_pixels, n_pixels, TRUE, &error);


=====================================
src/image_list.c
=====================================
@@ -239,7 +239,8 @@ rstto_image_list_init (RsttoImageList *image_list)
 
     g_signal_connect (image_list->priv->thumbnailer, "ready",
                       G_CALLBACK (cb_rstto_thumbnailer_ready), image_list);
-
+    g_signal_connect (image_list->priv->thumbnailer, "error",
+                      G_CALLBACK (cb_rstto_thumbnailer_ready), image_list);
 }
 
 static void
@@ -322,6 +323,7 @@ rstto_image_list_add_file (RsttoImageList *image_list,
                            RsttoFile *r_file,
                            GError **error)
 {
+    RsttoImageListIter *r_iter;
     GtkTreePath *path;
     GtkTreeIter t_iter;
     GFileMonitor *monitor;
@@ -346,9 +348,15 @@ rstto_image_list_add_file (RsttoImageList *image_list,
 
     if (image_list->priv->dir_monitor == NULL)
     {
-        monitor = g_file_monitor_file (rstto_file_get_file (r_file), G_FILE_MONITOR_NONE, NULL, NULL);
-        g_signal_connect (monitor, "changed", G_CALLBACK (cb_file_monitor_changed), image_list);
-        image_list->priv->image_monitors = g_list_prepend (image_list->priv->image_monitors, monitor);
+        monitor = g_file_monitor_file (rstto_file_get_file (r_file),
+                                       G_FILE_MONITOR_WATCH_MOVES, NULL, NULL);
+        if (monitor != NULL)
+        {
+            g_signal_connect (monitor, "changed",
+                              G_CALLBACK (cb_file_monitor_changed), image_list);
+            image_list->priv->image_monitors =
+                g_list_prepend (image_list->priv->image_monitors, monitor);
+        }
     }
 
     path = gtk_tree_path_new ();
@@ -362,8 +370,16 @@ rstto_image_list_add_file (RsttoImageList *image_list,
     gtk_tree_path_free (path);
 
     for (iter = image_list->priv->iterators; iter != NULL; iter = iter->next)
-        if (! RSTTO_IMAGE_LIST_ITER (iter->data)->priv->sticky)
+    {
+        r_iter = iter->data;
+        if (! r_iter->priv->sticky)
+        {
             rstto_image_list_iter_find_file (iter->data, r_file);
+            r_iter->priv->sticky = TRUE;
+        }
+        else
+            rstto_image_list_iter_find_file (r_iter, r_iter->priv->r_file);
+    }
 
     return TRUE;
 }
@@ -427,30 +443,32 @@ rstto_image_list_remove_file (RsttoImageList *image_list,
             continue;
 
         if (r_iter->priv->link == image_list->priv->images->tail)
-            iter_previous (r_iter, r_iter->priv->sticky);
+            iter_previous (r_iter, FALSE);
         else
-            iter_next (r_iter, r_iter->priv->sticky);
-
-        /* if the image is still the same, it's a single item list,
-         * and we should force the image in this iter to NULL */
-        if (r_iter->priv->r_file == r_file)
-        {
-            r_iter->priv->r_file = NULL;
-            r_iter->priv->link = NULL;
-            r_iter->priv->index = -1;
-            g_signal_emit (r_iter,
-                           rstto_image_list_iter_signals[RSTTO_IMAGE_LIST_ITER_SIGNAL_CHANGED],
-                           0, NULL);
-        }
+            iter_next (r_iter, FALSE);
     }
 
-    g_queue_remove (image_list->priv->images, r_file);
-    g_object_unref (r_file);
+    if (image_list->priv->images->length == 1)
+    {
+        rstto_image_list_remove_all (image_list);
+        return;
+    }
+    else
+    {
+        g_queue_remove (image_list->priv->images, r_file);
+        g_object_unref (r_file);
+    }
 
     path_ = gtk_tree_path_new ();
     gtk_tree_path_append_index (path_, index_);
     gtk_tree_model_row_deleted (GTK_TREE_MODEL (image_list), path_);
     gtk_tree_path_free (path_);
+
+    for (iter = image_list->priv->iterators; iter != NULL; iter = iter->next)
+    {
+        r_iter = iter->data;
+        rstto_image_list_iter_find_file (r_iter, r_iter->priv->r_file);
+    }
 }
 
 static void
@@ -734,6 +752,7 @@ cb_file_monitor_changed (
     switch (event_type)
     {
         case G_FILE_MONITOR_EVENT_DELETED:
+        case G_FILE_MONITOR_EVENT_MOVED_OUT:
             rstto_image_list_remove_file (image_list, r_file);
             if (image_list->priv->dir_monitor == NULL)
             {
@@ -777,6 +796,13 @@ cb_file_monitor_changed (
         case G_FILE_MONITOR_EVENT_CHANGED:
             /* wait for DONE_HINT to update the image, so that we can get its mime type */
             break;
+        case G_FILE_MONITOR_EVENT_RENAMED:
+            cb_file_monitor_changed (monitor, file, other_file,
+                                     G_FILE_MONITOR_EVENT_DELETED, user_data);
+            g_object_unref (r_file);
+            r_file = rstto_file_new (other_file);
+            rstto_image_list_add_file (image_list, r_file, NULL);
+            break;
         default:
             break;
     }
@@ -881,7 +907,6 @@ rstto_image_list_iter_find_file (
     iter->priv->r_file = r_file;
     iter->priv->index = index;
     iter->priv->link = g_queue_peek_nth_link (image_list->priv->images, iter->priv->index);
-    iter->priv->sticky = TRUE;
 
     g_signal_emit (iter,
                    rstto_image_list_iter_signals[RSTTO_IMAGE_LIST_ITER_SIGNAL_CHANGED],
@@ -960,18 +985,19 @@ iter_next (
     {
         if (iter->priv->link->next != NULL)
         {
+            ret_val = TRUE;
             iter->priv->link = iter->priv->link->next;
             iter->priv->index++;
         }
         else
         {
+            ret_val = image_list->priv->images->length > 1;
             iter->priv->link = image_list->priv->images->head;
             iter->priv->index = 0;
         }
 
         iter->priv->r_file = iter->priv->link->data;
         iter->priv->sticky = sticky;
-        ret_val = TRUE;
     }
 
     if (ret_val == TRUE)
@@ -1018,18 +1044,19 @@ iter_previous (
     {
         if (iter->priv->link->prev != NULL)
         {
+            ret_val = TRUE;
             iter->priv->link = iter->priv->link->prev;
             iter->priv->index--;
         }
         else
         {
+            ret_val = image_list->priv->images->length > 1;
             iter->priv->link = image_list->priv->images->tail;
             iter->priv->index = image_list->priv->images->length - 1;
         }
 
         iter->priv->r_file = iter->priv->link->data;
         iter->priv->sticky = sticky;
-        ret_val = TRUE;
     }
 
     if (ret_val == TRUE)


=====================================
src/image_viewer.c
=====================================
@@ -43,6 +43,8 @@
 #define MIN_VIEW_PERCENT 0.1
 #define RSTTO_LINE_WIDTH 1.0
 
+#define ERROR_UNDETERMINED "Undetermined error"
+
 enum
 {
     PROP_0,
@@ -606,6 +608,8 @@ rstto_image_viewer_finalize (GObject *object)
 {
     RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (object);
 
+    if (viewer->priv->transaction && viewer->priv->transaction->loader_closed_id != 0)
+        REMOVE_SOURCE (viewer->priv->transaction->loader_closed_id);
     if (viewer->priv->settings)
     {
         g_object_unref (viewer->priv->settings);
@@ -641,6 +645,11 @@ rstto_image_viewer_finalize (GObject *object)
         g_object_unref (viewer->priv->file);
         viewer->priv->file = NULL;
     }
+    if (viewer->priv->error)
+    {
+        g_error_free (viewer->priv->error);
+        viewer->priv->error = NULL;
+    }
 
     G_OBJECT_CLASS (rstto_image_viewer_parent_class)->finalize (object);
 }
@@ -1391,7 +1400,6 @@ rstto_image_viewer_load_image (RsttoImageViewer *viewer, RsttoFile *file, gdoubl
     transaction->file = file;
     transaction->viewer = viewer;
     transaction->scale = scale;
-    transaction->loader_closed_id = 0;
 
     if (viewer->priv->limit_quality)
     {
@@ -1430,8 +1438,6 @@ rstto_image_viewer_transaction_free (gpointer data)
     {
         tr->viewer->priv->transaction = NULL;
     }
-    if (tr->loader_closed_id != 0)
-        REMOVE_SOURCE (tr->loader_closed_id);
     if (tr->error)
     {
         g_error_free (tr->error);
@@ -1735,14 +1741,23 @@ cb_rstto_image_loader_closed_idle (gpointer data)
 {
     RsttoImageViewerTransaction *transaction = data;
     RsttoImageViewer *viewer = transaction->viewer;
+    GdkPixbuf *pixbuf;
     GtkWidget *widget = GTK_WIDGET (viewer);
 
     if (viewer->priv->transaction == transaction)
     {
+        pixbuf = gdk_pixbuf_loader_get_pixbuf (transaction->loader);
+
+        /* cover any case where no pixbuf is available and no error is set:
+         * see e.g. https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/204 */
+        if (transaction->error == NULL && pixbuf == NULL)
+            g_set_error (&transaction->error, GDK_PIXBUF_ERROR,
+                         GDK_PIXBUF_ERROR_FAILED, ERROR_UNDETERMINED);
+
         if (transaction->error == NULL || (
                 g_error_matches (transaction->error, GDK_PIXBUF_ERROR,
                                  GDK_PIXBUF_ERROR_CORRUPT_IMAGE)
-                && gdk_pixbuf_loader_get_pixbuf (transaction->loader) != NULL
+                && pixbuf != NULL
             ))
         {
             gtk_widget_set_tooltip_text (widget, NULL);
@@ -2118,7 +2133,7 @@ cb_rstto_bgcolor_changed (GObject *settings, GParamSpec *pspec, gpointer user_da
     cairo_region_t *region;
     cairo_status_t status;
     GtkAllocation alloc;
-    const gchar *message = "Undetermined error";
+    const gchar *message = ERROR_UNDETERMINED;
 
     /* do not redraw the image */
     gtk_widget_get_allocation (user_data, &alloc);


=====================================
src/main.c
=====================================
@@ -83,16 +83,13 @@ main (int argc, char **argv)
     RsttoImageList *image_list;
     GtkWidget *window;
 
-    setlocale (LC_ALL, "");
-    bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
-    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-    textdomain (GETTEXT_PACKAGE);
+    xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
 
     if (!gtk_init_with_args (&argc, &argv, NULL, entries, PACKAGE, &cli_error))
     {
         if (cli_error != NULL)
         {
-            g_print (
+            g_printerr (
                     _("%s: %s\n\n"
                       "Try %s --help to see a full list of\n"
                       "available command line options.\n"),


=====================================
src/main_window.c
=====================================
@@ -4094,22 +4094,21 @@ rstto_main_window_open (RsttoMainWindow *window,
 {
     RsttoFile *r_file;
     GError *error = NULL, *tmp_error = NULL;
-    GSList *file;
+    GSList *file, *deleted = NULL, *invalid = NULL;
     GFileInfo *info;
     GFile *dir;
     gchar *uri;
-    guint n, deleted = 0, invalid = 0;
 
     /* in case of several files, open only those, adding them to the list one by one: this
      * is expensive and supposed to be done only for a limited number of files */
     if (g_slist_length (files) > 1)
     {
-        for (file = files, n = 0; file != NULL; file = file->next, n++)
+        for (file = files; file != NULL; file = file->next)
         {
             /* we will show only one dialog for all deleted files later */
             if (! g_file_query_exists (file->data, NULL))
             {
-                deleted |= 1 << n;
+                deleted = g_slist_prepend (deleted, file->data);
                 continue;
             }
 
@@ -4119,7 +4118,7 @@ rstto_main_window_open (RsttoMainWindow *window,
                 if (error == NULL)
                     error = g_error_copy (tmp_error);
 
-                invalid |= 1 << n;
+                invalid = g_slist_prepend (invalid, file->data);
                 g_object_unref (r_file);
                 g_clear_error (&tmp_error);
 
@@ -4136,10 +4135,10 @@ rstto_main_window_open (RsttoMainWindow *window,
     /* in case of a single file, replace the list with the contents of the parent directory,
      * or the directory itself if the file is a directory */
     else if (! g_file_query_exists (files->data, NULL))
-        deleted = 1;
+        deleted = g_slist_prepend (deleted, files->data);
     else if ((info = g_file_query_info (files->data, "standard::type,standard::content-type",
                                         G_FILE_QUERY_INFO_NONE, NULL, &error)) == NULL)
-        invalid = 1;
+        invalid = g_slist_prepend (invalid, files->data);
     else
     {
         /* add the directory contents asynchronously */
@@ -4158,7 +4157,7 @@ rstto_main_window_open (RsttoMainWindow *window,
                 rstto_main_window_add_file_to_recent_files (rstto_file_get_uri (r_file),
                                                             rstto_file_get_content_type (r_file));
             else
-                invalid = 1;
+                invalid = g_slist_prepend (invalid, files->data);
 
             g_object_unref (dir);
             g_object_unref (r_file);
@@ -4167,25 +4166,26 @@ rstto_main_window_open (RsttoMainWindow *window,
         g_object_unref (info);
     }
 
-    if (deleted > 0 || invalid > 0)
+    if (deleted != NULL || invalid != NULL)
     {
-        for (n = 0; (1U << n) <= deleted; n++)
-            if (deleted & (1 << n))
-            {
-                uri = g_file_get_uri (g_slist_nth_data (files, n));
-                g_message ("Could not open file '%s': File does not exist", uri);
-                g_free (uri);
-            }
+        for (file = deleted; file != NULL; file = file->next)
+        {
+            uri = g_file_get_uri (file->data);
+            g_message ("Could not open file '%s': File does not exist", uri);
+            g_free (uri);
+        }
 
-        for (n = 0; (1U << n) <= invalid; n++)
-            if (invalid & (1 << n))
-            {
-                uri = g_file_get_uri (g_slist_nth_data (files, n));
-                g_message ("Could not open file '%s': %s", uri, error->message);
-                g_free (uri);
-            }
+        for (file = invalid; file != NULL; file = file->next)
+        {
+            uri = g_file_get_uri (file->data);
+            g_message ("Could not open file '%s': %s", uri, error->message);
+            g_free (uri);
+        }
 
         rstto_util_dialog_error (ERROR_OPEN_FAILED, NULL);
+
+        g_slist_free (deleted);
+        g_slist_free (invalid);
         if (error != NULL)
             g_error_free (error);
     }


=====================================
src/thumbnailer.c
=====================================
@@ -29,6 +29,7 @@
 enum
 {
     RSTTO_THUMBNAILER_SIGNAL_READY = 0,
+    RSTTO_THUMBNAILER_SIGNAL_ERROR,
     RSTTO_THUMBNAILER_SIGNAL_COUNT
 };
 
@@ -139,6 +140,17 @@ rstto_thumbnailer_class_init (RsttoThumbnailerClass *klass)
             1,
             G_TYPE_OBJECT,
             NULL);
+    rstto_thumbnailer_signals[RSTTO_THUMBNAILER_SIGNAL_ERROR] = g_signal_new ("error",
+            G_TYPE_FROM_CLASS (klass),
+            G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+            0,
+            NULL,
+            NULL,
+            g_cclosure_marshal_VOID__OBJECT,
+            G_TYPE_NONE,
+            1,
+            G_TYPE_OBJECT,
+            NULL);
 }
 
 /**
@@ -448,7 +460,12 @@ cb_rstto_thumbnailer_thumbnail_error (TumblerThumbnailer1 *proxy,
             if (error_code == G_IO_ERROR_CANCELLED)
                 rstto_thumbnailer_queue_file (thumbnailer, flavor, iter->data);
             else
+            {
                 rstto_file_set_thumbnail_state (iter->data, flavor, RSTTO_THUMBNAIL_STATE_ERROR);
+                g_signal_emit (thumbnailer,
+                               rstto_thumbnailer_signals[RSTTO_THUMBNAILER_SIGNAL_ERROR],
+                               0, iter->data, NULL);
+            }
 
             g_object_unref (iter->data);
             thumbnailer->priv->in_process_queues[flavor] =


=====================================
src/tumbler.c
=====================================
@@ -728,7 +728,7 @@ tumbler_thumbnailer1_default_init (TumblerThumbnailer1Iface *iface)
    *
    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-thumbnails-Thumbnailer1.Queue">Queue()</link> D-Bus method.
    *
-   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_queue() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_queue() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
    *
    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
    */
@@ -751,7 +751,7 @@ tumbler_thumbnailer1_default_init (TumblerThumbnailer1Iface *iface)
    *
    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-thumbnails-Thumbnailer1.Dequeue">Dequeue()</link> D-Bus method.
    *
-   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_dequeue() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_dequeue() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
    *
    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
    */
@@ -773,7 +773,7 @@ tumbler_thumbnailer1_default_init (TumblerThumbnailer1Iface *iface)
    *
    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-thumbnails-Thumbnailer1.GetSupported">GetSupported()</link> D-Bus method.
    *
-   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_get_supported() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_get_supported() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
    *
    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
    */
@@ -795,7 +795,7 @@ tumbler_thumbnailer1_default_init (TumblerThumbnailer1Iface *iface)
    *
    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-thumbnails-Thumbnailer1.GetSchedulers">GetSchedulers()</link> D-Bus method.
    *
-   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_get_schedulers() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_get_schedulers() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
    *
    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
    */
@@ -817,7 +817,7 @@ tumbler_thumbnailer1_default_init (TumblerThumbnailer1Iface *iface)
    *
    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-thumbnails-Thumbnailer1.GetFlavors">GetFlavors()</link> D-Bus method.
    *
-   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_get_flavors() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call tumbler_thumbnailer1_complete_get_flavors() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
    *
    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
    */



View it on GitLab: https://salsa.debian.org/xfce-team/apps/ristretto/-/commit/5d8ec4e3b2c07ebbaa81fe376c9d7010542a765b

-- 
View it on GitLab: https://salsa.debian.org/xfce-team/apps/ristretto/-/commit/5d8ec4e3b2c07ebbaa81fe376c9d7010542a765b
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-xfce-commits/attachments/20220713/73ec3e5b/attachment-0001.htm>


More information about the Pkg-xfce-commits mailing list