Diff of the two buildlogs:

--
--- b1/build.log	2025-02-10 03:50:28.919370196 +0000
+++ b2/build.log	2025-02-10 04:25:36.343602321 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Sat Mar 14 22:03:10 -12 2026
-I: pbuilder-time-stamp: 1773568990
+I: Current time: Mon Feb 10 17:50:34 +14 2025
+I: pbuilder-time-stamp: 1739159434
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz]
 I: copying local configuration
@@ -32,52 +32,84 @@
 dpkg-source: info: applying 0007-fix-build-with-mupdf-0.23.0.patch
 I: Not using root during the build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/1303810/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/D01_modify_environment starting
+debug: Running on ionos11-amd64.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Feb 10 03:50 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='amd64'
-  DEBIAN_FRONTEND='noninteractive'
-  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 '
-  DISTRIBUTION='unstable'
-  HOME='/root'
-  HOST_ARCH='amd64'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
+  BASH_VERSION='5.2.37(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=amd64
+  DEBIAN_FRONTEND=noninteractive
+  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 '
+  DIRSTACK=()
+  DISTRIBUTION=unstable
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=x86_64
+  HOST_ARCH=amd64
   IFS=' 	
   '
-  INVOCATION_ID='7a2ee6e918ab4ac4a11ba9b6314c27d1'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='1303810'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=1301f54873414695bf5fea488f749c65
+  LANG=C
+  LANGUAGE=et_EE:et
+  LC_ALL=C
+  MACHTYPE=x86_64-pc-linux-gnu
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnu
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=2169272
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Ld3eihEg/pbuilderrc_sBX4 --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Ld3eihEg/b1 --logfile b1/build.log sioyek_2.0.0+dfsg-5.1.dsc'
-  SUDO_GID='110'
-  SUDO_UID='105'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
-  http_proxy='http://213.165.73.152:3128'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Ld3eihEg/pbuilderrc_Shoi --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Ld3eihEg/b2 --logfile b2/build.log sioyek_2.0.0+dfsg-5.1.dsc'
+  SUDO_GID=111
+  SUDO_UID=106
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
+  http_proxy=http://46.16.76.132:3128
 I: uname -a
-  Linux ionos5-amd64 6.12.9+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.9-1~bpo12+1 (2025-01-19) x86_64 GNU/Linux
+  Linux i-capture-the-hostname 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux
 I: ls -l /bin
-  lrwxrwxrwx 1 root root 7 Nov 22  2024 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/1303810/tmp/hooks/D02_print_environment finished
+  lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -413,7 +445,7 @@
 Get: 277 http://deb.debian.org/debian unstable/main amd64 qt3d5-dev amd64 5.15.15+dfsg-3 [98.6 kB]
 Get: 278 http://deb.debian.org/debian unstable/main amd64 texlive-pictures all 2024.20250114-1 [17.1 MB]
 Get: 279 http://deb.debian.org/debian unstable/main amd64 texlive-latex-extra all 2024.20250114-1 [24.7 MB]
-Fetched 282 MB in 7s (42.8 MB/s)
+Fetched 282 MB in 29s (9605 kB/s)
 Preconfiguring packages ...
 Selecting previously unselected package fonts-lato.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19806 files and directories currently installed.)
@@ -1318,8 +1350,8 @@
 Setting up tzdata (2025a-2) ...
 
 Current default time zone: 'Etc/UTC'
-Local time is now:      Sun Mar 15 10:05:14 UTC 2026.
-Universal Time is now:  Sun Mar 15 10:05:14 UTC 2026.
+Local time is now:      Mon Feb 10 03:57:53 UTC 2025.
+Universal Time is now:  Mon Feb 10 03:57:53 UTC 2025.
 Run 'dpkg-reconfigure tzdata' if you wish to change it.
 
 Setting up libxcb-present0:amd64 (1.17.0-2+b1) ...
@@ -1585,7 +1617,11 @@
 Building tag database...
  -> Finished parsing the build-deps
 I: Building the package
-I: Running cd /build/reproducible-path/sioyek-2.0.0+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../sioyek_2.0.0+dfsg-5.1_source.changes
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for unstable
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/sioyek-2.0.0+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../sioyek_2.0.0+dfsg-5.1_source.changes
 dpkg-buildpackage: info: source package sioyek
 dpkg-buildpackage: info: source version 2.0.0+dfsg-5.1
 dpkg-buildpackage: info: source distribution unstable
@@ -1604,7 +1640,7 @@
 	qmake -makefile "QMAKE_CFLAGS_RELEASE=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "QMAKE_CFLAGS_DEBUG=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "QMAKE_CXXFLAGS_RELEASE=-g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "QMAKE_CXXFLAGS_DEBUG=-g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "QMAKE_LFLAGS_RELEASE=-Wl,-z,relro -Wl,-z,now" "QMAKE_LFLAGS_DEBUG=-Wl,-z,relro -Wl,-z,now" QMAKE_STRIP=: PREFIX=/usr
 Info: creating stash file /build/reproducible-path/sioyek-2.0.0+dfsg/.qmake.stash
    dh_auto_build
-	make -j42
+	make -j20
 make[1]: Entering directory '/build/reproducible-path/sioyek-2.0.0+dfsg'
 g++ -c -pipe -std=c++17 -g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Ipdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o book.o pdf_viewer/book.cpp
 g++ -c -pipe -std=c++17 -g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Ipdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o config.o pdf_viewer/config.cpp
@@ -1629,7 +1665,6 @@
 /usr/lib/qt5/bin/moc -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB --include /build/reproducible-path/sioyek-2.0.0+dfsg/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/build/reproducible-path/sioyek-2.0.0+dfsg -I/build/reproducible-path/sioyek-2.0.0+dfsg/pdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/14 -I/usr/include/x86_64-linux-gnu/c++/14 -I/usr/include/c++/14/backward -I/usr/lib/gcc/x86_64-linux-gnu/14/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include pdf_viewer/RunGuard.h -o moc_RunGuard.cpp
 /usr/lib/qt5/bin/moc -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB --include /build/reproducible-path/sioyek-2.0.0+dfsg/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/build/reproducible-path/sioyek-2.0.0+dfsg -I/build/reproducible-path/sioyek-2.0.0+dfsg/pdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/14 -I/usr/include/x86_64-linux-gnu/c++/14 -I/usr/include/c++/14/backward -I/usr/lib/gcc/x86_64-linux-gnu/14/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include pdf_viewer/OpenWithApplication.h -o moc_OpenWithApplication.cpp
 g++ -c -pipe -std=c++17 -g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Ipdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o moc_RunGuard.o moc_RunGuard.cpp
-g++ -c -pipe -std=c++17 -g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Ipdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o moc_OpenWithApplication.o moc_OpenWithApplication.cpp
 g++ -c -pipe -std=c++17 -g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Ipdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o moc_pdf_renderer.o moc_pdf_renderer.cpp
 pdf_viewer/database.cpp:408:1: warning: multi-line comment [-Wcomment]
   408 | //      const char* insert_books_sql = ""\
@@ -1637,20 +1672,18 @@
 pdf_viewer/main_widget.cpp:2956:5: warning: multi-line comment [-Wcomment]
  2956 |     //std::optional<std::pair<std::wstring, std::wstring>> generic_pair =\
       |     ^
+g++ -c -pipe -std=c++17 -g -O2 -ffile-prefix-map=/build/reproducible-path/sioyek-2.0.0+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_3DINPUT_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_WIDGETS_LIB -DNON_PORTABLE -DLINUX_STANDARD_PATHS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_3DINPUT_LIB -DQT_3DCORE_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Ipdf_viewer -I/include -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGL -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/Qt3DInput -I/usr/include/x86_64-linux-gnu/qt5/Qt3DCore -I/usr/include/x86_64-linux-gnu/qt5/QtOpenGLExtensions -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o moc_OpenWithApplication.o moc_OpenWithApplication.cpp
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
                  from pdf_viewer/path.h:5,
-                 from pdf_viewer/path.cpp:2:
+                 from pdf_viewer/config.h:9,
+                 from pdf_viewer/config.cpp:1:
 pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
   268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
       |                                  ^~~~~~~~
 In file included from /usr/include/c++/14/bits/stl_algobase.h:65,
-                 from /usr/include/c++/14/algorithm:60,
-                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:142,
-                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:43,
-                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:49,
-                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qdir.h:43,
-                 from pdf_viewer/path.cpp:1:
+                 from /usr/include/c++/14/vector:62,
+                 from pdf_viewer/config.h:3:
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
@@ -1661,11 +1694,13 @@
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
-pdf_viewer/path.cpp: In member function 'std::string Path::get_path_utf8() const':
-pdf_viewer/path.cpp:56:25: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
-   56 |         return std::move(utf8_encode(get_path()));
-      |                ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/path.cpp:56:25: note: remove 'std::move' call
+pdf_viewer/config.cpp: In constructor 'ConfigManager::ConfigManager(const Path&, const Path&, const std::vector<Path>&)':
+pdf_viewer/config.cpp:294:14: warning: unused variable 'vec3_deserializer' [-Wunused-variable]
+  294 |         auto vec3_deserializer = vec_n_deserializer<3, float>;
+      |              ^~~~~~~~~~~~~~~~~
+pdf_viewer/config.cpp:295:14: warning: unused variable 'vec4_deserializer' [-Wunused-variable]
+  295 |         auto vec4_deserializer = vec_n_deserializer<4, float>;
+      |              ^~~~~~~~~~~~~~~~~
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
                  from pdf_viewer/database.h:9,
@@ -1689,14 +1724,18 @@
       |                                  ^~~~~~~~
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
-                 from pdf_viewer/pdf_renderer.cpp:2:
+                 from pdf_viewer/path.h:5,
+                 from pdf_viewer/path.cpp:2:
 pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
   268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
       |                                  ^~~~~~~~
 In file included from /usr/include/c++/14/bits/stl_algobase.h:65,
-                 from /usr/include/c++/14/vector:62,
-                 from pdf_viewer/pdf_renderer.h:3,
-                 from pdf_viewer/pdf_renderer.cpp:1:
+                 from /usr/include/c++/14/algorithm:60,
+                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:142,
+                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:43,
+                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:49,
+                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qdir.h:43,
+                 from pdf_viewer/path.cpp:1:
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
@@ -1709,18 +1748,14 @@
       |                                  ^~~~~~~~
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
-                 from pdf_viewer/database.h:9,
-                 from pdf_viewer/document.h:22,
-                 from pdf_viewer/document_view.h:22,
-                 from pdf_viewer/main_widget.h:17,
-                 from pdf_viewer/new_file_checker.h:3,
-                 from pdf_viewer/new_file_checker.cpp:1:
+                 from pdf_viewer/pdf_renderer.cpp:2:
 pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
   268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
       |                                  ^~~~~~~~
-In file included from /usr/include/c++/14/bits/stl_iterator_base_funcs.h:66,
-                 from /usr/include/c++/14/string:47,
-                 from pdf_viewer/main_widget.h:3:
+In file included from /usr/include/c++/14/bits/stl_algobase.h:65,
+                 from /usr/include/c++/14/vector:62,
+                 from pdf_viewer/pdf_renderer.h:3,
+                 from pdf_viewer/pdf_renderer.cpp:1:
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
@@ -1731,6 +1766,11 @@
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
+pdf_viewer/path.cpp: In member function 'std::string Path::get_path_utf8() const':
+pdf_viewer/path.cpp:56:25: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
+   56 |         return std::move(utf8_encode(get_path()));
+      |                ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
+pdf_viewer/path.cpp:56:25: note: remove 'std::move' call
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
                  from pdf_viewer/database.h:9,
@@ -1783,15 +1823,14 @@
       |                                  ^~~~~~~~
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
-                 from pdf_viewer/path.h:5,
-                 from pdf_viewer/config.h:9,
-                 from pdf_viewer/config.cpp:1:
+                 from pdf_viewer/utils.cpp:6:
 pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
   268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
       |                                  ^~~~~~~~
 In file included from /usr/include/c++/14/bits/stl_algobase.h:65,
-                 from /usr/include/c++/14/vector:62,
-                 from pdf_viewer/config.h:3:
+                 from /usr/include/c++/14/bits/specfun.h:43,
+                 from /usr/include/c++/14/cmath:3906,
+                 from pdf_viewer/utils.cpp:4:
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
@@ -1819,17 +1858,10 @@
 pdf_viewer/database.cpp:34:81: warning: unused parameter 'col_name' [-Wunused-parameter]
    34 | static int opened_book_callback(void* res_vector, int argc, char** argv, char** col_name) {
       |                                                                          ~~~~~~~^~~~~~~~
-pdf_viewer/input.cpp: In constructor 'CommandManager::CommandManager(ConfigManager*)':
-pdf_viewer/input.cpp:176:35: warning: missing initializer for member 'Command::special_symbols' [-Wmissing-field-initializers]
-  176 |                 commands.push_back({ utf8_encode(command_name) , false, false, false, false, true});
-      |                 ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/database.cpp: In function 'int prev_doc_callback(void*, int, char**, char**)':
 pdf_viewer/database.cpp:49:78: warning: unused parameter 'col_name' [-Wunused-parameter]
    49 | static int prev_doc_callback(void* res_vector, int argc, char** argv, char** col_name) {
       |                                                                       ~~~~~~~^~~~~~~~
-pdf_viewer/input.cpp:180:35: warning: missing initializer for member 'Command::special_symbols' [-Wmissing-field-initializers]
-  180 |                 commands.push_back({ utf8_encode(command_name) , false, false, false, false, true});
-      |                 ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/database.cpp: In function 'int mark_select_callback(void*, int, char**, char**)':
 pdf_viewer/database.cpp:60:81: warning: unused parameter 'col_name' [-Wunused-parameter]
    60 | static int mark_select_callback(void* res_vector, int argc, char** argv, char** col_name) {
@@ -1838,17 +1870,17 @@
 pdf_viewer/database.cpp:72:88: warning: unused parameter 'col_name' [-Wunused-parameter]
    72 | static int global_mark_select_callback(void* res_vector, int argc, char** argv, char** col_name) {
       |                                                                                 ~~~~~~~^~~~~~~~
+pdf_viewer/input.cpp: In constructor 'CommandManager::CommandManager(ConfigManager*)':
+pdf_viewer/input.cpp:176:35: warning: missing initializer for member 'Command::special_symbols' [-Wmissing-field-initializers]
+  176 |                 commands.push_back({ utf8_encode(command_name) , false, false, false, false, true});
+      |                 ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/database.cpp: In function 'int global_bookmark_select_callback(void*, int, char**, char**)':
 pdf_viewer/database.cpp:85:92: warning: unused parameter 'col_name' [-Wunused-parameter]
    85 | static int global_bookmark_select_callback(void* res_vector, int argc, char** argv, char** col_name) {
       |                                                                                     ~~~~~~~^~~~~~~~
-pdf_viewer/config.cpp: In constructor 'ConfigManager::ConfigManager(const Path&, const Path&, const std::vector<Path>&)':
-pdf_viewer/config.cpp:294:14: warning: unused variable 'vec3_deserializer' [-Wunused-variable]
-  294 |         auto vec3_deserializer = vec_n_deserializer<3, float>;
-      |              ^~~~~~~~~~~~~~~~~
-pdf_viewer/config.cpp:295:14: warning: unused variable 'vec4_deserializer' [-Wunused-variable]
-  295 |         auto vec4_deserializer = vec_n_deserializer<4, float>;
-      |              ^~~~~~~~~~~~~~~~~
+pdf_viewer/input.cpp:180:35: warning: missing initializer for member 'Command::special_symbols' [-Wmissing-field-initializers]
+  180 |                 commands.push_back({ utf8_encode(command_name) , false, false, false, false, true});
+      |                 ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/database.cpp: In function 'int global_highlight_select_callback(void*, int, char**, char**)':
 pdf_viewer/database.cpp:101:93: warning: unused parameter 'col_name' [-Wunused-parameter]
   101 | static int global_highlight_select_callback(void* res_vector, int argc, char** argv, char** col_name) {
@@ -1877,26 +1909,21 @@
 pdf_viewer/database.cpp:194:81: warning: unused parameter 'col_name' [-Wunused-parameter]
   194 | static int link_select_callback(void* res_vector, int argc, char** argv, char** col_name) {
       |                                                                          ~~~~~~~^~~~~~~~
-In file included from pdf_viewer/utf8.h:31,
-                 from pdf_viewer/utils.h:21,
-                 from pdf_viewer/utils.cpp:6:
-pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
-  268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
-      |                                  ^~~~~~~~
-In file included from /usr/include/c++/14/bits/stl_algobase.h:65,
-                 from /usr/include/c++/14/bits/specfun.h:43,
-                 from /usr/include/c++/14/cmath:3906,
-                 from pdf_viewer/utils.cpp:4:
-/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
-  127 |     struct _GLIBCXX17_DEPRECATED iterator
-      |                                  ^~~~~~~~
-In file included from pdf_viewer/utf8.h:32:
-pdf_viewer/utf8/unchecked.h:179:40: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
-  179 |           class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
-      |                                        ^~~~~~~~
-/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
-  127 |     struct _GLIBCXX17_DEPRECATED iterator
-      |                                  ^~~~~~~~
+pdf_viewer/utils.cpp: In function 'void install_app(const char*)':
+pdf_viewer/utils.cpp:175:30: warning: unused parameter 'argv0' [-Wunused-parameter]
+  175 | void install_app(const char *argv0)
+      |                  ~~~~~~~~~~~~^~~~~
+pdf_viewer/utils.cpp: In lambda function:
+pdf_viewer/utils.cpp:845:94: warning: unused parameter 'error' [-Wunused-parameter]
+  845 |         QObject::connect(process, &QProcess::errorOccurred, [process](QProcess::ProcessError error) {
+      |                                                                       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
+pdf_viewer/utils.cpp: In lambda function:
+pdf_viewer/utils.cpp:850:109: warning: unused parameter 'exit_code' [-Wunused-parameter]
+  850 |         QObject::connect(process, qOverload<int, QProcess::ExitStatus >(&QProcess::finished), [process](int exit_code, QProcess::ExitStatus stat) {
+      |                                                                                                         ~~~~^~~~~~~~~
+pdf_viewer/utils.cpp:850:141: warning: unused parameter 'stat' [-Wunused-parameter]
+  850 |         QObject::connect(process, qOverload<int, QProcess::ExitStatus >(&QProcess::finished), [process](int exit_code, QProcess::ExitStatus stat) {
+      |                                                                                                                        ~~~~~~~~~~~~~~~~~~~~~^~~~
 pdf_viewer/document.cpp: In member function 'void Document::delete_highlight(Highlight)':
 pdf_viewer/document.cpp:195:50: warning: comparison of unsigned expression in '>= 0' is always true [-Wtype-limits]
   195 |         for (size_t i = (highlights.size()-1); i >= 0; i--) {
@@ -1913,34 +1940,6 @@
 pdf_viewer/document.cpp:449:43: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   449 |         if (page_index < 0 || (page_index >= accum_page_heights.size())) {
       |                                ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/utils.cpp: In function 'void install_app(const char*)':
-pdf_viewer/utils.cpp:175:30: warning: unused parameter 'argv0' [-Wunused-parameter]
-  175 | void install_app(const char *argv0)
-      |                  ~~~~~~~~~~~~^~~~~
-pdf_viewer/document.cpp: In member function 'fz_rect Document::get_page_absolute_rect(int)':
-pdf_viewer/document.cpp:760:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
-  760 |         if (page >= page_widths.size()) {
-      |             ~~~~~^~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/document.cpp: In member function 'DocumentPos Document::absolute_to_page_pos(AbsoluteDocumentPos)':
-pdf_viewer/document.cpp:906:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
-  906 |         if (i < accum_page_heights.size()) {
-      |             ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/document.cpp: In member function 'std::optional<std::pair<std::__cxx11::basic_string<wchar_t>, std::__cxx11::basic_string<wchar_t> > > Document::get_generic_link_name_at_position(const std::vector<fz_stext_char*>&, float, float)':
-pdf_viewer/document.cpp:1166:27: warning: unknown escape sequence: '\.'
- 1166 |         std::wregex regex(L"[a-zA-Z]{3,}(\.){0,1}[ \t]+[0-9]+(\.[0-9]+)*");
-      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/utils.cpp: In lambda function:
-pdf_viewer/utils.cpp:845:94: warning: unused parameter 'error' [-Wunused-parameter]
-  845 |         QObject::connect(process, &QProcess::errorOccurred, [process](QProcess::ProcessError error) {
-      |                                                                       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-pdf_viewer/utils.cpp: In lambda function:
-pdf_viewer/utils.cpp:850:109: warning: unused parameter 'exit_code' [-Wunused-parameter]
-  850 |         QObject::connect(process, qOverload<int, QProcess::ExitStatus >(&QProcess::finished), [process](int exit_code, QProcess::ExitStatus stat) {
-      |                                                                                                         ~~~~^~~~~~~~~
-pdf_viewer/utils.cpp:850:141: warning: unused parameter 'stat' [-Wunused-parameter]
-  850 |         QObject::connect(process, qOverload<int, QProcess::ExitStatus >(&QProcess::finished), [process](int exit_code, QProcess::ExitStatus stat) {
-      |                                                                                                                        ~~~~~~~~~~~~~~~~~~~~~^~~~
-pdf_viewer/document.cpp:1166:27: warning: unknown escape sequence: '\.'
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
                  from pdf_viewer/input.h:12,
@@ -1966,11 +1965,28 @@
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
+pdf_viewer/document.cpp: In member function 'fz_rect Document::get_page_absolute_rect(int)':
+pdf_viewer/document.cpp:760:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+  760 |         if (page >= page_widths.size()) {
+      |             ~~~~~^~~~~~~~~~~~~~~~~~~~~
+pdf_viewer/document.cpp: In member function 'DocumentPos Document::absolute_to_page_pos(AbsoluteDocumentPos)':
+pdf_viewer/document.cpp:906:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+  906 |         if (i < accum_page_heights.size()) {
+      |             ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
+pdf_viewer/utils.cpp: In function 'void index_generic(const std::vector<fz_stext_char*>&, int, std::vector<IndexedData>&)':
+pdf_viewer/utils.cpp:1059:37: warning: unknown escape sequence: '\.'
+ 1059 |         std::wregex index_dst_regex(L"(^|\n)[A-Z][a-zA-Z]{2,}[ \t]+[0-9]+(\.[0-9]+)*");
+      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/database.cpp: In member function 'void DatabaseManager::import_json(std::wstring, CachedChecksummer*)':
 pdf_viewer/database.cpp:1102:43: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
  1102 |                 auto bookmarks = std::move(load_from_json_array<BookMark>(current_json_doc["bookmarks"].toArray()));
       |                                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/database.cpp:1102:43: note: remove 'std::move' call
+pdf_viewer/document.cpp: In member function 'std::optional<std::pair<std::__cxx11::basic_string<wchar_t>, std::__cxx11::basic_string<wchar_t> > > Document::get_generic_link_name_at_position(const std::vector<fz_stext_char*>&, float, float)':
+pdf_viewer/document.cpp:1166:27: warning: unknown escape sequence: '\.'
+ 1166 |         std::wregex regex(L"[a-zA-Z]{3,}(\.){0,1}[ \t]+[0-9]+(\.[0-9]+)*");
+      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+pdf_viewer/document.cpp:1166:27: warning: unknown escape sequence: '\.'
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
                  from pdf_viewer/database.h:9,
@@ -1993,50 +2009,22 @@
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
-pdf_viewer/document.cpp: In member function 'float Document::document_to_absolute_y(int, float)':
-pdf_viewer/document.cpp:1947:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
- 1947 |         if ((page < accum_page_heights.size()) && (page >= 0)) {
-      |              ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/document.cpp: In member function 'AbsoluteDocumentPos Document::document_to_absolute_pos(DocumentPos, bool)':
-pdf_viewer/document.cpp:1956:41: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
- 1956 |         if (center_mid && (doc_pos.page < page_widths.size())) {
-      |                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
-pdf_viewer/document.cpp: In member function 'const std::vector<fz_rect>& Document::get_page_lines(int, std::vector<std::__cxx11::basic_string<wchar_t> >*)':
-pdf_viewer/document.cpp:2152:43: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<fz_rect>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
- 2152 |                         for (int i = 0; i < line_rects.size(); i++) {
-      |                                         ~~^~~~~~~~~~~~~~~~~~~
-pdf_viewer/new_file_checker.cpp: In lambda function:
-pdf_viewer/new_file_checker.cpp:80:128: warning: unused parameter 'path' [-Wunused-parameter]
-   80 |                 QObject::connect(&paper_folder_watcher, &QFileSystemWatcher::directoryChanged, [&, main_widget](const QString& path) {
-      |                                                                                                                 ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/utils.cpp: In function 'void index_generic(const std::vector<fz_stext_char*>&, int, std::vector<IndexedData>&)':
-pdf_viewer/utils.cpp:1059:37: warning: unknown escape sequence: '\.'
- 1059 |         std::wregex index_dst_regex(L"(^|\n)[A-Z][a-zA-Z]{2,}[ \t]+[0-9]+(\.[0-9]+)*");
-      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from pdf_viewer/utf8.h:31,
-                 from pdf_viewer/utils.h:21,
-                 from pdf_viewer/ui.h:39,
-                 from pdf_viewer/ui.cpp:1:
-pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
-  268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
-      |                                  ^~~~~~~~
-In file included from /usr/include/c++/14/bits/stl_iterator_base_funcs.h:66,
-                 from /usr/include/c++/14/string:47,
-                 from pdf_viewer/ui.h:2:
-/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
-  127 |     struct _GLIBCXX17_DEPRECATED iterator
-      |                                  ^~~~~~~~
-In file included from pdf_viewer/utf8.h:32:
-pdf_viewer/utf8/unchecked.h:179:40: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
-  179 |           class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
-      |                                        ^~~~~~~~
-/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
-  127 |     struct _GLIBCXX17_DEPRECATED iterator
-      |                                  ^~~~~~~~
+pdf_viewer/utils.cpp: In function 'std::wstring get_canonical_path(const std::wstring&)':
+pdf_viewer/utils.cpp:1617:25: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
+ 1617 |         return std::move(dir.absolutePath().toStdWString());
+      |                ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+pdf_viewer/utils.cpp:1617:25: note: remove 'std::move' call
+pdf_viewer/utils.cpp: In function 'std::wstring lowercase(const std::wstring&)':
+pdf_viewer/utils.cpp:1747:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<wchar_t>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+ 1747 |         for (int i = 0; i < input.size(); i++) {
+      |                         ~~^~~~~~~~~~~~~~
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
-                 from pdf_viewer/input.h:12,
-                 from pdf_viewer/main.cpp:53:
+                 from pdf_viewer/database.h:9,
+                 from pdf_viewer/document.h:22,
+                 from pdf_viewer/document_view.h:22,
+                 from pdf_viewer/pdf_view_opengl_widget.h:40,
+                 from pdf_viewer/pdf_view_opengl_widget.cpp:1:
 pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
   268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
       |                                  ^~~~~~~~
@@ -2047,7 +2035,7 @@
                  from /usr/include/c++/14/ios:44,
                  from /usr/include/c++/14/ostream:40,
                  from /usr/include/c++/14/iostream:41,
-                 from pdf_viewer/main.cpp:1:
+                 from pdf_viewer/pdf_view_opengl_widget.h:3:
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
@@ -2058,15 +2046,6 @@
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
-pdf_viewer/utils.cpp: In function 'std::wstring get_canonical_path(const std::wstring&)':
-pdf_viewer/utils.cpp:1617:25: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
- 1617 |         return std::move(dir.absolutePath().toStdWString());
-      |                ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/utils.cpp:1617:25: note: remove 'std::move' call
-pdf_viewer/utils.cpp: In function 'std::wstring lowercase(const std::wstring&)':
-pdf_viewer/utils.cpp:1747:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<wchar_t>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
- 1747 |         for (int i = 0; i < input.size(); i++) {
-      |                         ~~^~~~~~~~~~~~~~
 pdf_viewer/utils.cpp: In function 'std::wifstream open_wifstream(const std::wstring&)':
 pdf_viewer/utils.cpp:1830:25: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
  1830 |         return std::move(std::wifstream(encoded_file_name.c_str()));
@@ -2076,10 +2055,34 @@
 pdf_viewer/utils.cpp:1902:28: warning: unused parameter 'num' [-Wunused-parameter]
  1902 | float line_num_penalty(int num) {
       |                        ~~~~^~~
+In file included from pdf_viewer/utf8.h:31,
+                 from pdf_viewer/utils.h:21,
+                 from pdf_viewer/database.h:9,
+                 from pdf_viewer/document.h:22,
+                 from pdf_viewer/document_view.h:22,
+                 from pdf_viewer/main_widget.h:17,
+                 from pdf_viewer/new_file_checker.h:3,
+                 from pdf_viewer/new_file_checker.cpp:1:
+pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
+  268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
+      |                                  ^~~~~~~~
+In file included from /usr/include/c++/14/bits/stl_iterator_base_funcs.h:66,
+                 from /usr/include/c++/14/string:47,
+                 from pdf_viewer/main_widget.h:3:
+/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
+  127 |     struct _GLIBCXX17_DEPRECATED iterator
+      |                                  ^~~~~~~~
+In file included from pdf_viewer/utf8.h:32:
+pdf_viewer/utf8/unchecked.h:179:40: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
+  179 |           class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
+      |                                        ^~~~~~~~
 pdf_viewer/utils.cpp: In function 'bool command_requires_text(const std::wstring&)':
 pdf_viewer/utils.cpp:2121:34: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<wchar_t>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  2121 |         if ((command.find(L"%5") != -1) || (command.find(L"command_text") != -1)) {
       |              ~~~~~~~~~~~~~~~~~~~~^~~~~
+/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
+  127 |     struct _GLIBCXX17_DEPRECATED iterator
+      |                                  ^~~~~~~~
 pdf_viewer/utils.cpp:2121:75: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<wchar_t>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  2121 |         if ((command.find(L"%5") != -1) || (command.find(L"command_text") != -1)) {
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
@@ -2091,13 +2094,22 @@
 pdf_viewer/utils.cpp:2174:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<fz_stext_char*>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  2174 |         for (int j = 0; j < chars.size(); j++) {
       |                         ~~^~~~~~~~~~~~~~
+pdf_viewer/document.cpp: In member function 'float Document::document_to_absolute_y(int, float)':
+pdf_viewer/document.cpp:1947:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+ 1947 |         if ((page < accum_page_heights.size()) && (page >= 0)) {
+      |              ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
+pdf_viewer/document.cpp: In member function 'AbsoluteDocumentPos Document::document_to_absolute_pos(DocumentPos, bool)':
+pdf_viewer/document.cpp:1956:41: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<float>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+ 1956 |         if (center_mid && (doc_pos.page < page_widths.size())) {
+      |                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
+pdf_viewer/document.cpp: In member function 'const std::vector<fz_rect>& Document::get_page_lines(int, std::vector<std::__cxx11::basic_string<wchar_t> >*)':
+pdf_viewer/document.cpp:2152:43: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<fz_rect>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+ 2152 |                         for (int i = 0; i < line_rects.size(); i++) {
+      |                                         ~~^~~~~~~~~~~~~~~~~~~
 In file included from pdf_viewer/utf8.h:31,
                  from pdf_viewer/utils.h:21,
-                 from pdf_viewer/database.h:9,
-                 from pdf_viewer/document.h:22,
-                 from pdf_viewer/document_view.h:22,
-                 from pdf_viewer/pdf_view_opengl_widget.h:40,
-                 from pdf_viewer/pdf_view_opengl_widget.cpp:1:
+                 from pdf_viewer/input.h:12,
+                 from pdf_viewer/main.cpp:53:
 pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
   268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
       |                                  ^~~~~~~~
@@ -2108,7 +2120,7 @@
                  from /usr/include/c++/14/ios:44,
                  from /usr/include/c++/14/ostream:40,
                  from /usr/include/c++/14/iostream:41,
-                 from pdf_viewer/pdf_view_opengl_widget.h:3:
+                 from pdf_viewer/main.cpp:1:
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
@@ -2119,58 +2131,37 @@
 /usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
   127 |     struct _GLIBCXX17_DEPRECATED iterator
       |                                  ^~~~~~~~
-In file included from pdf_viewer/document_view.h:25:
-pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
-  111 |                         if (!on_text_change(text)) {
-      |                              ^~~~~~~~~~~~~~
-pdf_viewer/ui.h:569:32:   required from here
-  569 |                 on_done(on_done)
-      |                                ^
-pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
-  141 |         virtual bool on_text_change(const QString& text) {
-      |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]'
-  111 |                         if (!on_text_change(text)) {
-      |                              ^~~~~~~~~~~~~~
-pdf_viewer/ui.h:643:18:   required from here
-  643 |                 on_done(on_done)
-      |                                ^
-pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
-  141 |         virtual bool on_text_change(const QString& text) {
-      |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/document_view.cpp: In member function 'std::optional<BookMark> DocumentView::find_closest_bookmark()':
-pdf_viewer/document_view.cpp:149:62: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<BookMark>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
-  149 |                 if ((bookmark_index >= 0) && (bookmark_index < bookmarks.size())) {
-      |                                               ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
-pdf_viewer/database.cpp: At global scope:
-pdf_viewer/database.cpp:149:12: warning: 'int string_select_callback(void*, int, char**, char**)' defined but not used [-Wunused-function]
-  149 | static int string_select_callback(void* res_vector, int argc, char** argv, char** col_name) {
-      |            ^~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/document_view.cpp: In member function 'int DocumentView::get_line_index_of_pos(DocumentPos)':
-pdf_viewer/document_view.cpp:1068:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<fz_rect>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
- 1068 |         for (int i = 0; i < rects.size(); i++) {
-      |                         ~~^~~~~~~~~~~~~~
-pdf_viewer/document_view.cpp:1071:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<fz_rect>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
- 1071 |         for (int i = 0; i < rects.size(); i++) {
-      |                         ~~^~~~~~~~~~~~~~
-pdf_viewer/document_view.cpp:1066:13: warning: unused variable 'page_width' [-Wunused-variable]
- 1066 |         int page_width = current_document->get_page_width(line_doc_pos.page);
-      |             ^~~~~~~~~~
-pdf_viewer/document_view.cpp: In member function 'std::vector<DocumentPos> DocumentView::find_line_definitions()':
-pdf_viewer/document_view.cpp:1110:49: warning: unknown escape sequence: '\.'
- 1110 |                         std::wstring item_regex(L"[a-zA-Z]{2,}[ \t]+[0-9]+(\.[0-9]+)*");
-      |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/document_view.cpp:1159:49: warning: comparison of integer expressions of different signedness: 'std::vector<DocumentPos>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
- 1159 |                                 if (vec->size() > max_size) {
-      |                                     ~~~~~~~~~~~~^~~~~~~~~~
-pdf_viewer/document_view.cpp:1166:47: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<DocumentPos>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
- 1166 |                                         if (i < vec->size()) {
-      |                                             ~~^~~~~~~~~~~~~
-pdf_viewer/document_view.cpp:1155:29: warning: unused variable 'index' [-Wunused-variable]
- 1155 |                         int index = 0;
-      |                             ^~~~~
+In file included from pdf_viewer/utf8.h:31,
+                 from pdf_viewer/utils.h:21,
+                 from pdf_viewer/ui.h:39,
+                 from pdf_viewer/ui.cpp:1:
+pdf_viewer/utf8/checked.h:268:34: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
+  268 |     class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
+      |                                  ^~~~~~~~
+In file included from /usr/include/c++/14/bits/stl_iterator_base_funcs.h:66,
+                 from /usr/include/c++/14/string:47,
+                 from pdf_viewer/ui.h:2:
+/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
+  127 |     struct _GLIBCXX17_DEPRECATED iterator
+      |                                  ^~~~~~~~
+In file included from pdf_viewer/utf8.h:32:
+pdf_viewer/utf8/unchecked.h:179:40: warning: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Wdeprecated-declarations]
+  179 |           class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
+      |                                        ^~~~~~~~
+/usr/include/c++/14/bits/stl_iterator_base_types.h:127:34: note: declared here
+  127 |     struct _GLIBCXX17_DEPRECATED iterator
+      |                                  ^~~~~~~~
+pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'void PdfViewOpenGLWidget::render_overview(OverviewState)':
+pdf_viewer/pdf_view_opengl_widget.cpp:567:17: warning: variable 'page_rect' set but not used [-Wunused-but-set-variable]
+  567 |         fz_rect page_rect;
+      |                 ^~~~~~~~~
+pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'void PdfViewOpenGLWidget::render(QPainter*)':
+pdf_viewer/pdf_view_opengl_widget.cpp:747:32: warning: unused variable 'texture' [-Wunused-variable]
+  747 |                         GLuint texture = pdf_renderer->find_rendered_page(document_view->get_document()->get_path(),
+      |                                ^~~~~~~
+pdf_viewer/pdf_view_opengl_widget.cpp:943:45: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, fz_link*> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+  943 |                         for (int j = i+1; j < all_visible_links.size(); j++) {
+      |                                           ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
   111 |                         if (!on_text_change(text)) {
@@ -2181,23 +2172,17 @@
 pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
   141 |         virtual bool on_text_change(const QString& text) {
       |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:132:15:   required from here
-  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
-      |                      ^~~~~~~~~
-pdf_viewer/ui.h:132:51: warning: unused parameter 'source_index' [-Wunused-parameter]
-  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
-      |                                ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
-pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
-  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
-      |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:134:15:   required from here
-  134 |         virtual void on_return_no_select(const QString& text) {
-      |                      ^~~~~~~~~~~~~~~~~~~
-pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
-  134 |         virtual void on_return_no_select(const QString& text) {
-      |                                          ~~~~~~~~~~~~~~~^~~~
+pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'void PdfViewOpenGLWidget::draw_empty_helper_message(QPainter*)':
+pdf_viewer/pdf_view_opengl_widget.cpp:1232:37: warning: 'int QFontMetrics::width(const QString&, int) const' is deprecated: Use QFontMetrics::horizontalAdvance [-Wdeprecated-declarations]
+ 1232 |         int message_width = fm.width(message);
+      |                             ~~~~~~~~^~~~~~~~~
+In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:50,
+                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qabstractbutton.h:46,
+                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qpushbutton.h:44,
+                 from pdf_viewer/pdf_view_opengl_widget.h:16:
+/usr/include/x86_64-linux-gnu/qt5/QtGui/qfontmetrics.h:106:9: note: declared here
+  106 |     int width(const QString &, int len = -1) const;
+      |         ^~~~~
 pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]'
   111 |                         if (!on_text_change(text)) {
@@ -2208,32 +2193,10 @@
 pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
   141 |         virtual bool on_text_change(const QString& text) {
       |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:132:15:   required from here
-  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
-      |                      ^~~~~~~~~
-pdf_viewer/ui.h:132:51: warning: unused parameter 'source_index' [-Wunused-parameter]
-  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
-      |                                ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
-pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
-  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
-      |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:134:15:   required from here
-  134 |         virtual void on_return_no_select(const QString& text) {
-      |                      ^~~~~~~~~~~~~~~~~~~
-pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
-  134 |         virtual void on_return_no_select(const QString& text) {
-      |                                          ~~~~~~~~~~~~~~~^~~~
 pdf_viewer/main_widget.cpp: In member function 'void MainWidget::set_overview_position(int, float)':
 pdf_viewer/main_widget.cpp:165:23: warning: unused variable 'page_height' [-Wunused-variable]
   165 |                 float page_height = main_document_view->get_document()->get_page_height(page);
       |                       ^~~~~~~~~~~
-In file included from pdf_viewer/ui.h:36:
-pdf_viewer/fts_fuzzy_match.h: At global scope:
-pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
-   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
-      |                 ^~~~~~~~~~~~~~~~~~
 pdf_viewer/main_widget.cpp: In member function 'virtual void MainWidget::closeEvent(QCloseEvent*)':
 pdf_viewer/main_widget.cpp:311:42: warning: unused parameter 'close_event' [-Wunused-parameter]
   311 | void MainWidget::closeEvent(QCloseEvent* close_event) {
@@ -2249,26 +2212,45 @@
 pdf_viewer/main_widget.cpp:319:1: warning:   when initialized here [-Wreorder]
   319 | MainWidget::MainWidget(fz_context* mupdf_context,
       | ^~~~~~~~~~
+pdf_viewer/document_view.cpp: In member function 'std::optional<BookMark> DocumentView::find_closest_bookmark()':
+pdf_viewer/document_view.cpp:149:62: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<BookMark>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+  149 |                 if ((bookmark_index >= 0) && (bookmark_index < bookmarks.size())) {
+      |                                               ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
 pdf_viewer/main_widget.cpp: In lambda function:
 pdf_viewer/main_widget.cpp:474:78: warning: unused parameter 'action' [-Wunused-parameter]
   474 |     scroll_bar->connect(scroll_bar, &QScrollBar::actionTriggered, [this](int action) {
       |                                                                          ~~~~^~~~~~
+pdf_viewer/document_view.cpp: In member function 'int DocumentView::get_line_index_of_pos(DocumentPos)':
+pdf_viewer/document_view.cpp:1068:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<fz_rect>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+ 1068 |         for (int i = 0; i < rects.size(); i++) {
+      |                         ~~^~~~~~~~~~~~~~
+pdf_viewer/document_view.cpp:1071:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<fz_rect>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+ 1071 |         for (int i = 0; i < rects.size(); i++) {
+      |                         ~~^~~~~~~~~~~~~~
+pdf_viewer/document_view.cpp:1066:13: warning: unused variable 'page_width' [-Wunused-variable]
+ 1066 |         int page_width = current_document->get_page_width(line_doc_pos.page);
+      |             ^~~~~~~~~~
+pdf_viewer/document_view.cpp: In member function 'std::vector<DocumentPos> DocumentView::find_line_definitions()':
+pdf_viewer/document_view.cpp:1110:49: warning: unknown escape sequence: '\.'
+ 1110 |                         std::wstring item_regex(L"[a-zA-Z]{2,}[ \t]+[0-9]+(\.[0-9]+)*");
+      |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/main_widget.cpp: In member function 'std::wstring MainWidget::get_status_string()':
 pdf_viewer/main_widget.cpp:627:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<wchar_t>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   627 |         if (index == location_string.size()) {
       |             ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
+pdf_viewer/document_view.cpp:1159:49: warning: comparison of integer expressions of different signedness: 'std::vector<DocumentPos>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
+ 1159 |                                 if (vec->size() > max_size) {
+      |                                     ~~~~~~~~~~~~^~~~~~~~~~
+pdf_viewer/document_view.cpp:1166:47: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<DocumentPos>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
+ 1166 |                                         if (i < vec->size()) {
+      |                                             ~~^~~~~~~~~~~~~
+pdf_viewer/document_view.cpp:1155:29: warning: unused variable 'index' [-Wunused-variable]
+ 1155 |                         int index = 0;
+      |                             ^~~~~
 pdf_viewer/main_widget.cpp: In member function 'virtual void MainWidget::on_config_file_changed(ConfigManager*)':
 pdf_viewer/main_widget.cpp:845:56: warning: unused parameter 'new_config' [-Wunused-parameter]
   845 | void MainWidget::on_config_file_changed(ConfigManager* new_config) {
       |                                         ~~~~~~~~~~~~~~~^~~~~~~~~~
-pdf_viewer/main.cpp: In function 'void focus_on_widget(QWidget*)':
-pdf_viewer/main.cpp:657:54: warning: suggest parentheses around arithmetic in operand of '|' [-Wparentheses]
-  657 |         widget->setWindowState(widget->windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
-      |                                ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/main.cpp: In function 'int main(int, char**)':
-pdf_viewer/main.cpp:695:14: warning: variable 'use_single_instance' set but not used [-Wunused-but-set-variable]
-  695 |         bool use_single_instance = (!SHOULD_LAUNCH_NEW_INSTANCE) && (!SHOULD_LAUNCH_NEW_WINDOW);
-      |              ^~~~~~~~~~~~~~~~~~~
 pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:132:15:   required from here
   132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
@@ -2303,6 +2285,14 @@
 pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
   134 |         virtual void on_return_no_select(const QString& text) {
       |                                          ~~~~~~~~~~~~~~~^~~~
+pdf_viewer/database.cpp: At global scope:
+pdf_viewer/database.cpp:149:12: warning: 'int string_select_callback(void*, int, char**, char**)' defined but not used [-Wunused-function]
+  149 | static int string_select_callback(void* res_vector, int argc, char** argv, char** col_name) {
+      |            ^~~~~~~~~~~~~~~~~~~~~~
+In file included from pdf_viewer/ui.h:36:
+pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
+   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
+      |                 ^~~~~~~~~~~~~~~~~~
 pdf_viewer/main_widget.cpp: In member function 'void MainWidget::next_state()':
 pdf_viewer/main_widget.cpp:1535:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<DocumentViewState>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  1535 |         if (current_history_index + 1 < history.size()) {
@@ -2315,6 +2305,10 @@
 pdf_viewer/main_widget.cpp:1588:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<DocumentViewState>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  1588 |         if (index_to_update < history.size()-1) {
       |             ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
+pdf_viewer/main.cpp: In function 'void focus_on_widget(QWidget*)':
+pdf_viewer/main.cpp:657:54: warning: suggest parentheses around arithmetic in operand of '|' [-Wparentheses]
+  657 |         widget->setWindowState(widget->windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
+      |                                ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
 pdf_viewer/main_widget.cpp: In member function 'virtual void MainWidget::wheelEvent(QWheelEvent*)':
 pdf_viewer/main_widget.cpp:1806:24: warning: 'QPoint QWheelEvent::pos() const' is deprecated: Use position() [-Wdeprecated-declarations]
  1806 |     int x = wevent->pos().x();
@@ -2334,6 +2328,10 @@
 pdf_viewer/main_widget.cpp:1811:44: warning: 'int QWheelEvent::delta() const' is deprecated: Use angleDelta() [-Wdeprecated-declarations]
  1811 |         int num_repeats = abs(wevent->delta() / 120);
       |                               ~~~~~~~~~~~~~^~
+pdf_viewer/main.cpp: In function 'int main(int, char**)':
+pdf_viewer/main.cpp:695:14: warning: variable 'use_single_instance' set but not used [-Wunused-but-set-variable]
+  695 |         bool use_single_instance = (!SHOULD_LAUNCH_NEW_INSTANCE) && (!SHOULD_LAUNCH_NEW_WINDOW);
+      |              ^~~~~~~~~~~~~~~~~~~
 /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:219:16: note: declared here
   219 |     inline int delta() const  { return qt4D; }
       |                ^~~~~
@@ -2343,32 +2341,21 @@
 /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:219:16: note: declared here
   219 |     inline int delta() const  { return qt4D; }
       |                ^~~~~
-pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'void PdfViewOpenGLWidget::render_overview(OverviewState)':
-pdf_viewer/pdf_view_opengl_widget.cpp:567:17: warning: variable 'page_rect' set but not used [-Wunused-but-set-variable]
-  567 |         fz_rect page_rect;
-      |                 ^~~~~~~~~
-In file included from pdf_viewer/ui.h:36:
-pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
-   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
-      |                 ^~~~~~~~~~~~~~~~~~
-pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'void PdfViewOpenGLWidget::render(QPainter*)':
-pdf_viewer/pdf_view_opengl_widget.cpp:747:32: warning: unused variable 'texture' [-Wunused-variable]
-  747 |                         GLuint texture = pdf_renderer->find_rendered_page(document_view->get_document()->get_path(),
-      |                                ^~~~~~~
-pdf_viewer/pdf_view_opengl_widget.cpp:943:45: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, fz_link*> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
-  943 |                         for (int j = i+1; j < all_visible_links.size(); j++) {
-      |                                           ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
-pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'void PdfViewOpenGLWidget::draw_empty_helper_message(QPainter*)':
-pdf_viewer/pdf_view_opengl_widget.cpp:1232:37: warning: 'int QFontMetrics::width(const QString&, int) const' is deprecated: Use QFontMetrics::horizontalAdvance [-Wdeprecated-declarations]
- 1232 |         int message_width = fm.width(message);
-      |                             ~~~~~~~~^~~~~~~~~
-In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:50,
-                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qabstractbutton.h:46,
-                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qpushbutton.h:44,
-                 from pdf_viewer/pdf_view_opengl_widget.h:16:
-/usr/include/x86_64-linux-gnu/qt5/QtGui/qfontmetrics.h:106:9: note: declared here
-  106 |     int width(const QString &, int len = -1) const;
-      |         ^~~~~
+pdf_viewer/new_file_checker.cpp: In lambda function:
+pdf_viewer/new_file_checker.cpp:80:128: warning: unused parameter 'path' [-Wunused-parameter]
+   80 |                 QObject::connect(&paper_folder_watcher, &QFileSystemWatcher::directoryChanged, [&, main_widget](const QString& path) {
+      |                                                                                                                 ~~~~~~~~~~~~~~~^~~~
+In file included from pdf_viewer/document_view.h:25:
+pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
+  111 |                         if (!on_text_change(text)) {
+      |                              ^~~~~~~~~~~~~~
+pdf_viewer/ui.h:569:32:   required from here
+  569 |                 on_done(on_done)
+      |                                ^
+pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
+  141 |         virtual bool on_text_change(const QString& text) {
+      |                                     ~~~~~~~~~~~~~~~^~~~
 pdf_viewer/main_widget.cpp: In member function 'void MainWidget::handle_command(const Command*, int)':
 pdf_viewer/main_widget.cpp:2368:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<MainWidget*>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  2368 |         for (int i = 0; i < windows.size(); i++) {
@@ -2377,6 +2364,16 @@
 pdf_viewer/main_widget.cpp:2375:48: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<MainWidget*>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  2375 |                                 if (*window_id < windows.size()) {
       |                                     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
+pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]'
+  111 |                         if (!on_text_change(text)) {
+      |                              ^~~~~~~~~~~~~~
+pdf_viewer/ui.h:643:18:   required from here
+  643 |                 on_done(on_done)
+      |                                ^
+pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
+  141 |         virtual bool on_text_change(const QString& text) {
+      |                                     ~~~~~~~~~~~~~~~^~~~
 In file included from pdf_viewer/document_view.h:25:
 pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
@@ -2398,6 +2395,40 @@
 pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
   141 |         virtual bool on_text_change(const QString& text) {
       |                                     ~~~~~~~~~~~~~~~^~~~
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:132:15:   required from here
+  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
+      |                      ^~~~~~~~~
+pdf_viewer/ui.h:132:51: warning: unused parameter 'source_index' [-Wunused-parameter]
+  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
+      |                                ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
+  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
+      |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:134:15:   required from here
+  134 |         virtual void on_return_no_select(const QString& text) {
+      |                      ^~~~~~~~~~~~~~~~~~~
+pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
+  134 |         virtual void on_return_no_select(const QString& text) {
+      |                                          ~~~~~~~~~~~~~~~^~~~
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:132:15:   required from here
+  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
+      |                      ^~~~~~~~~
+pdf_viewer/ui.h:132:51: warning: unused parameter 'source_index' [-Wunused-parameter]
+  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
+      |                                ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
+  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
+      |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:134:15:   required from here
+  134 |         virtual void on_return_no_select(const QString& text) {
+      |                      ^~~~~~~~~~~~~~~~~~~
+pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
+  134 |         virtual void on_return_no_select(const QString& text) {
+      |                                          ~~~~~~~~~~~~~~~^~~~
 In file included from pdf_viewer/main.cpp:57:
 pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
@@ -2419,10 +2450,36 @@
 pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
   141 |         virtual bool on_text_change(const QString& text) {
       |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/main_widget.cpp: In member function 'void MainWidget::execute_command(std::wstring, std::wstring, bool)':
-pdf_viewer/main_widget.cpp:3404:14: warning: ignoring return value of 'QString QString::arg(const QString&, int, QChar) const', declared with attribute 'nodiscard' [-Wunused-result]
- 3404 |     qtext.arg(qfile_path);
-      |     ~~~~~~~~~^~~~~~~~~~~~
+In file included from pdf_viewer/document_view.h:25:
+pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
+  111 |                         if (!on_text_change(text)) {
+      |                              ^~~~~~~~~~~~~~
+pdf_viewer/ui.h:569:32:   required from here
+  569 |                 on_done(on_done)
+      |                                ^
+pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
+  141 |         virtual bool on_text_change(const QString& text) {
+      |                                     ~~~~~~~~~~~~~~~^~~~
+pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]'
+  111 |                         if (!on_text_change(text)) {
+      |                              ^~~~~~~~~~~~~~
+pdf_viewer/ui.h:643:18:   required from here
+  643 |                 on_done(on_done)
+      |                                ^
+pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
+  141 |         virtual bool on_text_change(const QString& text) {
+      |                                     ~~~~~~~~~~~~~~~^~~~
+pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'float PdfViewOpenGLWidget::get_overview_side_pos(int)':
+pdf_viewer/pdf_view_opengl_widget.cpp:1365:1: warning: control reaches end of non-void function [-Wreturn-type]
+ 1365 | }
+      | ^
+In file included from pdf_viewer/ui.h:36:
+pdf_viewer/fts_fuzzy_match.h: At global scope:
+pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
+   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
+      |                 ^~~~~~~~~~~~~~~~~~
 pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:132:15:   required from here
   132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
@@ -2430,6 +2487,20 @@
 pdf_viewer/ui.h:132:51: warning: unused parameter 'source_index' [-Wunused-parameter]
   132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
       |                                ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
+  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
+      |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h:134:15:   required from here
+  134 |         virtual void on_return_no_select(const QString& text) {
+      |                      ^~~~~~~~~~~~~~~~~~~
+pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
+  134 |         virtual void on_return_no_select(const QString& text) {
+      |                                          ~~~~~~~~~~~~~~~^~~~
+pdf_viewer/main_widget.cpp: In member function 'void MainWidget::execute_command(std::wstring, std::wstring, bool)':
+pdf_viewer/main_widget.cpp:3404:14: warning: ignoring return value of 'QString QString::arg(const QString&, int, QChar) const', declared with attribute 'nodiscard' [-Wunused-result]
+ 3404 |     qtext.arg(qfile_path);
+      |     ~~~~~~~~~^~~~~~~~~~~~
 In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:47,
                  from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:45,
                  from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qframe.h:44,
@@ -2439,22 +2510,12 @@
 /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:336:31: note: declared here
   336 |     Q_REQUIRED_RESULT QString arg(const QString &a, int fieldWidth = 0,
       |                               ^~~
-pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
-  132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
-      |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
 pdf_viewer/main_widget.cpp:3406:72: warning: 'QString::SkipEmptyParts' is deprecated [-Wdeprecated-declarations]
  3406 |     QStringList command_parts_ = qtext.split(QRegExp("\\s+"), QString::SkipEmptyParts);
       |                                                                        ^~~~~~~~~~~~~~
 /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:602:9: note: declared here
   602 |         SkipEmptyParts Q_DECL_ENUMERATOR_DEPRECATED
       |         ^~~~~~~~~~~~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:134:15:   required from here
-  134 |         virtual void on_return_no_select(const QString& text) {
-      |                      ^~~~~~~~~~~~~~~~~~~
-pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
-  134 |         virtual void on_return_no_select(const QString& text) {
-      |                                          ~~~~~~~~~~~~~~~^~~~
 pdf_viewer/main_widget.cpp:3406:72: warning: 'QString::SkipEmptyParts' is deprecated [-Wdeprecated-declarations]
  3406 |     QStringList command_parts_ = qtext.split(QRegExp("\\s+"), QString::SkipEmptyParts);
       |                                                                        ^~~~~~~~~~~~~~
@@ -2554,6 +2615,10 @@
 /usr/include/x86_64-linux-gnu/qt5/QtCore/qprocess.h:280:17: note: declared here
   280 |     static bool startDetached(const QString &command);
       |                 ^~~~~~~~~~~~~
+pdf_viewer/document_view.cpp: In member function 'NormalizedWindowPos DocumentView::document_to_window_pos(DocumentPos)':
+pdf_viewer/document_view.cpp:351:1: warning: control reaches end of non-void function [-Wreturn-type]
+  351 | }
+      | ^
 pdf_viewer/main_widget.cpp: In member function 'void MainWidget::handle_keyboard_select(const std::wstring&)':
 pdf_viewer/main_widget.cpp:4306:21: warning: unused variable 'w' [-Wunused-variable]
  4306 |                 int w = erect.x1 - erect.x0;
@@ -2561,31 +2626,6 @@
 pdf_viewer/main_widget.cpp:4302:37: warning: variable 'srect_' set but not used [-Wunused-but-set-variable]
  4302 |             std::optional<fz_irect> srect_ = get_tag_window_rect(parts.at(0).toStdString(), &schar_rects);
       |                                     ^~~~~~
-In file included from pdf_viewer/document_view.h:25:
-pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
-  111 |                         if (!on_text_change(text)) {
-      |                              ^~~~~~~~~~~~~~
-pdf_viewer/ui.h:569:32:   required from here
-  569 |                 on_done(on_done)
-      |                                ^
-pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
-  141 |         virtual bool on_text_change(const QString& text) {
-      |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/document_view.cpp: In member function 'NormalizedWindowPos DocumentView::document_to_window_pos(DocumentPos)':
-pdf_viewer/document_view.cpp:351:1: warning: control reaches end of non-void function [-Wreturn-type]
-  351 | }
-      | ^
-pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
-pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]'
-  111 |                         if (!on_text_change(text)) {
-      |                              ^~~~~~~~~~~~~~
-pdf_viewer/ui.h:643:18:   required from here
-  643 |                 on_done(on_done)
-      |                                ^
-pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
-  141 |         virtual bool on_text_change(const QString& text) {
-      |                                     ~~~~~~~~~~~~~~~^~~~
 In file included from pdf_viewer/ui.h:36:
 pdf_viewer/fts_fuzzy_match.h: At global scope:
 pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
@@ -2608,7 +2648,7 @@
 pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
   134 |         virtual void on_return_no_select(const QString& text) {
       |                                          ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:132:15:   required from here
   132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
       |                      ^~~~~~~~~
@@ -2618,19 +2658,14 @@
 pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
   132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
       |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:134:15:   required from here
   134 |         virtual void on_return_no_select(const QString& text) {
       |                      ^~~~~~~~~~~~~~~~~~~
 pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
   134 |         virtual void on_return_no_select(const QString& text) {
       |                                          ~~~~~~~~~~~~~~~^~~~
-In file included from pdf_viewer/ui.h:36:
-pdf_viewer/fts_fuzzy_match.h: At global scope:
-pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
-   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
-      |                 ^~~~~~~~~~~~~~~~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_delete(const QModelIndex&, const QModelIndex&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:132:15:   required from here
   132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
       |                      ^~~~~~~~~
@@ -2640,7 +2675,7 @@
 pdf_viewer/ui.h:132:84: warning: unused parameter 'selected_index' [-Wunused-parameter]
   132 |         virtual void on_delete(const QModelIndex& source_index, const QModelIndex& selected_index) {}
       |                                                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
-pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
+pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:134:15:   required from here
   134 |         virtual void on_return_no_select(const QString& text) {
       |                      ^~~~~~~~~~~~~~~~~~~
@@ -2664,6 +2699,16 @@
 pdf_viewer/ui.h:134:57: warning: unused parameter 'text' [-Wunused-parameter]
   134 |         virtual void on_return_no_select(const QString& text) {
       |                                          ~~~~~~~~~~~~~~~^~~~
+In file included from pdf_viewer/ui.h:36:
+pdf_viewer/fts_fuzzy_match.h: At global scope:
+pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
+   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
+      |                 ^~~~~~~~~~~~~~~~~~
+In file included from pdf_viewer/ui.h:36:
+pdf_viewer/fts_fuzzy_match.h: At global scope:
+pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
+   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
+      |                 ^~~~~~~~~~~~~~~~~~
 In file included from pdf_viewer/main_widget.cpp:42:
 pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = std::__cxx11::basic_string<char>; ViewType = QTableView; ProxyModelType = QSortFilterProxyModel]'
@@ -2685,15 +2730,10 @@
 pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
   141 |         virtual bool on_text_change(const QString& text) {
       |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/pdf_view_opengl_widget.cpp: In member function 'float PdfViewOpenGLWidget::get_overview_side_pos(int)':
-pdf_viewer/pdf_view_opengl_widget.cpp:1365:1: warning: control reaches end of non-void function [-Wreturn-type]
- 1365 | }
-      | ^
-In file included from pdf_viewer/ui.h:36:
-pdf_viewer/fts_fuzzy_match.h: At global scope:
-pdf_viewer/fts_fuzzy_match.h:59:17: warning: 'bool fts::fuzzy_match_simple(const char*, const char*)' defined but not used [-Wunused-function]
-   59 |     static bool fuzzy_match_simple(char const * pattern, char const * str) {
-      |                 ^~~~~~~~~~~~~~~~~~
+pdf_viewer/pdf_renderer.cpp: In member function 'fz_document* PdfRenderer::get_document_with_path(int, fz_context*, std::wstring)':
+pdf_viewer/pdf_renderer.cpp:379:22: warning: variable 'ret_val' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
+  379 |         fz_document* ret_val = nullptr;
+      |                      ^~~~~~~
 pdf_viewer/ui.h: In instantiation of 'bool BaseSelectorWidget<T, ViewType, ProxyModelType>::on_text_change(const QString&) [with T = int; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:111:9:   required from 'BaseSelectorWidget<T, ViewType, ProxyModelType>::BaseSelectorWidget(QStandardItemModel*, QWidget*) [with T = int; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]'
   111 |                         if (!on_text_change(text)) {
@@ -2772,10 +2812,6 @@
 pdf_viewer/ui.h:141:52: warning: unused parameter 'text' [-Wunused-parameter]
   141 |         virtual bool on_text_change(const QString& text) {
       |                                     ~~~~~~~~~~~~~~~^~~~
-pdf_viewer/pdf_renderer.cpp: In member function 'fz_document* PdfRenderer::get_document_with_path(int, fz_context*, std::wstring)':
-pdf_viewer/pdf_renderer.cpp:379:22: warning: variable 'ret_val' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
-  379 |         fz_document* ret_val = nullptr;
-      |                      ^~~~~~~
 pdf_viewer/ui.h: In instantiation of 'void BaseSelectorWidget<T, ViewType, ProxyModelType>::on_return_no_select(const QString&) [with T = std::__cxx11::basic_string<wchar_t>; ViewType = QListView; ProxyModelType = QSortFilterProxyModel]':
 pdf_viewer/ui.h:134:15:   required from here
   134 |         virtual void on_return_no_select(const QString& text) {
@@ -3612,9 +3648,9 @@
 preparing documents... done
 copying assets... 
 copying static files... 
-Writing evaluated template result to /build/reproducible-path/sioyek-2.0.0+dfsg/docs/docs/html/_static/documentation_options.js
-Writing evaluated template result to /build/reproducible-path/sioyek-2.0.0+dfsg/docs/docs/html/_static/basic.css
 Writing evaluated template result to /build/reproducible-path/sioyek-2.0.0+dfsg/docs/docs/html/_static/language_data.js
+Writing evaluated template result to /build/reproducible-path/sioyek-2.0.0+dfsg/docs/docs/html/_static/basic.css
+Writing evaluated template result to /build/reproducible-path/sioyek-2.0.0+dfsg/docs/docs/html/_static/documentation_options.js
 Writing evaluated template result to /build/reproducible-path/sioyek-2.0.0+dfsg/docs/docs/html/_static/js/versions.js
 copying static files: done
 copying extra files... 
@@ -3639,11 +3675,11 @@
 dumping object inventory... done
 
 ====================== slowest reading durations =======================
-0.246 usage
-0.235 configuration
-0.219 commands
-0.208 scripting
-0.068 installation
+0.287 commands
+0.277 configuration
+0.272 usage
+0.166 scripting
+0.047 installation
 build succeeded.
 
 The HTML pages are in docs/docs/html.
@@ -3654,10 +3690,10 @@
    debian/rules override_dh_auto_install
 make[1]: Entering directory '/build/reproducible-path/sioyek-2.0.0+dfsg'
 dh_auto_install --destdir debian/tmp
-	make -j42 install DESTDIR=/build/reproducible-path/sioyek-2.0.0\+dfsg/debian/tmp AM_UPDATE_INFO_DIR=no INSTALL_ROOT=/build/reproducible-path/sioyek-2.0.0\+dfsg/debian/tmp
+	make -j20 install DESTDIR=/build/reproducible-path/sioyek-2.0.0\+dfsg/debian/tmp AM_UPDATE_INFO_DIR=no INSTALL_ROOT=/build/reproducible-path/sioyek-2.0.0\+dfsg/debian/tmp
 make[2]: Entering directory '/build/reproducible-path/sioyek-2.0.0+dfsg'
-/usr/lib/qt5/bin/qmake -install qinstall /build/reproducible-path/sioyek-2.0.0+dfsg/resources/sioyek.desktop /build/reproducible-path/sioyek-2.0.0+dfsg/debian/tmp/usr/share/applications/sioyek.desktop
 /usr/lib/qt5/bin/qmake -install qinstall -exe sioyek /build/reproducible-path/sioyek-2.0.0+dfsg/debian/tmp/usr/bin/sioyek
+/usr/lib/qt5/bin/qmake -install qinstall /build/reproducible-path/sioyek-2.0.0+dfsg/resources/sioyek.desktop /build/reproducible-path/sioyek-2.0.0+dfsg/debian/tmp/usr/share/applications/sioyek.desktop
 /usr/lib/qt5/bin/qmake -install qinstall /build/reproducible-path/sioyek-2.0.0+dfsg/resources/sioyek-icon-linux.png /build/reproducible-path/sioyek-2.0.0+dfsg/debian/tmp/usr/share/pixmaps/sioyek-icon-linux.png
 /usr/lib/qt5/bin/qmake -install qinstall /build/reproducible-path/sioyek-2.0.0+dfsg/pdf_viewer/shaders /build/reproducible-path/sioyek-2.0.0+dfsg/debian/tmp/usr/share/sioyek/shaders
 /usr/lib/qt5/bin/qmake -install qinstall /build/reproducible-path/sioyek-2.0.0+dfsg/tutorial.pdf /build/reproducible-path/sioyek-2.0.0+dfsg/debian/tmp/usr/share/sioyek/tutorial.pdf
@@ -3686,8 +3722,8 @@
    dh_gencontrol
    dh_md5sums
    dh_builddeb
-dpkg-deb: building package 'sioyek-dbgsym' in '../sioyek-dbgsym_2.0.0+dfsg-5.1_amd64.deb'.
 dpkg-deb: building package 'sioyek' in '../sioyek_2.0.0+dfsg-5.1_amd64.deb'.
+dpkg-deb: building package 'sioyek-dbgsym' in '../sioyek-dbgsym_2.0.0+dfsg-5.1_amd64.deb'.
  dpkg-genbuildinfo --build=binary -O../sioyek_2.0.0+dfsg-5.1_amd64.buildinfo
  dpkg-genchanges --build=binary -O../sioyek_2.0.0+dfsg-5.1_amd64.changes
 dpkg-genchanges: info: binary-only upload (no source code included)
@@ -3695,12 +3731,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: not including original source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/2169272/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/1303810 and its subdirectories
-I: Current time: Sat Mar 14 22:13:27 -12 2026
-I: pbuilder-time-stamp: 1773569607
+I: removing directory /srv/workspace/pbuilder/2169272 and its subdirectories
+I: Current time: Mon Feb 10 18:25:35 +14 2025
+I: pbuilder-time-stamp: 1739161535