[Pkg-xfce-commits] [Git][xfce-team/desktop/xfce4-appfinder][upstream/latest] New upstream version 4.17.2.

Unit 193 (@unit193) gitlab at salsa.debian.org
Mon Dec 5 08:11:11 GMT 2022



Unit 193 pushed to branch upstream/latest at xfce / desktop / xfce4-appfinder


Commits:
0d3766f5 by Unit 193 at 2022-12-05T03:06:23-05:00
New upstream version 4.17.2.
- - - - -


14 changed files:

- ChangeLog
- NEWS
- aclocal.m4
- config.h.in
- configure
- configure.ac
- po/hr.po
- src/appfinder-category-model.c
- src/appfinder-category-model.h
- src/appfinder-model.c
- src/appfinder-model.h
- src/appfinder-preferences.c
- src/appfinder-window.c
- src/main.c


Changes:

=====================================
ChangeLog
=====================================
@@ -1,3 +1,66 @@
+commit bf77c87757c4bb6f32ee1d1207cf5556d3845656
+Author: Andre Miranda <andreldm at xfce.org>
+Date:   Tue Nov 29 11:41:03 2022 +0000
+
+    Update default settings (!29)
+
+commit 6f970c02940cdcc4afa28f8483e7e84239f62c71
+Author: Andre Miranda <andreldm at xfce.org>
+Date:   Tue Nov 29 00:05:06 2022 +0000
+
+    Fix icon blurriness UI scale > 1 (#67)
+    
+    Icon view is still blurred, gtk icon view does not support
+    surfaces. For more details see !26.
+    
+    Fixes #67
+
+commit 57856a32a624ca16b72f2d2c7be2fa274c798793
+Author: Andre Miranda <andreldm at xfce.org>
+Date:   Wed Nov 16 17:29:50 2022 +0000
+
+    Migration for history cache file (!28)
+    
+    Move it to $HOME/.cache/xfce4/appfinder for the sake of consistency
+    
+    Fixes #66
+
+commit b265e35ffbcca807c7399790eace2924df40ef79
+Author: Andre Miranda <andreldm at xfce.org>
+Date:   Tue Nov 15 11:07:41 2022 +0000
+
+    Do not clamp window height in collapsed mode (!27)
+    
+    When scale > 1 the width is improperly reduced, see #49 for more details.
+
+commit 20f2a63e8836b6a936dd5c4c0c4cd43ca7ab2201
+Author: Anonymous <noreply at xfce.org>
+Date:   Mon Oct 31 00:45:49 2022 +0100
+
+    I18n: Update translation hr (92%).
+    
+    82 translated messages, 7 untranslated messages.
+    
+    Transifex (https://explore.transifex.com/xfce/).
+
+commit c1e582e73f656674d9f36d1b78f67bd66edbac85
+Author: Andre Miranda <andreldm at xfce.org>
+Date:   Sat Oct 29 14:30:12 2022 +0200
+
+    Update copyright year
+
+commit 2c58914467b96d654eb62feb1427e43f23437904
+Author: Andre Miranda <andreldm at xfce.org>
+Date:   Sat Oct 29 14:21:55 2022 +0200
+
+    Back to development
+
+commit 1e4678afc47debe6e462d99b89b6ce5f4ec936b4
+Author: Andre Miranda <andreldm at xfce.org>
+Date:   Sat Oct 29 14:17:28 2022 +0200
+
+    Updates for release
+
 commit 770de9896eb75c42fb436462f8a568afe1ad63d5
 Author: Anonymous <noreply at xfce.org>
 Date:   Thu Oct 20 00:46:25 2022 +0200


=====================================
NEWS
=====================================
@@ -1,3 +1,13 @@
+4.17.2 (2022-11-29)
+======
+- Update default settings (!29)
+- Fix icon blurriness UI scale > 1 (#67)
+- Migration for history cache file (!28)
+- Do not clamp window height in collapsed mode (!27)
+- Update copyright year
+- Translation Updates:
+  Croatian
+
 4.17.1 (2022-10-29)
 ======
 - build: Fix intltool lock file problem during make distcheck


=====================================
aclocal.m4
=====================================
@@ -638,6 +638,27 @@ 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([$1], GLIB, [
+      dnl Report uses of GLib functions newer than $3 as C compiler warnings.
+      dnl XFCE apps&libraries can override this setting after XDT_CHECK_PACKAGE(GLIB)
+      dnl using AC_DEFINE, in which case it is recommended to override both MAX and MIN.
+      AC_MSG_NOTICE([setting GLIB_VERSION_MAX_ALLOWED and GLIB_VERSION_MIN_REQUIRED according to $3])
+      m4_pushdef([SUFFIX], translit($3, `.', `_'))
+      m4_define([SUFFIX], ifelse(regexp(SUFFIX, [[0-9]+_[0-9]+_[0-9]+]), -1, SUFFIX, patsubst(SUFFIX, [_[0-9]+$])))
+      AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, m4_format(GLIB_VERSION_%s, SUFFIX), m4_format(Prevent post %s APIs, SUFFIX))
+      AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, m4_format(GLIB_VERSION_%s, SUFFIX), m4_format(Ignore post %s APIs, SUFFIX))
+      m4_popdef([SUFFIX])
+    ])
+
     ifelse([$4], , , [$4])
   elif $PKG_CONFIG --exists "$2" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "$2"`
@@ -921,16 +942,15 @@ AC_DEFUN([XDT_FEATURE_DEBUG],
 AS_HELP_STRING([--disable-debug],[Include no debugging support]),
                 [enable_debug=$enableval], [enable_debug=m4_default([$1], [minimum])])
 
-  dnl enable most warnings regardless of debug level
-  xdt_cv_additional_CFLAGS="-Wall -Wextra \
-                            -Wno-missing-field-initializers \
-                            -Wno-unused-parameter -Wold-style-definition \
-                            -Wdeclaration-after-statement \
-                            -Wmissing-declarations \
-                            -Wmissing-noreturn -Wpointer-arith \
-                            -Wcast-align -Wformat -Wformat-security -Wformat-y2k \
-                            -Winit-self -Wmissing-include-dirs -Wundef \
-                            -Wnested-externs -Wredundant-decls"
+  dnl Enable most warnings regardless of debug level. Common flags for both C and C++.
+  xdt_cv_additional_COMMON_FLAGS="-Wall -Wextra \
+                                  -Wno-missing-field-initializers \
+                                  -Wno-unused-parameter \
+                                  -Wmissing-declarations \
+                                  -Wmissing-noreturn -Wpointer-arith \
+                                  -Wcast-align -Wformat -Wformat-security -Wformat-y2k \
+                                  -Winit-self -Wmissing-include-dirs -Wundef \
+                                  -Wredundant-decls"
 
   AC_MSG_CHECKING([whether to build with debugging support])
   if test x"$enable_debug" = x"full" -o x"$enable_debug" = x"yes"; then
@@ -939,20 +959,20 @@ AS_HELP_STRING([--disable-debug],[Include no debugging support]),
     CPPFLAGS="$CPPFLAGS"
 
     if test x`uname` = x"Linux"; then
-      xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -fstack-protector"
+      xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -fstack-protector"
     fi
 
     if test x"$enable_debug" = x"full"; then
       AC_DEFINE([DEBUG_TRACE], [1], [Define for tracing support])
-      xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -O0 -g"
+      xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -O0 -g"
       CPPFLAGS="$CPPFLAGS -DG_ENABLE_DEBUG"
       AC_MSG_RESULT([full])
     else
-      xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -g -Wshadow"
+      xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -g -Wshadow"
       AC_MSG_RESULT([yes])
     fi
   else
-    xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -Wshadow"
+    xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -Wshadow"
     CPPFLAGS="$CPPFLAGS -DNDEBUG"
 
     if test x"$enable_debug" = x"no"; then
@@ -963,18 +983,14 @@ AS_HELP_STRING([--disable-debug],[Include no debugging support]),
     fi
   fi
 
-  XDT_SUPPORTED_FLAGS([supported_CFLAGS], [$xdt_cv_additional_CFLAGS])
+  xdt_cv_additional_CFLAGS="$xdt_cv_additional_COMMON_FLAGS \
+                            -Wdeclaration-after-statement \
+                            -Wnested-externs \
+                            -Wold-style-definition"
+  xdt_cv_additional_CXXFLAGS="$xdt_cv_additional_COMMON_FLAGS"
 
-  ifelse([$CXX], , , [
-    dnl FIXME: should test on c++ compiler, but the following line causes
-    dnl        autoconf errors for projects that don't check for a
-    dnl        c++ compiler at all.
-    dnl AC_LANG_PUSH([C++])
-    dnl XDT_SUPPORTED_FLAGS([supported_CXXFLAGS], [$xdt_cv_additional_CFLAGS])
-    dnl AC_LANG_POP()
-    dnl        instead, just use supported_CFLAGS...
-    supported_CXXFLAGS="$supported_CFLAGS"
-  ])
+  XDT_SUPPORTED_FLAGS([supported_CFLAGS], [$xdt_cv_additional_CFLAGS])
+  XDT_SUPPORTED_FLAGS([supported_CXXFLAGS], [$xdt_cv_additional_CXXFLAGS])
 
   CFLAGS="$CFLAGS $supported_CFLAGS"
   CXXFLAGS="$CXXFLAGS $supported_CXXFLAGS"


=====================================
config.h.in
=====================================
@@ -9,6 +9,15 @@
 /* Name of default gettext domain */
 #undef GETTEXT_PACKAGE
 
+/* Prevent post 2_50 APIs */
+#undef GLIB_VERSION_MAX_ALLOWED
+
+/* Ignore post 2_50 APIs */
+#undef GLIB_VERSION_MIN_REQUIRED
+
+/* Use GLib structured logging */
+#undef G_LOG_USE_STRUCTURED
+
 /* Define to 1 if you have the `daemon' function. */
 #undef HAVE_DAEMON
 


=====================================
configure
=====================================
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for xfce4-appfinder 4.17.1.
+# Generated by GNU Autoconf 2.71 for xfce4-appfinder 4.17.2.
 #
 # Report bugs to <https://gitlab.xfce.org/xfce/xfce4-appfinder/>.
 #
-# Copyright (c) 2008-2020 The Xfce development team. All rights reserved.
+# Copyright (c) 2008-2022 The Xfce development team. All rights reserved.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -623,8 +623,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='xfce4-appfinder'
 PACKAGE_TARNAME='xfce4-appfinder'
-PACKAGE_VERSION='4.17.1'
-PACKAGE_STRING='xfce4-appfinder 4.17.1'
+PACKAGE_VERSION='4.17.2'
+PACKAGE_STRING='xfce4-appfinder 4.17.2'
 PACKAGE_BUGREPORT='https://gitlab.xfce.org/xfce/xfce4-appfinder/'
 PACKAGE_URL=''
 
@@ -1436,7 +1436,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 xfce4-appfinder 4.17.1 to adapt to many kinds of systems.
+\`configure' configures xfce4-appfinder 4.17.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1507,7 +1507,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xfce4-appfinder 4.17.1:";;
+     short | recursive ) echo "Configuration of xfce4-appfinder 4.17.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1634,14 +1634,14 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xfce4-appfinder configure 4.17.1
+xfce4-appfinder configure 4.17.2
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
-Copyright (c) 2008-2020 The Xfce development team. All rights reserved.
+Copyright (c) 2008-2022 The Xfce development team. All rights reserved.
 _ACEOF
   exit
 fi
@@ -1854,7 +1854,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 xfce4-appfinder $as_me 4.17.1, which was
+It was created by xfce4-appfinder $as_me 4.17.2, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3128,7 +3128,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='xfce4-appfinder'
- VERSION='4.17.1'
+ VERSION='4.17.2'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -14757,6 +14757,26 @@ printf "%s\n" "$GLIB_LIBS" >&6; }
 
 
 
+    if test x"GLIB" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
+
+                        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: setting GLIB_VERSION_MAX_ALLOWED and GLIB_VERSION_MIN_REQUIRED according to 2.50.0" >&5
+printf "%s\n" "$as_me: setting GLIB_VERSION_MAX_ALLOWED and GLIB_VERSION_MIN_REQUIRED according to 2.50.0" >&6;}
+
+
+
+printf "%s\n" "#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_50" >>confdefs.h
+
+
+printf "%s\n" "#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_50" >>confdefs.h
+
+
+
+
 
   elif $PKG_CONFIG --exists "glib-2.0" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "glib-2.0"`
@@ -14962,6 +14982,14 @@ printf "%s\n" "$GTHREAD_LIBS" >&6; }
 
 
 
+    if test x"GTHREAD" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
+
+
 
   elif $PKG_CONFIG --exists "gthread-2.0" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "gthread-2.0"`
@@ -15167,6 +15195,14 @@ 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"`
@@ -15372,6 +15408,14 @@ printf "%s\n" "$GIO_LIBS" >&6; }
 
 
 
+    if test x"GIO" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
+
+
 
   elif $PKG_CONFIG --exists "gio-2.0" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "gio-2.0"`
@@ -15577,6 +15621,14 @@ 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"`
@@ -15782,6 +15834,14 @@ 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"`
@@ -15987,6 +16047,14 @@ printf "%s\n" "$GARCON_LIBS" >&6; }
 
 
 
+    if test x"GARCON" = x"GLIB"; then
+
+printf "%s\n" "#define G_LOG_USE_STRUCTURED 1" >>confdefs.h
+
+    fi
+
+
+
 
   elif $PKG_CONFIG --exists "garcon-1" >/dev/null 2>&1; then
     xdt_cv_version=`$PKG_CONFIG --modversion "garcon-1"`
@@ -16192,6 +16260,14 @@ 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"`
@@ -16232,15 +16308,14 @@ else $as_nop
 fi
 
 
-    xdt_cv_additional_CFLAGS="-Wall -Wextra \
-                            -Wno-missing-field-initializers \
-                            -Wno-unused-parameter -Wold-style-definition \
-                            -Wdeclaration-after-statement \
-                            -Wmissing-declarations \
-                            -Wmissing-noreturn -Wpointer-arith \
-                            -Wcast-align -Wformat -Wformat-security -Wformat-y2k \
-                            -Winit-self -Wmissing-include-dirs -Wundef \
-                            -Wnested-externs -Wredundant-decls"
+    xdt_cv_additional_COMMON_FLAGS="-Wall -Wextra \
+                                  -Wno-missing-field-initializers \
+                                  -Wno-unused-parameter \
+                                  -Wmissing-declarations \
+                                  -Wmissing-noreturn -Wpointer-arith \
+                                  -Wcast-align -Wformat -Wformat-security -Wformat-y2k \
+                                  -Winit-self -Wmissing-include-dirs -Wundef \
+                                  -Wredundant-decls"
 
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with debugging support" >&5
 printf %s "checking whether to build with debugging support... " >&6; }
@@ -16252,24 +16327,24 @@ printf "%s\n" "#define DEBUG 1" >>confdefs.h
     CPPFLAGS="$CPPFLAGS"
 
     if test x`uname` = x"Linux"; then
-      xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -fstack-protector"
+      xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -fstack-protector"
     fi
 
     if test x"$enable_debug" = x"full"; then
 
 printf "%s\n" "#define DEBUG_TRACE 1" >>confdefs.h
 
-      xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -O0 -g"
+      xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -O0 -g"
       CPPFLAGS="$CPPFLAGS -DG_ENABLE_DEBUG"
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: full" >&5
 printf "%s\n" "full" >&6; }
     else
-      xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -g -Wshadow"
+      xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -g -Wshadow"
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
     fi
   else
-    xdt_cv_additional_CFLAGS="$xdt_cv_additional_CFLAGS -Wshadow"
+    xdt_cv_additional_COMMON_FLAGS="$xdt_cv_additional_COMMON_FLAGS -Wshadow"
     CPPFLAGS="$CPPFLAGS -DNDEBUG"
 
     if test x"$enable_debug" = x"no"; then
@@ -16282,6 +16357,12 @@ printf "%s\n" "minimum" >&6; }
     fi
   fi
 
+  xdt_cv_additional_CFLAGS="$xdt_cv_additional_COMMON_FLAGS \
+                            -Wdeclaration-after-statement \
+                            -Wnested-externs \
+                            -Wold-style-definition"
+  xdt_cv_additional_CXXFLAGS="$xdt_cv_additional_COMMON_FLAGS"
+
 
   for flag in $xdt_cv_additional_CFLAGS; do
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports $flag" >&5
@@ -16309,8 +16390,30 @@ printf "%s\n" "$flag_supported" >&6; }
   done
 
 
+  for flag in $xdt_cv_additional_CXXFLAGS; do
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports $flag" >&5
+printf %s "checking if $CC supports $flag... " >&6; }
+    saved_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $flag"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  flag_supported=yes
+else $as_nop
+  flag_supported=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+    CFLAGS="$saved_CFLAGS"
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag_supported" >&5
+printf "%s\n" "$flag_supported" >&6; }
 
-                                supported_CXXFLAGS="$supported_CFLAGS"
+    if test "x$flag_supported" = "xyes"; then
+      supported_CXXFLAGS="$supported_CXXFLAGS $flag"
+    fi
+  done
 
 
   CFLAGS="$CFLAGS $supported_CFLAGS"
@@ -16912,7 +17015,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 xfce4-appfinder $as_me 4.17.1, which was
+This file was extended by xfce4-appfinder $as_me 4.17.2, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16980,7 +17083,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="\\
-xfce4-appfinder config.status 4.17.1
+xfce4-appfinder config.status 4.17.2
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 


=====================================
configure.ac
=====================================
@@ -4,7 +4,7 @@ dnl Edit that file instead!
 dnl
 
 dnl
-dnl Copyright (c) 2008-2017 - The Xfce Development Team.
+dnl Copyright (c) 2008-2022 - The Xfce Development Team.
 dnl
 
 dnl ***************************
@@ -12,9 +12,9 @@ dnl *** Version information ***
 dnl ***************************
 m4_define([xfce4_appfinder_version_major], [4])
 m4_define([xfce4_appfinder_version_minor], [17])
-m4_define([xfce4_appfinder_version_micro], [1])
+m4_define([xfce4_appfinder_version_micro], [2])
 m4_define([xfce4_appfinder_version_nano], []) dnl leave this empty to have no nano version
-m4_define([xfce4_appfinder_version_build], [770de98])
+m4_define([xfce4_appfinder_version_build], [bf77c87])
 m4_define([xfce4_appfinder_version_tag], [])
 m4_define([xfce4_appfinder_version], [xfce4_appfinder_version_major().xfce4_appfinder_version_minor().xfce4_appfinder_version_micro()ifelse(xfce4_appfinder_version_nano(), [], [], [.xfce4_appfinder_version_nano()])ifelse(xfce4_appfinder_version_tag(), [git], [xfce4_appfinder_version_tag()-xfce4_appfinder_version_build()], [xfce4_appfinder_version_tag()])])
 
@@ -26,7 +26,7 @@ m4_define([appfinder_debug_default], [ifelse(xfce4_appfinder_version_tag(), [git
 dnl ***************************
 dnl *** Initialize autoconf ***
 dnl ***************************
-AC_COPYRIGHT([Copyright (c) 2008-2020 The Xfce development team. All rights reserved.])
+AC_COPYRIGHT([Copyright (c) 2008-2022 The Xfce development team. All rights reserved.])
 AC_INIT([xfce4-appfinder], [xfce4_appfinder_version], [https://gitlab.xfce.org/xfce/xfce4-appfinder/], [xfce4-appfinder])
 AC_PREREQ([2.60])
 AC_CONFIG_MACRO_DIRS([m4])


=====================================
po/hr.po
=====================================
@@ -14,8 +14,8 @@ msgstr ""
 "Project-Id-Version: Xfce4-appfinder\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-11-30 00:47+0100\n"
-"PO-Revision-Date: 2021-11-29 23:47+0000\n"
-"Last-Translator: Xfce Bot <transifex at xfce.org>\n"
+"PO-Revision-Date: 2013-07-02 20:40+0000\n"
+"Last-Translator: Edin Veskovic <edin.lockedin at gmail.com>, 2017-2019\n"
 "Language-Team: Croatian (http://www.transifex.com/xfce/xfce4-appfinder/language/hr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"


=====================================
src/appfinder-category-model.c
=====================================
@@ -24,6 +24,7 @@
 #include <string.h>
 #endif
 
+#include <cairo/cairo-gobject.h>
 #include <libxfce4util/libxfce4util.h>
 
 #include <src/appfinder-model.h>
@@ -95,18 +96,21 @@ struct _XfceAppfinderCategoryModel
   GarconMenuDirectory   *all_applications;
 
   XfceAppfinderIconSize  icon_size;
+
+  gint                   scale_factor;
 };
 
 struct _CategoryItem
 {
   GarconMenuDirectory *directory;
-  GdkPixbuf           *pixbuf;
+  cairo_surface_t     *surface;
 };
 
 enum
 {
   PROP_0,
-  PROP_ICON_SIZE
+  PROP_ICON_SIZE,
+  PROP_SCALE_FACTOR
 };
 
 
@@ -133,6 +137,12 @@ xfce_appfinder_category_model_class_init (XfceAppfinderCategoryModelClass *klass
                                                       XFCE_APPFINDER_ICON_SIZE_LARGEST,
                                                       XFCE_APPFINDER_ICON_SIZE_DEFAULT_CATEGORY,
                                                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_SCALE_FACTOR,
+                                   g_param_spec_uint ("scale-factor", NULL, NULL,
+                                                      1, G_MAXINT, 1,
+                                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 }
 
 
@@ -184,6 +194,10 @@ xfce_appfinder_category_model_get_property (GObject      *object,
       g_value_set_uint (value, model->icon_size);
       break;
 
+    case PROP_SCALE_FACTOR:
+      g_value_set_uint (value, model->scale_factor);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -200,6 +214,7 @@ xfce_appfinder_category_model_set_property (GObject      *object,
 {
   XfceAppfinderCategoryModel *model = XFCE_APPFINDER_CATEGORY_MODEL (object);
   XfceAppfinderIconSize       icon_size;
+  gint                        scale_factor;
 
   switch (prop_id)
     {
@@ -214,6 +229,12 @@ xfce_appfinder_category_model_set_property (GObject      *object,
         }
       break;
 
+    case PROP_SCALE_FACTOR:
+      scale_factor = g_value_get_uint (value);
+      if (model->scale_factor != scale_factor)
+        model->scale_factor = scale_factor;
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -266,7 +287,7 @@ xfce_appfinder_category_model_get_column_type (GtkTreeModel *tree_model,
       return G_TYPE_STRING;
 
     case XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_ICON:
-      return GDK_TYPE_PIXBUF;
+      return CAIRO_GOBJECT_TYPE_SURFACE;
 
     case XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_DIRECTORY:
       return GARCON_TYPE_MENU_DIRECTORY;
@@ -326,6 +347,7 @@ xfce_appfinder_category_model_get_value (GtkTreeModel *tree_model,
   XfceAppfinderCategoryModel *model = XFCE_APPFINDER_CATEGORY_MODEL (tree_model);
   CategoryItem               *item;
   const gchar                *icon_name;
+  GdkPixbuf                  *pixbuf;
 
   appfinder_return_if_fail (XFCE_IS_APPFINDER_CATEGORY_MODEL (model));
   appfinder_return_if_fail (iter->stamp == model->stamp);
@@ -342,15 +364,19 @@ xfce_appfinder_category_model_get_value (GtkTreeModel *tree_model,
       break;
 
     case XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_ICON:
-      if (item->pixbuf == NULL
-          && item->directory != NULL)
+      if (item->surface == NULL && item->directory != NULL)
         {
           icon_name = garcon_menu_directory_get_icon_name (item->directory);
-          item->pixbuf = xfce_appfinder_model_load_pixbuf (icon_name, model->icon_size);
+          pixbuf = xfce_appfinder_model_load_pixbuf (icon_name, model->icon_size, model->scale_factor);
+          if (pixbuf != NULL)
+            {
+              item->surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, model->scale_factor, NULL);
+              g_object_unref (G_OBJECT (pixbuf));
+            }
         }
 
-      g_value_init (value, GDK_TYPE_PIXBUF);
-      g_value_set_object (value, item->pixbuf);
+      g_value_init (value, CAIRO_GOBJECT_TYPE_SURFACE);
+      g_value_set_boxed (value, item->surface);
       break;
 
     case XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_DIRECTORY:
@@ -463,8 +489,8 @@ xfce_appfinder_category_category_free (CategoryItem *item,
 {
   if (item->directory != NULL)
     g_object_unref (G_OBJECT (item->directory));
-  if (item->pixbuf != NULL)
-    g_object_unref (G_OBJECT (item->pixbuf));
+  if (item->surface != NULL)
+    cairo_surface_destroy (item->surface);
   g_slice_free (CategoryItem, item);
 }
 
@@ -472,9 +498,11 @@ xfce_appfinder_category_category_free (CategoryItem *item,
 
 
 XfceAppfinderCategoryModel *
-xfce_appfinder_category_model_new (void)
+xfce_appfinder_category_model_new (gint scale_factor)
 {
-  gpointer model = g_object_new (XFCE_TYPE_APPFINDER_CATEGORY_MODEL, NULL);
+  gpointer model = g_object_new (XFCE_TYPE_APPFINDER_CATEGORY_MODEL,
+                                 "scale-factor", scale_factor,
+                                 NULL);
   appfinder_refcount_debug_add (G_OBJECT (model), "category-model");
   return model;
 }
@@ -597,10 +625,10 @@ xfce_appfinder_category_model_icon_theme_changed (XfceAppfinderCategoryModel *mo
       item = li->data;
       appfinder_assert (item != NULL);
 
-      if (item->pixbuf != NULL)
+      if (item->surface != NULL)
         {
-          g_object_unref (G_OBJECT (item->pixbuf));
-          item->pixbuf = NULL;
+          cairo_surface_destroy (item->surface);
+          item->surface = NULL;
 
           path = gtk_tree_path_new_from_indices (idx, -1);
           ITER_INIT (iter, model->stamp, li);


=====================================
src/appfinder-category-model.h
=====================================
@@ -47,7 +47,7 @@ enum
 
 GType                       xfce_appfinder_category_model_get_type           (void) G_GNUC_CONST;
 
-XfceAppfinderCategoryModel *xfce_appfinder_category_model_new                (void) G_GNUC_MALLOC;
+XfceAppfinderCategoryModel *xfce_appfinder_category_model_new                (gint                        scale_factor) G_GNUC_MALLOC;
 
 void                        xfce_appfinder_category_model_set_categories     (XfceAppfinderCategoryModel *model,
                                                                               GSList                     *categories);


=====================================
src/appfinder-model.c
=====================================
@@ -25,6 +25,7 @@
 #endif
 
 #include <glib/gstdio.h>
+#include <cairo/cairo-gobject.h>
 #include <libxfce4util/libxfce4util.h>
 #include <libxfce4ui/libxfce4ui.h>
 
@@ -33,9 +34,10 @@
 
 
 
-#define HISTORY_PATH   "xfce4/xfce4-appfinder/history"
-#define BOOKMARKS_PATH "xfce4/appfinder/bookmarks"
-#define FRECENCY_PATH  "xfce4/appfinder/frecency"
+#define OLD_HISTORY_PATH "xfce4/xfce4-appfinder/history"
+#define NEW_HISTORY_PATH "xfce4/appfinder/history"
+#define BOOKMARKS_PATH   "xfce4/appfinder/bookmarks"
+#define FRECENCY_PATH    "xfce4/appfinder/frecency"
 
 
 static void               xfce_appfinder_model_tree_model_init        (GtkTreeModelIface        *iface);
@@ -110,6 +112,7 @@ static void               xfce_appfinder_model_frecency_collect       (XfceAppfi
                                                                        GMappedFile              *mmap);
 static void               xfce_appfinder_model_frecency_free          (gpointer                  data);
 static gchar*             xfce_appfinder_model_unescape_entry_value   (const gchar              *value);
+static void               xfce_appfinder_model_migrate_history_file   (void);
 
 struct _XfceAppfinderModelClass
 {
@@ -135,8 +138,6 @@ struct _XfceAppfinderModel
   GarconMenu            *menu;
   guint                  menu_changed_idle_id;
 
-  GdkPixbuf             *command_icon;
-  GdkPixbuf             *command_icon_large;
   GarconMenuDirectory   *command_category;
 
   GSList                *categories;
@@ -155,6 +156,8 @@ struct _XfceAppfinderModel
   gboolean               sort_by_frecency;
 
   XfceAppfinderIconSize  icon_size;
+
+  gint                   scale_factor;
 };
 
 typedef struct
@@ -166,19 +169,20 @@ Frecency;
 
 typedef struct
 {
-  GarconMenuItem *item;
-  gchar          *key;
-  gchar          *abstract;
-  GPtrArray      *categories;
-  gchar          *command;
-  gchar          *tooltip;
-  guint           not_visible : 1;
-  guint           is_bookmark : 1;
+  GarconMenuItem  *item;
+  gchar           *key;
+  gchar           *abstract;
+  GPtrArray       *categories;
+  gchar           *command;
+  gchar           *tooltip;
+  guint            not_visible : 1;
+  guint            is_bookmark : 1;
 
-  Frecency       *frecency; /* owned by frecencies_hash */
+  Frecency        *frecency; /* owned by frecencies_hash */
 
-  GdkPixbuf      *icon;
-  GdkPixbuf      *icon_large;
+  GdkPixbuf       *icon;
+  cairo_surface_t *surface;
+  cairo_surface_t *surface_large;
 }
 ModelItem;
 
@@ -200,6 +204,7 @@ enum
 {
   PROP_0,
   PROP_ICON_SIZE,
+  PROP_SCALE_FACTOR,
   PROP_SORT_BY_FRECENCY
 };
 
@@ -232,6 +237,12 @@ xfce_appfinder_model_class_init (XfceAppfinderModelClass *klass)
                                                       XFCE_APPFINDER_ICON_SIZE_DEFAULT_ITEM,
                                                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (gobject_class,
+                                   PROP_SCALE_FACTOR,
+                                   g_param_spec_uint ("scale-factor", NULL, NULL,
+                                                      1, G_MAXINT, 1,
+                                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   g_object_class_install_property (gobject_class,
                                    PROP_SORT_BY_FRECENCY,
                                    g_param_spec_boolean ("sort-by-frecency", NULL, NULL,
@@ -258,14 +269,11 @@ xfce_appfinder_model_init (XfceAppfinderModel *model)
   model->bookmarks_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
   model->frecencies_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, xfce_appfinder_model_frecency_free);
   model->icon_size = XFCE_APPFINDER_ICON_SIZE_DEFAULT_ITEM;
-  model->command_icon = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_EXECUTE, model->icon_size);
-  model->command_icon_large = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_EXECUTE, XFCE_APPFINDER_ICON_SIZE_48);
   model->command_category = xfce_appfinder_model_get_command_category ();
   model->collect_cancelled = g_cancellable_new ();
 
   model->menu = garcon_menu_new_applications ();
   appfinder_refcount_debug_add (G_OBJECT (model->menu), "main menu");
-  model->collect_thread = g_thread_new ("Collector", xfce_appfinder_model_collect_thread, model);
 }
 
 
@@ -303,6 +311,10 @@ xfce_appfinder_model_get_property (GObject      *object,
       g_value_set_uint (value, model->icon_size);
       break;
 
+    case PROP_SCALE_FACTOR:
+      g_value_set_uint (value, model->scale_factor);
+      break;
+
     case PROP_SORT_BY_FRECENCY:
       g_value_set_boolean (value, model->sort_by_frecency);
       break;
@@ -323,6 +335,7 @@ xfce_appfinder_model_set_property (GObject      *object,
 {
   XfceAppfinderModel    *model = XFCE_APPFINDER_MODEL (object);
   XfceAppfinderIconSize  icon_size;
+  gint                   scale_factor;
 
   switch (prop_id)
     {
@@ -337,6 +350,12 @@ xfce_appfinder_model_set_property (GObject      *object,
         }
       break;
 
+    case PROP_SCALE_FACTOR:
+      scale_factor = g_value_get_uint (value);
+      if (model->scale_factor != scale_factor)
+        model->scale_factor = scale_factor;
+      break;
+
     case PROP_SORT_BY_FRECENCY:
       model->sort_by_frecency = g_value_get_boolean (value);
       break;
@@ -394,8 +413,6 @@ xfce_appfinder_model_finalize (GObject *object)
   g_hash_table_destroy (model->bookmarks_hash);
   g_hash_table_destroy (model->frecencies_hash);
 
-  g_object_unref (G_OBJECT (model->command_icon_large));
-  g_object_unref (G_OBJECT (model->command_icon));
   g_object_unref (G_OBJECT (model->command_category));
 
   APPFINDER_DEBUG ("model finalized");
@@ -436,6 +453,9 @@ xfce_appfinder_model_get_column_type (GtkTreeModel *tree_model,
 
     case XFCE_APPFINDER_MODEL_COLUMN_ICON:
     case XFCE_APPFINDER_MODEL_COLUMN_ICON_LARGE:
+      return CAIRO_GOBJECT_TYPE_SURFACE;
+
+    case XFCE_APPFINDER_MODEL_COLUMN_PIXBUF:
       return GDK_TYPE_PIXBUF;
 
     case XFCE_APPFINDER_MODEL_COLUMN_BOOKMARK:
@@ -509,6 +529,7 @@ xfce_appfinder_model_get_value (GtkTreeModel *tree_model,
   gchar              **cat_arr;
   gchar               *cat_str;
   guint                i;
+  GdkPixbuf           *pixbuf;
 
   appfinder_return_if_fail (XFCE_IS_APPFINDER_MODEL (model));
   appfinder_return_if_fail (iter->stamp == model->stamp);
@@ -561,32 +582,48 @@ xfce_appfinder_model_get_value (GtkTreeModel *tree_model,
       break;
 
     case XFCE_APPFINDER_MODEL_COLUMN_ICON:
-      if (item->icon == NULL
-          && item->item != NULL)
+      if (item->icon == NULL && item->item != NULL)
         {
           name = garcon_menu_item_get_icon_name (item->item);
-          item->icon = xfce_appfinder_model_load_pixbuf (name, model->icon_size);
+          item->icon = xfce_appfinder_model_load_pixbuf (name, model->icon_size, model->scale_factor);
         }
 
-      g_value_init (value, GDK_TYPE_PIXBUF);
-      g_value_set_object (value, item->icon);
+      if (item->surface == NULL && item->icon != NULL)
+        item->surface = gdk_cairo_surface_create_from_pixbuf (item->icon, model->scale_factor, NULL);
+
+      g_value_init (value, CAIRO_GOBJECT_TYPE_SURFACE);
+      g_value_set_boxed (value, item->surface);
       break;
 
     case XFCE_APPFINDER_MODEL_COLUMN_ICON_LARGE:
-      if (item->icon_large == NULL
-          && item->item != NULL)
+      if (item->surface_large == NULL && item->item != NULL)
         {
           name = garcon_menu_item_get_icon_name (item->item);
-          item->icon_large = xfce_appfinder_model_load_pixbuf (name, XFCE_APPFINDER_ICON_SIZE_48);
+          pixbuf = xfce_appfinder_model_load_pixbuf (name, XFCE_APPFINDER_ICON_SIZE_48, model->scale_factor);
+          if (pixbuf != NULL)
+            {
+              item->surface_large = gdk_cairo_surface_create_from_pixbuf (pixbuf, model->scale_factor, NULL);
+              g_object_unref (G_OBJECT (pixbuf));
+            }
+        }
+
+      g_value_init (value, CAIRO_GOBJECT_TYPE_SURFACE);
+      g_value_set_boxed (value, item->surface_large);
+      break;
+
+    case XFCE_APPFINDER_MODEL_COLUMN_PIXBUF:
+      if (item->icon == NULL && item->item != NULL)
+        {
+          name = garcon_menu_item_get_icon_name (item->item);
+          item->icon = xfce_appfinder_model_load_pixbuf (name, model->icon_size, model->scale_factor);
         }
 
       g_value_init (value, GDK_TYPE_PIXBUF);
-      g_value_set_object (value, item->icon_large);
+      g_value_set_object (value, item->icon);
       break;
 
     case XFCE_APPFINDER_MODEL_COLUMN_TOOLTIP:
-      if (item->item != NULL
-          && item->tooltip == NULL)
+      if (item->item != NULL && item->tooltip == NULL)
         {
           file = garcon_menu_item_get_file (item->item);
           parse_name = g_file_get_parse_name (file);
@@ -1061,8 +1098,10 @@ xfce_appfinder_model_item_free (gpointer            data,
     g_hash_table_remove (model->items_hash, item->command);
   if (item->icon != NULL)
     g_object_unref (G_OBJECT (item->icon));
-  if (item->icon_large != NULL)
-    g_object_unref (G_OBJECT (item->icon_large));
+  if (item->surface != NULL)
+    cairo_surface_destroy (item->surface);
+  if (item->surface_large != NULL)
+    cairo_surface_destroy (item->surface_large);
   if (item->categories != NULL)
     g_ptr_array_unref (item->categories);
   g_free (item->abstract);
@@ -1155,8 +1194,6 @@ xfce_appfinder_model_history_insert (XfceAppfinderModel *model,
        g_slice_free (ModelItem, item);
        return FALSE;
     }
-  item->icon = GDK_PIXBUF (g_object_ref (G_OBJECT (model->command_icon)));
-  item->icon_large = GDK_PIXBUF (g_object_ref (G_OBJECT (model->command_icon_large)));
   model->items = g_slist_insert_sorted (model->items, item, xfce_appfinder_model_item_compare);
 
   /* find the item and the position */
@@ -1544,8 +1581,6 @@ xfce_appfinder_model_collect_history (XfceAppfinderModel *model,
         {
           item = g_slice_new0 (ModelItem);
           item->command = g_strndup (contents, end - contents);
-          item->icon = GDK_PIXBUF (g_object_ref (G_OBJECT (model->command_icon)));
-          item->icon_large = GDK_PIXBUF (g_object_ref (G_OBJECT (model->command_icon_large)));
           model->collect_items = g_slist_prepend (model->collect_items, item);
         }
 
@@ -1931,8 +1966,10 @@ xfce_appfinder_model_collect_thread (gpointer user_data)
         }
     }
 
+  xfce_appfinder_model_migrate_history_file ();
+
   /* load command history */
-  filename = xfce_resource_lookup (XFCE_RESOURCE_CACHE, HISTORY_PATH);
+  filename = xfce_resource_lookup (XFCE_RESOURCE_CACHE, NEW_HISTORY_PATH);
   if (G_LIKELY (filename != NULL))
     {
       APPFINDER_DEBUG ("load commands from %s", filename);
@@ -2159,6 +2196,44 @@ xfce_appfinder_model_unescape_entry_value (const gchar *value)
 
 
 
+/* Migration for history cache file, can be removed during the 4.20 cycle */
+static void
+xfce_appfinder_model_migrate_history_file (void)
+{
+  gchar  *filename;
+  GFile  *old_file, *new_file, *dir;
+  GError *error = NULL;
+
+  filename = xfce_resource_lookup (XFCE_RESOURCE_CACHE, OLD_HISTORY_PATH);
+
+  if (filename == NULL)
+    return;
+
+  old_file = g_file_new_for_path (filename);
+  g_free (filename);
+
+  new_file = g_file_resolve_relative_path (old_file, "../../../" NEW_HISTORY_PATH);
+
+  dir = g_file_get_parent (new_file);
+  g_file_make_directory_with_parents (dir, NULL, NULL);
+  g_object_unref (dir);
+
+  if (g_file_query_exists (new_file, NULL))
+    g_warning ("Old and new history files exist, migration aborted");
+  else if (g_file_move (old_file, new_file, G_FILE_COPY_NONE, NULL, NULL, NULL, &error))
+    g_message ("Migration of history file was successful");
+  else
+    {
+      g_warning ("Failed to migrate history file: %s", error->message);
+      g_clear_error (&error);
+    }
+
+  g_object_unref (old_file);
+  g_object_unref (new_file);
+}
+
+
+
 guint
 xfce_appfinder_model_calculate_frecency (guint   frequency,
                                          guint64 recency)
@@ -2272,7 +2347,8 @@ xfce_appfinder_model_update_frecency (XfceAppfinderModel *model,
 
 
 XfceAppfinderModel *
-xfce_appfinder_model_get (gboolean sort_by_frecency)
+xfce_appfinder_model_get (gboolean sort_by_frecency,
+                          gint     scale_factor)
 {
   static XfceAppfinderModel *model = NULL;
 
@@ -2284,7 +2360,14 @@ xfce_appfinder_model_get (gboolean sort_by_frecency)
     {
       model = g_object_new (XFCE_TYPE_APPFINDER_MODEL,
                             "sort-by-frecency", sort_by_frecency,
+                            "scale-factor", scale_factor,
                             NULL);
+
+      xfce_appfinder_model_icon_theme_changed (model);
+
+      /* only start loading data once model is fully initialized */
+      model->collect_thread = g_thread_new ("Collector", xfce_appfinder_model_collect_thread, model);
+
       g_object_add_weak_pointer (G_OBJECT (model), (gpointer) &model);
       appfinder_refcount_debug_add (G_OBJECT (model), "appfinder-model");
       APPFINDER_DEBUG ("allocate new model");
@@ -2519,7 +2602,8 @@ xfce_appfinder_model_execute (XfceAppfinderModel  *model,
 
 GdkPixbuf *
 xfce_appfinder_model_load_pixbuf (const gchar           *icon_name,
-                                  XfceAppfinderIconSize  icon_size)
+                                  XfceAppfinderIconSize  icon_size,
+                                  gint                   scale_factor)
 {
   GdkPixbuf    *pixbuf = NULL;
   GdkPixbuf    *scaled;
@@ -2539,7 +2623,9 @@ xfce_appfinder_model_load_pixbuf (const gchar           *icon_name,
     default: return NULL;
     }
 
-  APPFINDER_DEBUG ("load icon %s at %dpx", icon_name, size);
+  APPFINDER_DEBUG ("load icon %s at %dpx and scale %dx", icon_name, size, scale_factor);
+
+  size *= scale_factor;
 
   if (icon_name != NULL)
     {
@@ -2644,7 +2730,7 @@ xfce_appfinder_model_save_command (XfceAppfinderModel  *model,
       g_string_append_c (contents, '\n');
     }
 
-  filename = xfce_resource_save_location (XFCE_RESOURCE_CACHE, HISTORY_PATH, TRUE);
+  filename = xfce_resource_save_location (XFCE_RESOURCE_CACHE, NEW_HISTORY_PATH, TRUE);
   if (G_LIKELY (filename != NULL))
     succeed = g_file_set_contents (filename, contents->str, contents->len, error);
   else
@@ -2667,12 +2753,13 @@ xfce_appfinder_model_save_command (XfceAppfinderModel  *model,
 
 
 
-GdkPixbuf *
+cairo_surface_t*
 xfce_appfinder_model_get_icon_for_command (XfceAppfinderModel *model,
                                            const gchar        *command)
 {
   ModelItem   *item;
   const gchar *icon_name;
+  GdkPixbuf   *pixbuf;
 
   appfinder_return_val_if_fail (XFCE_IS_APPFINDER_MODEL (model), NULL);
 
@@ -2681,14 +2768,18 @@ xfce_appfinder_model_get_icon_for_command (XfceAppfinderModel *model,
       item = g_hash_table_lookup (model->items_hash, command);
       if (G_LIKELY (item != NULL))
         {
-          if (item->icon_large == NULL
-              && item->item != NULL)
+          if (item->surface_large == NULL && item->item != NULL)
             {
               icon_name = garcon_menu_item_get_icon_name (item->item);
-              item->icon_large = xfce_appfinder_model_load_pixbuf (icon_name, XFCE_APPFINDER_ICON_SIZE_48);
+              pixbuf = xfce_appfinder_model_load_pixbuf (icon_name, XFCE_APPFINDER_ICON_SIZE_48, model->scale_factor);
+              if (pixbuf != NULL)
+              {
+                item->surface_large = gdk_cairo_surface_create_from_pixbuf (pixbuf, model->scale_factor, NULL);
+                g_object_unref (G_OBJECT (pixbuf));
+              }
             }
 
-          return GDK_PIXBUF (g_object_ref (G_OBJECT (item->icon_large)));
+          return cairo_surface_reference (item->surface_large);
         }
     }
 
@@ -2712,15 +2803,6 @@ xfce_appfinder_model_icon_theme_changed (XfceAppfinderModel *model)
   APPFINDER_DEBUG ("icon theme or size changed, updating %d items",
                    g_slist_length (model->items));
 
-  /* reload the command icons */
-  if (model->command_icon != NULL)
-    g_object_unref (G_OBJECT (model->command_icon));
-  model->command_icon = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_EXECUTE, model->icon_size);
-
-  if (model->command_icon_large != NULL)
-    g_object_unref (G_OBJECT (model->command_icon_large));
-  model->command_icon_large = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_EXECUTE, XFCE_APPFINDER_ICON_SIZE_48);
-
   /* update the model items */
   for (li = model->items, idx = 0; li != NULL; li = li->next, idx++)
     {
@@ -2733,10 +2815,16 @@ xfce_appfinder_model_icon_theme_changed (XfceAppfinderModel *model)
           item->icon = NULL;
           item_changed = TRUE;
         }
-      if (item->icon_large != NULL)
+      if (item->surface != NULL)
         {
-          g_object_unref (G_OBJECT (item->icon_large));
-          item->icon_large = NULL;
+          cairo_surface_destroy (item->surface);
+          item->surface = NULL;
+          item_changed = TRUE;
+        }
+      if (item->surface_large != NULL)
+        {
+          cairo_surface_destroy (item->surface_large);
+          item->surface_large = NULL;
           item_changed = TRUE;
         }
       if (item->abstract != NULL)
@@ -2746,12 +2834,6 @@ xfce_appfinder_model_icon_theme_changed (XfceAppfinderModel *model)
           item_changed = TRUE;
         }
 
-      if (item->item == NULL)
-        {
-          item->icon = GDK_PIXBUF (g_object_ref (G_OBJECT (model->command_icon)));
-          item->icon_large = GDK_PIXBUF (g_object_ref (G_OBJECT (model->command_icon_large)));
-        }
-
       if (item_changed)
         {
           path = gtk_tree_path_new_from_indices (idx, -1);
@@ -2775,7 +2857,7 @@ xfce_appfinder_model_history_clear (XfceAppfinderModel *model)
   xfce_appfinder_model_history_remove_items (model);
 
   /* remove the history file */
-  filename = xfce_resource_save_location (XFCE_RESOURCE_CACHE, HISTORY_PATH, FALSE);
+  filename = xfce_resource_save_location (XFCE_RESOURCE_CACHE, NEW_HISTORY_PATH, FALSE);
   if (filename != NULL)
     g_unlink (filename);
   g_free (filename);


=====================================
src/appfinder-model.h
=====================================
@@ -40,6 +40,7 @@ enum
   XFCE_APPFINDER_MODEL_COLUMN_TITLE,
   XFCE_APPFINDER_MODEL_COLUMN_ICON,
   XFCE_APPFINDER_MODEL_COLUMN_ICON_LARGE,
+  XFCE_APPFINDER_MODEL_COLUMN_PIXBUF,
   XFCE_APPFINDER_MODEL_COLUMN_COMMAND,
   XFCE_APPFINDER_MODEL_COLUMN_URI,
   XFCE_APPFINDER_MODEL_COLUMN_BOOKMARK,
@@ -69,7 +70,8 @@ XfceAppfinderIconSize;
 
 GType                xfce_appfinder_model_get_type               (void) G_GNUC_CONST;
 
-XfceAppfinderModel  *xfce_appfinder_model_get                    (gboolean                   sort_by_frecency) G_GNUC_MALLOC;
+XfceAppfinderModel  *xfce_appfinder_model_get                    (gboolean                   sort_by_frecency,
+                                                                  gint                       scale_factor) G_GNUC_MALLOC;
 
 GSList              *xfce_appfinder_model_get_categories         (XfceAppfinderModel        *model);
 
@@ -90,13 +92,14 @@ gboolean             xfce_appfinder_model_execute                (XfceAppfinderM
                                                                   GError                   **error);
 
 GdkPixbuf           *xfce_appfinder_model_load_pixbuf            (const gchar               *icon_name,
-                                                                  XfceAppfinderIconSize      icon_size) G_GNUC_MALLOC;
+                                                                  XfceAppfinderIconSize      icon_size,
+                                                                  gint                       scale_factor) G_GNUC_MALLOC;
 
 gboolean             xfce_appfinder_model_save_command           (XfceAppfinderModel        *model,
                                                                   const gchar               *command,
                                                                   GError                   **error);
 
-GdkPixbuf           *xfce_appfinder_model_get_icon_for_command   (XfceAppfinderModel        *model,
+cairo_surface_t     *xfce_appfinder_model_get_icon_for_command   (XfceAppfinderModel        *model,
                                                                   const gchar               *command);
 
 void                 xfce_appfinder_model_icon_theme_changed     (XfceAppfinderModel        *model);


=====================================
src/appfinder-preferences.c
=====================================
@@ -260,6 +260,8 @@ static void
 xfce_appfinder_preferences_clear_history (XfceAppfinderPreferences *preferences)
 {
   XfceAppfinderModel *model;
+  gboolean            sort_by_frecency;
+  gint                scale_factor;
 
   appfinder_return_if_fail (XFCE_IS_APPFINDER_PREFERENCES (preferences));
 
@@ -267,7 +269,9 @@ xfce_appfinder_preferences_clear_history (XfceAppfinderPreferences *preferences)
                            _("This will permanently clear the custom command history."),
                            _("Are you sure you want to clear the command history?")))
     {
-      model = xfce_appfinder_model_get (xfconf_channel_get_bool (preferences->channel, "/sort-by-frecency", FALSE));
+      sort_by_frecency = xfconf_channel_get_bool (preferences->channel, "/sort-by-frecency", FALSE);
+      scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (preferences->dialog));
+      model = xfce_appfinder_model_get (sort_by_frecency, scale_factor);
       xfce_appfinder_model_history_clear (model);
       g_object_unref (G_OBJECT (model));
     }


=====================================
src/appfinder-window.c
=====================================
@@ -49,8 +49,8 @@
 
 
 
-#define DEFAULT_WINDOW_WIDTH   400
-#define DEFAULT_WINDOW_HEIGHT  400
+#define DEFAULT_WINDOW_WIDTH   580
+#define DEFAULT_WINDOW_HEIGHT  422
 #define DEFAULT_PANED_POSITION 180
 
 #define XFCE_APPFINDER_LOCAL_PREFIX "file://"
@@ -217,15 +217,20 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   GtkEntryCompletion *completion;
   GtkCellRenderer    *cell;
   gint                integer;
+  gboolean            sort_by_frecency;
+  gint                scale_factor;
+
+  scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (window));
 
   window->channel = xfconf_channel_get ("xfce4-appfinder");
   window->last_window_height = xfconf_channel_get_int (window->channel, "/last/window-height", DEFAULT_WINDOW_HEIGHT);
 
-  window->category_model = xfce_appfinder_category_model_new ();
+  window->category_model = xfce_appfinder_category_model_new (scale_factor);
   xfconf_g_property_bind (window->channel, "/category-icon-size", G_TYPE_UINT,
                           G_OBJECT (window->category_model), "icon-size");
 
-  window->model = xfce_appfinder_model_get (xfconf_channel_get_bool (window->channel, "/sort-by-frecency", FALSE));
+  sort_by_frecency = xfconf_channel_get_bool (window->channel, "/sort-by-frecency", FALSE);
+  window->model = xfce_appfinder_model_get (sort_by_frecency, scale_factor);
   xfconf_g_property_bind (window->channel, "/item-icon-size", G_TYPE_UINT,
                           G_OBJECT (window->model), "icon-size");
 
@@ -234,7 +239,7 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   gtk_window_set_default_size (GTK_WINDOW (window), integer, -1);
   gtk_window_set_icon_name (GTK_WINDOW (window), "org.xfce.appfinder");
 
-  if (xfconf_channel_get_bool (window->channel, "/always-center", FALSE))
+  if (xfconf_channel_get_bool (window->channel, "/always-center", TRUE))
     gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
 
   if (xfconf_channel_get_bool (window->channel, "/hide-window-decorations", FALSE))
@@ -249,7 +254,9 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
   gtk_widget_show (hbox);
 
-  window->icon_find = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_FIND, XFCE_APPFINDER_ICON_SIZE_DEFAULT_ITEM);
+  window->icon_find = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_FIND,
+                                                        XFCE_APPFINDER_ICON_SIZE_DEFAULT_ITEM,
+                                                        scale_factor);
   window->image = image = gtk_image_new_from_pixbuf (window->icon_find);
   gtk_widget_set_size_request (image, 48, 48);
   gtk_widget_set_halign(image, GTK_ALIGN_CENTER);
@@ -307,7 +314,7 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   gtk_widget_show (scroll);
 
-  if (xfconf_channel_get_bool (window->channel, "/hide-category-pane", FALSE))
+  if (xfconf_channel_get_bool (window->channel, "/hide-category-pane", TRUE))
     gtk_widget_set_visible (scroll, FALSE);
 
   sidepane = window->sidepane = gtk_tree_view_new_with_model (GTK_TREE_MODEL (window->category_model));
@@ -334,7 +341,7 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   renderer = gtk_cell_renderer_pixbuf_new ();
   gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), renderer, FALSE);
   gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer,
-                                       "pixbuf", XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_ICON, NULL);
+                                       "surface", XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_ICON, NULL);
 
   renderer = gtk_cell_renderer_text_new ();
   g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
@@ -377,11 +384,16 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   image = gtk_image_new_from_icon_name (XFCE_APPFINDER_ICON_NAME_EXECUTE, GTK_ICON_SIZE_BUTTON);
   gtk_button_set_image (GTK_BUTTON (button), image);
 
+  /* update icons when icon theme changes */
   window->icon_theme = gtk_icon_theme_get_for_screen (gtk_window_get_screen (GTK_WINDOW (window)));
   g_signal_connect_swapped (G_OBJECT (window->icon_theme), "changed",
       G_CALLBACK (xfce_appfinder_window_icon_theme_changed), window);
   g_object_ref (G_OBJECT (window->icon_theme));
 
+  /* update icons when scale factor changes */
+  g_signal_connect (G_OBJECT (window), "notify::scale-factor",
+      G_CALLBACK (xfce_appfinder_window_icon_theme_changed), NULL);
+
   /* load categories in the model */
   xfce_appfinder_window_category_set_categories (NULL, window);
   window->categories_changed_id =
@@ -410,6 +422,9 @@ xfce_appfinder_window_finalize (GObject *object)
   g_signal_handler_disconnect (window->channel, window->property_watch_id);
   g_signal_handler_disconnect (window->model, window->categories_changed_id);
 
+  g_signal_handlers_disconnect_by_func (G_OBJECT (window),
+      xfce_appfinder_window_icon_theme_changed, NULL);
+
   /* release our reference on the icon theme */
   g_signal_handlers_disconnect_by_func (G_OBJECT (window->icon_theme),
       xfce_appfinder_window_icon_theme_changed, window);
@@ -534,7 +549,7 @@ xfce_appfinder_window_window_state_event (GtkWidget           *widget,
 
           /* set sensible width instead of taking entire width */
           width = xfconf_channel_get_int (window->channel, "/last/window-width", DEFAULT_WINDOW_WIDTH);
-          gtk_window_resize (GTK_WINDOW (widget), width, 100 /* should be corrected by wm */);
+          gtk_window_resize (GTK_WINDOW (widget), width, 80 /* should be corrected by wm */);
         }
 
       if ((event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)
@@ -695,14 +710,20 @@ xfce_appfinder_window_view (XfceAppfinderWindow *window)
       gtk_widget_destroy (window->view);
     }
 
-  window->filter_model = gtk_tree_model_filter_new (GTK_TREE_MODEL (window->model), NULL);
-  gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (window->filter_model), xfce_appfinder_window_item_visible, window, NULL);
+  if (window->filter_model == NULL)
+    {
+      window->filter_model = gtk_tree_model_filter_new (GTK_TREE_MODEL (window->model), NULL);
+      gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (window->filter_model), xfce_appfinder_window_item_visible, window, NULL);
+    }
 
-  window->sort_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (window->filter_model));
-  if (xfconf_channel_get_bool (window->channel, "/sort-by-frecency", FALSE))
-    gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (window->sort_model), xfce_appfinder_window_sort_items_frecency, window->entry, NULL);
-  else
-    gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (window->sort_model), xfce_appfinder_window_sort_items, window->entry, NULL);
+  if (window->sort_model == NULL)
+    {
+      window->sort_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (window->filter_model));
+      if (xfconf_channel_get_bool (window->channel, "/sort-by-frecency", FALSE))
+        gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (window->sort_model), xfce_appfinder_window_sort_items_frecency, window->entry, NULL);
+      else
+        gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (window->sort_model), xfce_appfinder_window_sort_items, window->entry, NULL);
+    }
 
   if (icon_view)
     {
@@ -712,7 +733,7 @@ xfce_appfinder_window_view (XfceAppfinderWindow *window)
           window->filter_model);
 
       gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (view), GTK_SELECTION_SINGLE);
-      gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (view), XFCE_APPFINDER_MODEL_COLUMN_ICON);
+      gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (view), XFCE_APPFINDER_MODEL_COLUMN_PIXBUF);
       gtk_icon_view_set_text_column (GTK_ICON_VIEW (view), XFCE_APPFINDER_MODEL_COLUMN_TITLE);
       gtk_icon_view_set_tooltip_column (GTK_ICON_VIEW (view), XFCE_APPFINDER_MODEL_COLUMN_TOOLTIP);
       gtk_icon_view_set_row_spacing (GTK_ICON_VIEW (view), 0);
@@ -749,7 +770,7 @@ xfce_appfinder_window_view (XfceAppfinderWindow *window)
       renderer = gtk_cell_renderer_pixbuf_new ();
       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), renderer, FALSE);
       gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (column), renderer,
-                                      "pixbuf", XFCE_APPFINDER_MODEL_COLUMN_ICON, NULL);
+                                      "surface", XFCE_APPFINDER_MODEL_COLUMN_ICON, NULL);
 
       renderer = gtk_cell_renderer_text_new ();
       g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
@@ -1159,14 +1180,23 @@ xfce_appfinder_window_popup_menu (GtkWidget           *view,
 
 static void
 xfce_appfinder_window_update_image (XfceAppfinderWindow *window,
-                                    GdkPixbuf           *pixbuf)
+                                    cairo_surface_t     *surface)
 {
-  if (pixbuf == NULL)
-    pixbuf = window->icon_find;
+  gint     scale_factor;
+  gboolean free_surface = FALSE;
+
+  if (surface == NULL)
+    {
+      scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (window));
+      surface = gdk_cairo_surface_create_from_pixbuf (window->icon_find, scale_factor,
+                                                      gtk_widget_get_window (GTK_WIDGET (window)));
+      free_surface = TRUE;
+    }
+
+    gtk_image_set_from_surface (GTK_IMAGE (window->image), surface);
 
-  /* gtk doesn't check this */
-  if (gtk_image_get_pixbuf (GTK_IMAGE (window->image)) != pixbuf)
-    gtk_image_set_from_pixbuf (GTK_IMAGE (window->image), pixbuf);
+    if (free_surface)
+      cairo_surface_destroy (surface);
 }
 
 
@@ -1215,7 +1245,7 @@ xfce_appfinder_window_entry_changed_idle (gpointer data)
 {
   XfceAppfinderWindow *window = XFCE_APPFINDER_WINDOW (data);
   const gchar         *text;
-  GdkPixbuf           *pixbuf;
+  cairo_surface_t     *surface;
   gchar               *normalized;
   GtkTreePath         *path;
   GtkTreeSelection    *selection;
@@ -1288,10 +1318,10 @@ xfce_appfinder_window_entry_changed_idle (gpointer data)
       gtk_entry_set_icon_from_icon_name (GTK_ENTRY (window->entry), GTK_ENTRY_ICON_PRIMARY, NULL);
       gtk_entry_set_icon_tooltip_text (GTK_ENTRY (window->entry), GTK_ENTRY_ICON_PRIMARY, NULL);
 
-      pixbuf = xfce_appfinder_model_get_icon_for_command (window->model, text);
-      xfce_appfinder_window_update_image (window, pixbuf);
-      if (pixbuf != NULL)
-        g_object_unref (G_OBJECT (pixbuf));
+      surface = xfce_appfinder_model_get_icon_for_command (window->model, text);
+      xfce_appfinder_window_update_image (window, surface);
+      if (surface != NULL)
+        cairo_surface_destroy (surface);
     }
 
 
@@ -1428,17 +1458,17 @@ xfce_appfinder_window_drag_begin (GtkWidget           *widget,
                                   GdkDragContext      *drag_context,
                                   XfceAppfinderWindow *window)
 {
-  GtkTreeModel *model;
-  GtkTreeIter   iter;
-  GdkPixbuf    *pixbuf;
+  GtkTreeModel    *model;
+  GtkTreeIter      iter;
+  cairo_surface_t *surface;
 
   if (xfce_appfinder_window_view_get_selected (window, &model, &iter))
     {
-      gtk_tree_model_get (model, &iter, XFCE_APPFINDER_MODEL_COLUMN_ICON_LARGE, &pixbuf, -1);
-      if (G_LIKELY (pixbuf != NULL))
+      gtk_tree_model_get (model, &iter, XFCE_APPFINDER_MODEL_COLUMN_ICON_LARGE, &surface, -1);
+      if (G_LIKELY (surface != NULL))
         {
-          gtk_drag_set_icon_pixbuf (drag_context, pixbuf, 0, 0);
-          g_object_unref (G_OBJECT (pixbuf));
+          gtk_drag_set_icon_surface (drag_context, surface);
+          cairo_surface_destroy (surface);
         }
     }
   else
@@ -1715,7 +1745,7 @@ xfce_appfinder_window_item_changed (XfceAppfinderWindow *window)
   GtkTreeIter       iter;
   GtkTreeModel     *model;
   gboolean          can_launch;
-  GdkPixbuf        *pixbuf;
+  cairo_surface_t  *surface;
 
   if (gtk_widget_get_visible (window->paned))
     {
@@ -1724,11 +1754,11 @@ xfce_appfinder_window_item_changed (XfceAppfinderWindow *window)
 
       if (can_launch)
         {
-          gtk_tree_model_get (model, &iter, XFCE_APPFINDER_MODEL_COLUMN_ICON_LARGE, &pixbuf, -1);
-          if (G_LIKELY (pixbuf != NULL))
+          gtk_tree_model_get (model, &iter, XFCE_APPFINDER_MODEL_COLUMN_ICON_LARGE, &surface, -1);
+          if (G_LIKELY (surface != NULL))
             {
-              xfce_appfinder_window_update_image (window, pixbuf);
-              g_object_unref (G_OBJECT (pixbuf));
+              xfce_appfinder_window_update_image (window, surface);
+              cairo_surface_destroy (surface);
             }
         }
       else
@@ -1752,18 +1782,30 @@ xfce_appfinder_window_row_activated (XfceAppfinderWindow *window)
 static void
 xfce_appfinder_window_icon_theme_changed (XfceAppfinderWindow *window)
 {
+  gint scale_factor;
+
   appfinder_return_if_fail (XFCE_IS_APPFINDER_WINDOW (window));
 
+  scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (window));
+
   if (window->icon_find != NULL)
     g_object_unref (G_OBJECT (window->icon_find));
-  window->icon_find = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_FIND, XFCE_APPFINDER_ICON_SIZE_DEFAULT_ITEM);
+  window->icon_find = xfce_appfinder_model_load_pixbuf (XFCE_APPFINDER_ICON_NAME_FIND,
+                                                        XFCE_APPFINDER_ICON_SIZE_DEFAULT_ITEM,
+                                                        scale_factor);
 
-  /* drop cached pixbufs */
+  /* drop cached pixbufs and surfaces */
   if (G_LIKELY (window->model != NULL))
-    xfce_appfinder_model_icon_theme_changed (window->model);
+    {
+      g_object_set (window->model, "scale-factor", scale_factor, NULL);
+      xfce_appfinder_model_icon_theme_changed (window->model);
+    }
 
   if (G_LIKELY (window->category_model != NULL))
-    xfce_appfinder_category_model_icon_theme_changed (window->category_model);
+    {
+      g_object_set (window->category_model, "scale-factor", scale_factor, NULL);
+      xfce_appfinder_category_model_icon_theme_changed (window->category_model);
+    }
 
   /* update state */
   xfce_appfinder_window_entry_changed (window);
@@ -1969,27 +2011,25 @@ void
 xfce_appfinder_window_set_expanded (XfceAppfinderWindow *window,
                                     gboolean             expanded)
 {
-  GdkGeometry         hints;
   gint                width;
   GtkEntryCompletion *completion;
 
   APPFINDER_DEBUG ("set expand = %s", expanded ? "true" : "false");
 
-  /* force window geomentry */
+  /* update window geometry */
   if (expanded)
     {
-      gtk_window_set_geometry_hints (GTK_WINDOW (window), NULL, NULL, 0);
       gtk_window_get_size (GTK_WINDOW (window), &width, NULL);
       gtk_window_resize (GTK_WINDOW (window), width, window->last_window_height);
     }
   else
     {
       if (gtk_widget_get_visible (GTK_WIDGET (window)))
-        gtk_window_get_size (GTK_WINDOW (window), NULL, &window->last_window_height);
+        gtk_window_get_size (GTK_WINDOW (window), &width, &window->last_window_height);
+      else
+        width = xfconf_channel_get_int (window->channel, "/last/window-width", DEFAULT_WINDOW_WIDTH);
 
-      hints.max_height = -1;
-      hints.max_width = G_MAXINT;
-      gtk_window_set_geometry_hints (GTK_WINDOW (window), NULL, &hints, GDK_HINT_MAX_SIZE);
+      gtk_window_resize (GTK_WINDOW (window), width, 80 /* should be corrected by wm */);
     }
 
   /* show/hide pane with treeviews */


=====================================
src/main.c
=====================================
@@ -137,6 +137,8 @@ static void
 appfinder_window_destroyed (GtkWidget *window)
 {
   XfconfChannel *channel;
+  gboolean       sort_by_frecency;
+  gint           scale_factor;
 
   if (windows == NULL)
     return;
@@ -146,7 +148,9 @@ appfinder_window_destroyed (GtkWidget *window)
     {
       APPFINDER_DEBUG ("main took reference on the main model");
       channel = xfconf_channel_get ("xfce4-appfinder");
-      model_cache = xfce_appfinder_model_get (xfconf_channel_get_bool (channel, "/sort-by-frecency", FALSE));
+      sort_by_frecency = xfconf_channel_get_bool (channel, "/sort-by-frecency", FALSE);
+      scale_factor = gtk_widget_get_scale_factor (window);
+      model_cache = xfce_appfinder_model_get (sort_by_frecency, scale_factor);
     }
 
   /* remove from internal list */
@@ -238,7 +242,7 @@ main (gint argc, gchar **argv)
   if (opt_version)
     {
       g_print ("%s %s (Xfce %s)\n\n", PACKAGE_NAME, PACKAGE_VERSION, xfce_version_string ());
-      g_print ("%s\n", "Copyright (c) 2004-2020");
+      g_print ("%s\n", "Copyright (c) 2004-2022");
       g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved."));
       g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT);
       g_print ("\n");



View it on GitLab: https://salsa.debian.org/xfce-team/desktop/xfce4-appfinder/-/commit/0d3766f54911297043b7a51f4563bdaf980edac4

-- 
View it on GitLab: https://salsa.debian.org/xfce-team/desktop/xfce4-appfinder/-/commit/0d3766f54911297043b7a51f4563bdaf980edac4
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/20221205/2aa84ff7/attachment-0001.htm>


More information about the Pkg-xfce-commits mailing list