summaryrefslogtreecommitdiff
path: root/freefilesync
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync')
-rw-r--r--freefilesync/_service28
-rw-r--r--freefilesync/debian/changelog25
-rw-r--r--freefilesync/debian/control8
-rw-r--r--freefilesync/debian/freefilesync+devuan.dsc4
-rw-r--r--freefilesync/debian/patches/ffs_devuan.patch37
-rw-r--r--freefilesync/debian/patches/ffs_gcc.patch10
-rw-r--r--freefilesync/debian/patches/ffs_icon_loader.patch15
-rw-r--r--freefilesync/debian/patches/ffs_no_check_updates.patch84
-rw-r--r--freefilesync/debian/patches/ffs_no_wx311.patch79
-rw-r--r--freefilesync/debian/patches/ffs_traditional_view.patch63
-rw-r--r--freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch15
-rw-r--r--freefilesync/debian/patches/series2
-rw-r--r--freefilesync/ffs_fedora.patch38
-rw-r--r--freefilesync/ffs_icon_loader.patch15
-rw-r--r--freefilesync/ffs_no_check_updates.patch84
-rw-r--r--freefilesync/ffs_no_gcc12.patch72
-rw-r--r--freefilesync/ffs_no_wx311.patch79
-rw-r--r--freefilesync/ffs_traditional_view.patch63
-rw-r--r--freefilesync/freefilesync.spec13
-rw-r--r--freefilesync/revert_zenju_aggressive_upstreamisms.patch15
20 files changed, 521 insertions, 228 deletions
diff --git a/freefilesync/_service b/freefilesync/_service
new file mode 100644
index 0000000..9ff7c86
--- /dev/null
+++ b/freefilesync/_service
@@ -0,0 +1,28 @@
+<services>
+ <service name="tar_scm">
+ <param name="scm">git</param>
+ <param name="url">https://gitlab.com/bgstack15/stackrpms.git</param>
+ <param name="subdir">freefilesync/debian</param>
+ <param name="filename">debian</param>
+ <param name="revision">freefilesync-bump</param>
+ <param name="version">_none_</param>
+ </service>
+ <service name="recompress">
+ <param name="file">*.tar</param>
+ <param name="compression">xz</param>
+ </service>
+ <service name="tar_scm">
+ <param name="scm">git</param>
+ <param name="url">https://gitlab.com/opensource-tracking/FreeFileSync.git</param>
+ <param name="revision">11.21</param>
+ <param name="version">_none_</param>
+ </service>
+ <service name="recompress">
+ <param name="file">*.tar</param>
+ <param name="compression">gz</param>
+ </service>
+ <service name="extract_file">
+ <param name="archive">*.tar.xz</param>
+ <param name="files">*/*.dsc</param>
+ </service>
+</services>
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 9037cac..f129b49 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,13 +1,30 @@
+freefilesync (11.21-1+devuan) obs; urgency=medium
+
+ * Upstream updates
+ * Support volume GUID as path:
+ \\?\Volume{01234567-89ab-cdef-0123-456789abcdef} (Windows)
+ * Avoid Two-Way conflict when changing folder name upper/lower-case
+ * List hidden warning messages in options dialog
+ * Fixed buffer overflow while receiving SFTP server banner
+ * Create crash dumps even if FFS-internal crash handling doesn't kick in
+ * Log time when error occured, not when it is reported
+ * Swap sides: Require confirmation only after comparison
+ * Updated translation files
+ * Dpkg updates
+ * Remove icon loader patch (addressed by upstream)
+
+ -- B. Stack <bgstack15@gmail.com> Sun, 22 May 2022 20:35:38 -0400
+
freefilesync (11.20-1+devuan) obs; urgency=medium
* Upstream updates
* Fixed broken icon scaling on high-DPI displays
- * Improved performance for huge exclusion filter lists: linear to
+ * Improved performance for huge exclusion filter lists: linear to
constant(!) time
* Support sync with Google Drive starred folders
- * Access "My Computers" (as created by Google Backup and Sync) if
+ * Access "My Computers" (as created by Google Backup and Sync) if
starred
- * Western Digital Mycloud NAS: fixed ERROR_ALREADY_EXISTS when changing
+ * Western Digital Mycloud NAS: fixed ERROR_ALREADY_EXISTS when changing
case
* Added per-file progress for "copy to" function
* Have filter wildcard ? not match path separator
@@ -35,7 +52,7 @@ freefilesync (11.18-1+devuan) obs; urgency=medium
* Fixed SFTP key file login error on OpenSSH_8.8p1
* Add error details for NSFileReadUnknownError (macOS)
* Disable new config button when already at default
- * Use user language instead of region locale during installation
+ * Use user language instead of region locale during installation
* Bump required libcurl4-openssl-dev >= 7.82.0
-- B. Stack <bgstack15@gmail.com> Wed, 09 Mar 2022 09:38:41 -0500
diff --git a/freefilesync/debian/control b/freefilesync/debian/control
index 9301bd0..9baed3d 100644
--- a/freefilesync/debian/control
+++ b/freefilesync/debian/control
@@ -4,12 +4,12 @@ Priority: optional
Maintainer: B. Stack <bgstack15@gmail.com>
Build-Depends: debhelper (>=12~),
imagemagick,
- g++-11,
+ g++-12,
libbrotli-dev,
- libcurl4-openssl-dev (>=7.82.0),
+ libcurl4-openssl-dev (>=7.83.1-1+b1),
libglibmm-2.4-dev,
- libssh2-1-dev,
- libssl-dev,
+ libssh2-1-dev (>=1.10.0-3+b1),
+ libssl-dev (>=3.0.3-5),
wx3.0-headers,
unzip,
# gtk3 version, and these must be removed for gtk2 build
diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc
index e2ca5a6..5bbdf84 100644
--- a/freefilesync/debian/freefilesync+devuan.dsc
+++ b/freefilesync/debian/freefilesync+devuan.dsc
@@ -2,11 +2,11 @@ Format: 3.0 (quilt)
Source: freefilesync
Binary: freefilesync
Architecture: any
-Version: 11.20-1+devuan
+Version: 11.21-1+devuan
Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
-Build-Depends: debhelper (>= 12~), g++-11, imagemagick, libbrotli-dev, libcurl4-openssl-dev (>= 7.82.0), libglibmm-2.4-dev, libssh2-1-dev, libssl-dev, wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev
+Build-Depends: debhelper (>= 12~), g++-12, imagemagick, libbrotli-dev, libcurl4-openssl-dev (>= 7.83.1-1+b1), libglibmm-2.4-dev, libssh2-1-dev (>= 1.10.0-3+b1), libssl-dev (>= 3.0.3-5), wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev
Package-List:
freefilesync deb utils optional arch=any
Files:
diff --git a/freefilesync/debian/patches/ffs_devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch
index da59209..5726b87 100644
--- a/freefilesync/debian/patches/ffs_devuan.patch
+++ b/freefilesync/debian/patches/ffs_devuan.patch
@@ -1,16 +1,16 @@
Author: bgstack15
Source: Original research
-Last modified: 2022-04-18
+Last-Modified: 2022-05-22
+Last-Version: 11.21
Message: Main patch to compile on Devuan.
diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/FreeFileSync/Source/ffs_paths.cpp 10.18-1/FreeFileSync/Source/ffs_paths.cpp
--- 10.13-0/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:23:07.615661499 -0400
-+++ 10.18-1/FreeFileSync/Source/ffs_paths.cpp 2019-11-21 09:41:42.287474472 -0500
-@@ -64,7 +64,8 @@
++++ 11.21-1/FreeFileSync/Source/ffs_paths.cpp 2019-11-21 09:41:42.287474472 -0500
+@@ -49,7 +49,7 @@
- Zstring fff::getResourceDirPf()
+ Zstring fff::getResourceDirPath()
{
-- return getProcessParentFolderPath() + FILE_NAME_SEPARATOR + Zstr("Resources") + FILE_NAME_SEPARATOR;
-+ // For Fedora, EL and Devuan, install to /usr/share/freefilesync specificly
+- return appendPath(getProcessParentFolderPath(), Zstr("Resources"));
+ return Zstr("/usr/share/freefilesync/");
}
@@ -61,4 +61,27 @@ diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/RealTimeSyn
#Gtk - support "no button border"
cxxFlags += `pkg-config --cflags gtk+-2.0`
-
+Message: Fix some sloppiness by Zenju.
+diff -Naur -x '*.orig' -x '*.rej' -x .git 11.21-0/FreeFileSync/Source/application.cpp 11.21-1/FreeFileSync/Source/application.cpp
+--- 11.21-0/FreeFileSync/Source/application.cpp 2022-05-22 17:09:32.234809499 -0400
++++ 11.21-1/FreeFileSync/Source/application.cpp 2022-05-24 08:36:51.949159500 -0400
+@@ -92,7 +92,7 @@
+ ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error));
+
+ ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider,
+- (getResourceDirPf() + fileName).c_str(), //const gchar* path,
++ (getResourceDirPath() + fileName).c_str(), //const gchar* path,
+ &error); //GError** error
+ if (error)
+ throw SysError(formatGlibError("gtk_css_provider_load_from_path", error));
+--- 11.21-0/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-22 17:09:32.226809398 -0400
++++ 11.21-1/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-25 09:15:00.262617987 -0400
+@@ -68,7 +68,7 @@
+ ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error));
+
+ ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider,
+- (fff::getResourceDirPf() + fileName).c_str(), //const gchar* path,
++ (fff::getResourceDirPath() + fileName).c_str(), //const gchar* path,
+ &error); //GError** error
+ if (error)
+ throw SysError(formatGlibError("gtk_css_provider_load_from_path", error));
diff --git a/freefilesync/debian/patches/ffs_gcc.patch b/freefilesync/debian/patches/ffs_gcc.patch
index dd9e628..e5a5a96 100644
--- a/freefilesync/debian/patches/ffs_gcc.patch
+++ b/freefilesync/debian/patches/ffs_gcc.patch
@@ -1,13 +1,13 @@
-Date: 2022-04-18
-Version: 11.20
-Message: Parameterize the C++ compiler invocation
+Date: 2022-05-24
+Version: 11.21
+Message: Parameterize the C++ compiler invocation, and use g++-12
Author: bgstack15
diff -aur 11.2-1/FreeFileSync/Source/Makefile 11.2-2/FreeFileSync/Source/Makefile
--- 11.2-1/FreeFileSync/Source/Makefile 2020-10-02 14:59:35.816639878 -0400
+++ 11.2-2/FreeFileSync/Source/Makefile 2020-10-02 14:59:54.220866929 -0400
@@ -1,4 +1,5 @@
exeName = FreeFileSync
-+CXX=g++-11
++CXX=g++-12
cxxFlags += -std=c++2b -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
-Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
@@ -30,7 +30,7 @@ diff -aur 11.2-1/FreeFileSync/Source/RealTimeSync/Makefile 11.2-2/FreeFileSync/S
+++ 11.2-2/FreeFileSync/Source/RealTimeSync/Makefile 2020-10-02 14:59:54.220866929 -0400
@@ -1,4 +1,5 @@
exeName = RealTimeSync
-+CXX=g++-11
++CXX=g++-12
cxxFlags += -std=c++2b -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
-Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
diff --git a/freefilesync/debian/patches/ffs_icon_loader.patch b/freefilesync/debian/patches/ffs_icon_loader.patch
index 2575ec5..14035d5 100644
--- a/freefilesync/debian/patches/ffs_icon_loader.patch
+++ b/freefilesync/debian/patches/ffs_icon_loader.patch
@@ -1,20 +1,21 @@
Summary: Solve libglib2.0 problem in sketchy manner
-Date: 2021-09-22
-Version: 11.14
+Date: 2022-05-24
+Version: 11.21
Author: bgstack15
Message:
Warning! I have absolutely no idea what I am doing. Check https://freefilesync.org/forum/viewtopic.php?t=8780 for future developments.
In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
$ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
---- 11.13-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 07:35:40.991208133 -0400
-+++ 11.14-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 14:40:10.981215352 -0400
+Zenju tried addressing this for me, but it still does not compile, even with g++-12. So I still have to omit this macro call.
+--- 11.21-0/FreeFileSync/Source/base/icon_loader.cpp 2022-05-22 17:09:32.234809499 -0400
++++ 11.21-1/FreeFileSync/Source/base/icon_loader.cpp 2022-05-24 08:59:15.433965993 -0400
@@ -216,7 +216,7 @@
//the remaining icon types won't block!
assert(GDK_IS_PIXBUF(gicon) || G_IS_THEMED_ICON(gicon) || G_IS_EMBLEMED_ICON(gicon));
-- return FileIconHolder(static_cast<GIcon*>(::g_object_ref(gicon)) /*pass ownership*/, maxSize);
-+ return FileIconHolder(gicon /*pass ownership*/, maxSize);
+- ::g_object_ref(gicon); //pass ownership
++ //::g_object_ref(gicon); //pass ownership
+ return FileIconHolder(gicon, maxSize); //
}
-
diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch
index bdc2ebd..eececed 100644
--- a/freefilesync/debian/patches/ffs_no_check_updates.patch
+++ b/freefilesync/debian/patches/ffs_no_check_updates.patch
@@ -3,54 +3,54 @@ Date: 2022-04-18
Author: bgstack15
Message: This is a major rewrite of the ffs_no_check_updates patch from before 11.10 which disabled only a few technical www interactions. This current version completely deletes all logic associated with checking the version of the program.
diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp
---- 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:51:21.090657955 -0500
-+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:55:57.009584234 -0500
+--- 11.21-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-05-22 17:09:32.246809650 -0400
++++ 11.21-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-05-22 17:43:22.568148782 -0400
@@ -110,15 +110,6 @@
- m_menuHelp->AppendSeparator();
+ m_menuHelp->AppendSeparator();
-- m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ) , wxEmptyString, wxITEM_NORMAL );
-- m_menuHelp->Append( m_menuItemCheckVersionNow );
+- m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ), wxEmptyString, wxITEM_NORMAL );
+- m_menuHelp->Append( m_menuItemCheckVersionNow );
-
-- m_menuItemCheckVersionAuto = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("Check &automatically once a week") ) , wxEmptyString, wxITEM_CHECK );
-- m_menuHelp->Append( m_menuItemCheckVersionAuto );
-- m_menuItemCheckVersionAuto->Check( true );
+- m_menuItemCheckVersionAuto = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("Check &automatically once a week") ), wxEmptyString, wxITEM_CHECK );
+- m_menuHelp->Append( m_menuItemCheckVersionAuto );
+- m_menuItemCheckVersionAuto->Check( true );
-
-- m_menuHelp->AppendSeparator();
+- m_menuHelp->AppendSeparator();
-
- m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL );
- m_menuHelp->Append( m_menuItemAbout );
+ m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL );
+ m_menuHelp->Append( m_menuItemAbout );
@@ -1131,8 +1122,6 @@
- m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuExportFileList ), this, m_menuItemExportList->GetId());
- m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuResetLayout ), this, m_menuItemResetLayout->GetId());
- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onShowHelp ), this, m_menuItemHelp->GetId());
-- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersion ), this, m_menuItemCheckVersionNow->GetId());
-- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersionAutomatically ), this, m_menuItemCheckVersionAuto->GetId());
- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuAbout ), this, m_menuItemAbout->GetId());
- m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this );
- m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this );
+ m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuExportFileList ), this, m_menuItemExportList->GetId());
+ m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuResetLayout ), this, m_menuItemResetLayout->GetId());
+ m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onShowHelp ), this, m_menuItemHelp->GetId());
+- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersion ), this, m_menuItemCheckVersionNow->GetId());
+- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersionAutomatically ), this, m_menuItemCheckVersionAuto->GetId());
+ m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuAbout ), this, m_menuItemAbout->GetId());
+ m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this );
+ m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this );
diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/Source/ui/gui_generated.h
---- 11.18-0/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:51:21.114658209 -0500
-+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:56:17.057796860 -0500
-@@ -95,8 +95,6 @@
- wxMenuItem* m_menuItemShowOverview;
- wxMenu* m_menuHelp;
- wxMenuItem* m_menuItemHelp;
-- wxMenuItem* m_menuItemCheckVersionNow;
-- wxMenuItem* m_menuItemCheckVersionAuto;
- wxMenuItem* m_menuItemAbout;
- wxBoxSizer* bSizerPanelHolder;
- wxPanel* m_panelTopButtons;
-@@ -231,8 +229,6 @@
- virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); }
- virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); }
- virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); }
-- virtual void onMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); }
-- virtual void onMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); }
- virtual void onMenuAbout( wxCommandEvent& event ) { event.Skip(); }
- virtual void onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); }
- virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); }
+--- 11.21-0/FreeFileSync/Source/ui/gui_generated.h 2022-05-22 17:09:32.246809650 -0400
++++ 11.21-1/FreeFileSync/Source/ui/gui_generated.h 2022-05-22 17:41:42.058897375 -0400
+@@ -96,8 +96,6 @@
+ wxMenuItem* m_menuItemShowOverview;
+ wxMenu* m_menuHelp;
+ wxMenuItem* m_menuItemHelp;
+- wxMenuItem* m_menuItemCheckVersionNow;
+- wxMenuItem* m_menuItemCheckVersionAuto;
+ wxMenuItem* m_menuItemAbout;
+ wxBoxSizer* bSizerPanelHolder;
+ wxPanel* m_panelTopButtons;
+@@ -232,8 +230,6 @@
+ virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); }
+- virtual void onMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); }
+- virtual void onMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onMenuAbout( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); }
diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp
--- 11.16-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:52:19.811432573 -0500
+++ 11.16-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:57:14.506728896 -0500
@@ -81,7 +81,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc
auiMgr_.Update();
}
-@@ -5680,72 +5674,6 @@
+@@ -5706,72 +5700,6 @@
}
}
@@ -103,7 +103,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc
-
- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
- {
-- flashStatusInformation(_("Searching for program updates..."));
+- flashStatusInfo(_("Searching for program updates..."));
- //synchronous update check is sufficient here:
- automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion,
- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get());
@@ -134,7 +134,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc
-
- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
- {
-- flashStatusInformation(_("Searching for program updates..."));
+- flashStatusInfo(_("Searching for program updates..."));
-
- std::shared_ptr<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread:
-
diff --git a/freefilesync/debian/patches/ffs_no_wx311.patch b/freefilesync/debian/patches/ffs_no_wx311.patch
index 1671e4c..e74da90 100644
--- a/freefilesync/debian/patches/ffs_no_wx311.patch
+++ b/freefilesync/debian/patches/ffs_no_wx311.patch
@@ -1,10 +1,10 @@
-Last modified: 2022-04-18
-Version: 11.20
+Last modified: 2022-05-24
+Version: 11.21
Author: bgstack15
Message: Just compile by stepping around wxWidgets 3.1.1 calls
diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/ui/small_dlgs.cpp 11.4-1/FreeFileSync/Source/ui/small_dlgs.cpp
--- 11.4-0/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 08:15:29.432156507 -0500
-+++ 11.4-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 18:22:19.929543356 -0500
++++ 11.21-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 18:22:19.929543356 -0500
@@ -300,7 +300,8 @@
{
showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(e.toString()));
@@ -15,6 +15,16 @@ diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/ui/small_dl
//set default values for Google Drive: use first item of m_listBoxGdriveUsers
if (!gdriveAccounts.empty() && !acceptsItemPathPhraseGdrive(folderPathPhrase))
+@@ -1292,7 +1298,8 @@
+ for (const auto& [dlgShown, dlgSetShown, msg] : hiddenDialogCfgMapping_)
+ dialogMessages.push_back(msg);
+
+- m_checkListHiddenDialogs->Append(dialogMessages);
++ for (const wxString& item :dialogMessages) // reverted to pre-wx 3.1.1 logic
++ m_checkListHiddenDialogs->Append(item);
+
+ unsigned int itemPos = 0;
+ for (const auto& [dlgShown, dlgSetShown, msg] : hiddenDialogCfgMapping_)
@@ -1689,7 +1690,6 @@
//setMainInstructionFont(*m_staticTextMain);
@@ -63,3 +73,66 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/FreeFileSync/Source/ui/fol
//this->SetSelection(wxNOT_FOUND); //don't select anything
ChangeValue(folderPathPhrase); //preserve main text!
+--- 11.21-0/FreeFileSync/Source/config.cpp 2022-05-22 17:09:32.238809549 -0400
++++ 11.21-1/FreeFileSync/Source/config.cpp 2022-05-24 08:41:55.360955076 -0400
+@@ -1502,13 +1512,13 @@
+ if (lngName == "English (US)")
+ cfg.programLanguage = wxLANGUAGE_ENGLISH_US;
+ else if (lngName == "Chinese (Simplified)")
+- cfg.programLanguage = wxLANGUAGE_CHINESE_CHINA;
++ cfg.programLanguage = wxLANGUAGE_CHINESE_SIMPLIFIED;
+ else if (lngName == "Chinese (Traditional)")
+ cfg.programLanguage = wxLANGUAGE_CHINESE_TAIWAN;
+ else if (lngName == "English (U.K.)")
+ cfg.programLanguage = wxLANGUAGE_ENGLISH_UK;
+ else if (lngName == "Norwegian (Bokmal)")
+- cfg.programLanguage = wxLANGUAGE_NORWEGIAN;
++ cfg.programLanguage = wxLANGUAGE_NORWEGIAN_BOKMAL;
+ else if (lngName == "Portuguese (Brazilian)")
+ cfg.programLanguage = wxLANGUAGE_PORTUGUESE_BRAZILIAN;
+ else if (const wxLanguageInfo* lngInfo = wxLocale::FindLanguageInfo(utfTo<wxString>(lngName)))
+--- 11.21-0/FreeFileSync/Source/localization.cpp 2022-05-22 17:09:32.238809549 -0400
++++ 11.21-1/FreeFileSync/Source/localization.cpp 2022-05-24 08:48:56.398222091 -0400
+@@ -195,19 +195,19 @@
+ if (lngCode == "zh")
+ {
+ if (lng == wxLANGUAGE_CHINESE) //wxWidgets assigns this to "zh" or "zh_TW" for some reason
+- return wxLANGUAGE_CHINESE_CHINA;
++ return wxLANGUAGE_CHINESE_SIMPLIFIED;
+
+ for (const char* l : {"zh_HK", "zh_MO", "zh_TW"})
+ if (locale == l)
+ return wxLANGUAGE_CHINESE_TAIWAN;
+
+- return wxLANGUAGE_CHINESE_CHINA;
++ return wxLANGUAGE_CHINESE_SIMPLIFIED;
+ }
+
+ if (lngCode == "en")
+ {
+ if (lng == wxLANGUAGE_ENGLISH || //wxWidgets assigns this to "en" or "en_GB" for some reason
+- lng == wxLANGUAGE_ENGLISH_WORLD)
++ lng == wxLANGUAGE_ENGLISH_EIRE)
+ return wxLANGUAGE_ENGLISH_US;
+
+ for (const char* l : {"en_US", "en_CA", "en_AS", "en_UM", "en_VI"})
+@@ -218,7 +218,7 @@
+ }
+
+ if (lngCode == "nb" || lngCode == "nn") //wxLANGUAGE_NORWEGIAN_BOKMAL, wxLANGUAGE_NORWEGIAN_NYNORSK
+- return wxLANGUAGE_NORWEGIAN;
++ return wxLANGUAGE_NORWEGIAN_BOKMAL;
+
+ if (locale == "pt_BR")
+ return wxLANGUAGE_PORTUGUESE_BRAZILIAN;
+--- 11.21-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 17:09:32.246809650 -0400
++++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-24 09:29:32.384695364 -0400
+@@ -1759,7 +1753,7 @@
+ if (statusTxts_.empty())
+ {
+ m_staticTextStatusCenter->SetForegroundColour(highlight ? wxColor(31, 57, 226) /*blue*/ : wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
+- m_staticTextStatusCenter->SetFont((m_staticTextStatusCenter->GetFont().*(highlight ? &wxFont::Bold : &wxFont::GetBaseFont))());
++ m_staticTextStatusCenter->SetFont(m_staticTextStatusCenter->GetFont().Bold());
+
+ setText(*m_staticTextStatusCenter, text);
+ m_panelStatusBar->Layout();
diff --git a/freefilesync/debian/patches/ffs_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch
index b9b35cc..e0cf0d2 100644
--- a/freefilesync/debian/patches/ffs_traditional_view.patch
+++ b/freefilesync/debian/patches/ffs_traditional_view.patch
@@ -1,11 +1,11 @@
-Version: 11.6
-Date: 2021-02-02
+Version: 11.21
+Date: 2022-05-24
Author: bgstack15@gmail.com
Message: restore a traditional view to FreeFileSync
diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.3-1/FreeFileSync/Source/ui/file_grid.cpp
---- 11.3-1/FreeFileSync/Source/ui/file_grid.cpp 2020-11-02 11:38:14.806496077 -0500
-+++ 11.3-2/FreeFileSync/Source/ui/file_grid.cpp 2020-11-05 11:11:46.146360956 -0500
-@@ -493,8 +493,10 @@
+--- 11.21-0/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 17:09:32.242809600 -0400
++++ 11.21-1/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 20:23:04.015916689 -0400
+@@ -475,8 +475,10 @@
case ItemPathFormat::name:
return utfTo<std::wstring>(fsObj->getItemName<side>());
case ItemPathFormat::relative:
@@ -16,7 +16,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return AFS::getDisplayPath(fsObj->getAbstractPath<side>());
}
assert(false);
-@@ -547,8 +549,13 @@
+@@ -529,8 +531,13 @@
else
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
@@ -31,7 +31,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
}
-@@ -654,6 +661,26 @@
+@@ -636,6 +643,26 @@
else //=> BaseFolderPair
groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>());
break;
@@ -58,7 +58,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
}
//path components should follow the app layout direction and are NOT a single piece of text!
-@@ -679,11 +706,42 @@
+@@ -661,11 +688,38 @@
int groupNameWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + getTextExtentBuffered(dc, groupName).x);
const int groupNameMinWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + ellipsisWidth);
@@ -77,10 +77,6 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
+ // start trad patch
+
+ // rearrange this one section
-+ //add slashes for better readability + a wide gap for disambiguation
-+ assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\'));
-+ const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR);
-+
+ switch (itemPathFormat_)
+ {
+ case ItemPathFormat::traditional:
@@ -89,7 +85,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
+ if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/
+ !endsWith(groupParentFolder, L'\\') && /*e.g. C:\ */
+ groupParentFolder.size() > 0 )
-+ groupParentFolder += groupParentSep;
++ groupParentFolder += contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR);
+ break;
+ case ItemPathFormat::name:
+ case ItemPathFormat::relative:
@@ -102,18 +98,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
//not enough space? => collapse
if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth;
excessWidth > 0)
-@@ -693,10 +751,6 @@
- //1. render group components on two rows
- stackedGroupRender = true;
-
-- //add slashes for better readability + a wide gap for disambiguation
-- assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\'));
-- const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR);
--
- if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/
- !endsWith(groupParentFolder, L'\\')) /*e.g. C:\ */
- groupParentFolder += groupParentSep;
-@@ -755,6 +809,11 @@
+@@ -731,6 +785,11 @@
}
}
}
@@ -125,7 +110,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return
{
-@@ -873,6 +932,9 @@
+@@ -851,6 +910,9 @@
rectGroup = rectGroupParent = rectGroupName = rectTmp;
rectGroupParent.width = groupParentWidth;
@@ -135,7 +120,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
rectGroupName .width = groupNameWidth;
if (stackedGroupRender)
-@@ -896,6 +958,11 @@
+@@ -874,6 +936,11 @@
rectGroupItems.width = 0;
}
@@ -147,7 +132,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
//-------------------------------------------------------------------------
{
//clear background below parent path => harmonize with renderRowBackgound()
-@@ -906,8 +973,8 @@
+@@ -884,8 +951,8 @@
wxRect rectGroupBack = rectGroup;
rectGroupBack.width += 2 * gapSize_; //include gap before vline
@@ -158,7 +143,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
clearArea(dc, rectGroupBack, getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 == 0));
//clearArea() is surprisingly expensive => call just once!
-@@ -924,7 +991,8 @@
+@@ -900,7 +967,8 @@
rectNav.width = fastFromDIP(20);
if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
@@ -168,7 +153,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
wxColor backCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
dc.GetPixel(rectNav.GetTopRight(), &backCol); //e.g. selected row!
-@@ -914,13 +982,13 @@
+@@ -908,13 +976,13 @@
dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST);
}
@@ -184,7 +169,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
wxDCTextColourChanger textColorGroupName(dc);
//folder background: coordinate with renderRowBackgound()
-@@ -974,9 +1042,9 @@
+@@ -947,9 +1015,9 @@
drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName));
}
@@ -196,7 +181,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
(groupName.empty() || !pdi.folderGroupObj->isEmpty<side>())) //don't show for missing folders
{
wxRect rectGroupParentText = rectGroupParent;
-@@ -975,16 +1043,16 @@
+@@ -969,16 +1037,16 @@
rectGroupItems.x += 2 * gapSize_;
rectGroupItems.width -= 2 * gapSize_;
@@ -217,7 +202,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation());
-@@ -1134,7 +1202,12 @@
+@@ -1105,7 +1173,12 @@
groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth);
assert(!stackedGroupRender);
@@ -231,7 +216,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconSize() : 0;
const int ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x;
const int itemWidth = itemName.empty() ? 0 :
-@@ -1166,6 +1239,10 @@
+@@ -1137,6 +1210,10 @@
return _("Relative path");
case ItemPathFormat::full:
return _("Full path");
@@ -242,7 +227,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
}
assert(false);
break;
-@@ -1423,7 +1500,8 @@
+@@ -1393,7 +1470,8 @@
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
//----------------------------------------------------------------------------------
@@ -252,7 +237,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
}
-@@ -1447,7 +1525,8 @@
+@@ -1417,7 +1495,8 @@
{
wxRect rectBack = rect;
if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
@@ -276,8 +261,8 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g
const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::relative;
diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 11.2-1-trad3/FreeFileSync/Source/ui/main_dlg.cpp
--- 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-10-02 20:49:11.487782099 -0400
-+++ 11.12-1/FreeFileSync/Source/ui/main_dlg.cpp 2021-07-15 20:22:02.191278722 -0400
-@@ -2653,6 +2647,8 @@
++++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 20:26:31.350461792 -0400
+@@ -2741,6 +2741,8 @@
addFormatEntry(_("Item name" ), ItemPathFormat::name);
addFormatEntry(_("Relative path"), ItemPathFormat::relative);
addFormatEntry(_("Full path" ), ItemPathFormat::full);
@@ -285,7 +270,7 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_d
+ addFormatEntry(_("Trad. relative"),ItemPathFormat::tradrel);
//----------------------------------------------------------------------------------------------
- auto setIconSize = [&](FileIconSize sz, bool showIcons)
+ auto setIconSize = [&](GridIconSize sz, bool showIcons)
diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/config.cpp 11.2-1-trad3/FreeFileSync/Source/config.cpp
--- 11.2-1/FreeFileSync/Source/config.cpp 2020-10-02 14:39:05.233462578 -0400
+++ 11.2-1-trad3/FreeFileSync/Source/config.cpp 2020-10-02 20:22:24.275555557 -0400
diff --git a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
index fda8cc2..43fec48 100644
--- a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
+++ b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
@@ -1,6 +1,6 @@
Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
-Date: 2022-04-18
-Version: 11.20
+Date: 2022-05-22
+Version: 11.21
Author: bgstack15
diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h
--- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400
@@ -155,8 +155,8 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
{
SetLabel(label);
diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/wx+/dc.h
---- 11.20-0/wx+/dc.h 2022-04-18 09:49:31.921386600 -0400
-+++ 11.20-1/wx+/dc.h 2022-04-18 10:12:04.667907393 -0400
+--- 11.21-0/wx+/dc.h 2022-05-22 17:09:32.250809701 -0400
++++ 11.21-1/wx+/dc.h 2022-05-22 20:28:53.788193992 -0400
@@ -12,7 +12,7 @@
#include <zen/basic_math.h>
#include <wx/dcbuffer.h> //for macro: wxALWAYS_NATIVE_DOUBLE_BUFFER
@@ -175,18 +175,17 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
-#endif
//GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114
//=> requires general fix at wxWidgets-level
-
-@@ -119,11 +116,11 @@
+
+@@ -119,11 +116,10 @@
inline
-wxBitmapBundle toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/)
+wxBitmap toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/)
{
- //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); not (yet) implemented
+ //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); implementation just ignores scale parameter! WTF!
wxBitmap bmpScaled(img);
- bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi);
-+ //bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi);
return bmpScaled;
}
diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series
index 92dd680..467d69a 100644
--- a/freefilesync/debian/patches/series
+++ b/freefilesync/debian/patches/series
@@ -10,5 +10,5 @@ revert_zenju_aggressive_upstreamisms.patch
ffs_gcc.patch
ffs_traditional_view.patch
ffs_desktop_notifications.patch
-ffs_openssl.patch
+#ffs_openssl.patch
ffs_icon_loader.patch
diff --git a/freefilesync/ffs_fedora.patch b/freefilesync/ffs_fedora.patch
index 7f5c4d1..d54110b 100644
--- a/freefilesync/ffs_fedora.patch
+++ b/freefilesync/ffs_fedora.patch
@@ -1,14 +1,16 @@
-Last modified date: 2022-04-18
+Author: bgstack15
+Source: Original research
+Last-Modified: 2022-05-22
+Message: Main patch to compile on Fedora
History: ffs_fedora 2020-07-22 now uses gtk3
diff -Naur 10.13-0/FreeFileSync/Source/ffs_paths.cpp 10.13-1/FreeFileSync/Source/ffs_paths.cpp
--- 10.13-0/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:23:07.615661499 -0400
-+++ 10.13-1/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:36:28.178274292 -0400
-@@ -55,7 +55,8 @@
++++ 11.21-1/FreeFileSync/Source/ffs_paths.cpp 2019-11-21 09:41:42.287474472 -0500
+@@ -49,7 +49,7 @@
- Zstring fff::getResourceDirPf()
+ Zstring fff::getResourceDirPath()
{
-- return getProcessParentFolderPath() + FILE_NAME_SEPARATOR + Zstr("Resources") + FILE_NAME_SEPARATOR;
-+ // For Fedora, EL and Devuan, install to /usr/share/freefilesync specificly
+- return appendPath(getProcessParentFolderPath(), Zstr("Resources"));
+ return Zstr("/usr/share/freefilesync/");
}
@@ -80,3 +82,27 @@ diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.19-0/FreeFileSync/Sou
build += SPACED_BULLET;
build += utfTo<wxString>(formatTime(formatDateTag, getCompileTime()));
+Message: Fix some sloppiness by Zenju.
+diff -Naur -x '*.orig' -x '*.rej' -x .git 11.21-0/FreeFileSync/Source/application.cpp 11.21-1/FreeFileSync/Source/application.cpp
+--- 11.21-0/FreeFileSync/Source/application.cpp 2022-05-22 17:09:32.234809499 -0400
++++ 11.21-1/FreeFileSync/Source/application.cpp 2022-05-24 08:36:51.949159500 -0400
+@@ -92,7 +92,7 @@
+ ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error));
+
+ ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider,
+- (getResourceDirPf() + fileName).c_str(), //const gchar* path,
++ (getResourceDirPath() + fileName).c_str(), //const gchar* path,
+ &error); //GError** error
+ if (error)
+ throw SysError(formatGlibError("gtk_css_provider_load_from_path", error));
+--- 11.21-0/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-22 17:09:32.226809398 -0400
++++ 11.21-1/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-25 09:15:00.262617987 -0400
+@@ -68,7 +68,7 @@
+ ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error));
+
+ ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider,
+- (fff::getResourceDirPf() + fileName).c_str(), //const gchar* path,
++ (fff::getResourceDirPath() + fileName).c_str(), //const gchar* path,
+ &error); //GError** error
+ if (error)
+ throw SysError(formatGlibError("gtk_css_provider_load_from_path", error));
diff --git a/freefilesync/ffs_icon_loader.patch b/freefilesync/ffs_icon_loader.patch
index 2575ec5..14035d5 100644
--- a/freefilesync/ffs_icon_loader.patch
+++ b/freefilesync/ffs_icon_loader.patch
@@ -1,20 +1,21 @@
Summary: Solve libglib2.0 problem in sketchy manner
-Date: 2021-09-22
-Version: 11.14
+Date: 2022-05-24
+Version: 11.21
Author: bgstack15
Message:
Warning! I have absolutely no idea what I am doing. Check https://freefilesync.org/forum/viewtopic.php?t=8780 for future developments.
In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
$ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
---- 11.13-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 07:35:40.991208133 -0400
-+++ 11.14-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 14:40:10.981215352 -0400
+Zenju tried addressing this for me, but it still does not compile, even with g++-12. So I still have to omit this macro call.
+--- 11.21-0/FreeFileSync/Source/base/icon_loader.cpp 2022-05-22 17:09:32.234809499 -0400
++++ 11.21-1/FreeFileSync/Source/base/icon_loader.cpp 2022-05-24 08:59:15.433965993 -0400
@@ -216,7 +216,7 @@
//the remaining icon types won't block!
assert(GDK_IS_PIXBUF(gicon) || G_IS_THEMED_ICON(gicon) || G_IS_EMBLEMED_ICON(gicon));
-- return FileIconHolder(static_cast<GIcon*>(::g_object_ref(gicon)) /*pass ownership*/, maxSize);
-+ return FileIconHolder(gicon /*pass ownership*/, maxSize);
+- ::g_object_ref(gicon); //pass ownership
++ //::g_object_ref(gicon); //pass ownership
+ return FileIconHolder(gicon, maxSize); //
}
-
diff --git a/freefilesync/ffs_no_check_updates.patch b/freefilesync/ffs_no_check_updates.patch
index bdc2ebd..eececed 100644
--- a/freefilesync/ffs_no_check_updates.patch
+++ b/freefilesync/ffs_no_check_updates.patch
@@ -3,54 +3,54 @@ Date: 2022-04-18
Author: bgstack15
Message: This is a major rewrite of the ffs_no_check_updates patch from before 11.10 which disabled only a few technical www interactions. This current version completely deletes all logic associated with checking the version of the program.
diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp
---- 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:51:21.090657955 -0500
-+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:55:57.009584234 -0500
+--- 11.21-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-05-22 17:09:32.246809650 -0400
++++ 11.21-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-05-22 17:43:22.568148782 -0400
@@ -110,15 +110,6 @@
- m_menuHelp->AppendSeparator();
+ m_menuHelp->AppendSeparator();
-- m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ) , wxEmptyString, wxITEM_NORMAL );
-- m_menuHelp->Append( m_menuItemCheckVersionNow );
+- m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ), wxEmptyString, wxITEM_NORMAL );
+- m_menuHelp->Append( m_menuItemCheckVersionNow );
-
-- m_menuItemCheckVersionAuto = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("Check &automatically once a week") ) , wxEmptyString, wxITEM_CHECK );
-- m_menuHelp->Append( m_menuItemCheckVersionAuto );
-- m_menuItemCheckVersionAuto->Check( true );
+- m_menuItemCheckVersionAuto = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("Check &automatically once a week") ), wxEmptyString, wxITEM_CHECK );
+- m_menuHelp->Append( m_menuItemCheckVersionAuto );
+- m_menuItemCheckVersionAuto->Check( true );
-
-- m_menuHelp->AppendSeparator();
+- m_menuHelp->AppendSeparator();
-
- m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL );
- m_menuHelp->Append( m_menuItemAbout );
+ m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL );
+ m_menuHelp->Append( m_menuItemAbout );
@@ -1131,8 +1122,6 @@
- m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuExportFileList ), this, m_menuItemExportList->GetId());
- m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuResetLayout ), this, m_menuItemResetLayout->GetId());
- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onShowHelp ), this, m_menuItemHelp->GetId());
-- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersion ), this, m_menuItemCheckVersionNow->GetId());
-- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersionAutomatically ), this, m_menuItemCheckVersionAuto->GetId());
- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuAbout ), this, m_menuItemAbout->GetId());
- m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this );
- m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this );
+ m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuExportFileList ), this, m_menuItemExportList->GetId());
+ m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuResetLayout ), this, m_menuItemResetLayout->GetId());
+ m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onShowHelp ), this, m_menuItemHelp->GetId());
+- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersion ), this, m_menuItemCheckVersionNow->GetId());
+- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersionAutomatically ), this, m_menuItemCheckVersionAuto->GetId());
+ m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuAbout ), this, m_menuItemAbout->GetId());
+ m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this );
+ m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this );
diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/Source/ui/gui_generated.h
---- 11.18-0/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:51:21.114658209 -0500
-+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:56:17.057796860 -0500
-@@ -95,8 +95,6 @@
- wxMenuItem* m_menuItemShowOverview;
- wxMenu* m_menuHelp;
- wxMenuItem* m_menuItemHelp;
-- wxMenuItem* m_menuItemCheckVersionNow;
-- wxMenuItem* m_menuItemCheckVersionAuto;
- wxMenuItem* m_menuItemAbout;
- wxBoxSizer* bSizerPanelHolder;
- wxPanel* m_panelTopButtons;
-@@ -231,8 +229,6 @@
- virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); }
- virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); }
- virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); }
-- virtual void onMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); }
-- virtual void onMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); }
- virtual void onMenuAbout( wxCommandEvent& event ) { event.Skip(); }
- virtual void onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); }
- virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); }
+--- 11.21-0/FreeFileSync/Source/ui/gui_generated.h 2022-05-22 17:09:32.246809650 -0400
++++ 11.21-1/FreeFileSync/Source/ui/gui_generated.h 2022-05-22 17:41:42.058897375 -0400
+@@ -96,8 +96,6 @@
+ wxMenuItem* m_menuItemShowOverview;
+ wxMenu* m_menuHelp;
+ wxMenuItem* m_menuItemHelp;
+- wxMenuItem* m_menuItemCheckVersionNow;
+- wxMenuItem* m_menuItemCheckVersionAuto;
+ wxMenuItem* m_menuItemAbout;
+ wxBoxSizer* bSizerPanelHolder;
+ wxPanel* m_panelTopButtons;
+@@ -232,8 +230,6 @@
+ virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); }
+- virtual void onMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); }
+- virtual void onMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onMenuAbout( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); }
diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp
--- 11.16-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:52:19.811432573 -0500
+++ 11.16-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:57:14.506728896 -0500
@@ -81,7 +81,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc
auiMgr_.Update();
}
-@@ -5680,72 +5674,6 @@
+@@ -5706,72 +5700,6 @@
}
}
@@ -103,7 +103,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc
-
- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
- {
-- flashStatusInformation(_("Searching for program updates..."));
+- flashStatusInfo(_("Searching for program updates..."));
- //synchronous update check is sufficient here:
- automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion,
- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get());
@@ -134,7 +134,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc
-
- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
- {
-- flashStatusInformation(_("Searching for program updates..."));
+- flashStatusInfo(_("Searching for program updates..."));
-
- std::shared_ptr<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread:
-
diff --git a/freefilesync/ffs_no_gcc12.patch b/freefilesync/ffs_no_gcc12.patch
new file mode 100644
index 0000000..88b0d27
--- /dev/null
+++ b/freefilesync/ffs_no_gcc12.patch
@@ -0,0 +1,72 @@
+Message: Because we do not use gcc 12, we have an error with unordered_map and std::pair.
+Author: zensubz
+Date-Modified: 2022-05-24
+Version: 11.21
+--- a/FreeFileSync/Source/base/db_file.cpp
++++ b/FreeFileSync/Source/base/db_file.cpp
+@@ -642,7 +642,7 @@
+
+ void process(const ContainerObject::FolderList& currentFolders, const Zstring& parentRelPath, InSyncFolder::FolderList& dbFolders)
+ {
+- std::unordered_map<ZstringNorm, const FolderPair*> toPreserve;
++ std::map<ZstringNorm, const FolderPair*> toPreserve;
+
+ for (const FolderPair& folder : currentFolders)
+ if (!folder.isPairEmpty())
+--- a/FreeFileSync/Source/base/db_file.h
++++ b/FreeFileSync/Source/base/db_file.h
+@@ -67,9 +67,9 @@
+ InSyncStatus status = DIR_STATUS_STRAW_MAN;
+
+ //------------------------------------------------------------------
+- using FolderList = std::unordered_map<ZstringNorm, InSyncFolder >; //
+- using FileList = std::unordered_map<ZstringNorm, InSyncFile >; // key: file name (ignoring Unicode normal forms)
+- using SymlinkList = std::unordered_map<ZstringNorm, InSyncSymlink>; //
++ using FolderList = std::map<ZstringNorm, InSyncFolder >; //
++ using FileList = std::map<ZstringNorm, InSyncFile >; // key: file name (ignoring Unicode normal forms)
++ using SymlinkList = std::map<ZstringNorm, InSyncSymlink>; //
+ //------------------------------------------------------------------
+
+ FolderList folders;
+--- a/FreeFileSync/Source/base/file_hierarchy.h
++++ b/FreeFileSync/Source/base/file_hierarchy.h
+@@ -7,12 +7,14 @@
+ #ifndef FILE_HIERARCHY_H_257235289645296
+ #define FILE_HIERARCHY_H_257235289645296
+
++#include <map>
+ #include <string>
+ #include <memory>
+ #include <list>
+ #include <functional>
+ #include <unordered_set>
+-#include <unordered_map>
++#include <zen/zstring.h>
++#include <zen/stl_tools.h>
+ #include "structures.h"
+ #include "path_filter.h"
+ #include "../afs/abstract.h"
+@@ -94,9 +96,9 @@
+ //------------------------------------------------------------------
+ //key: raw file name, without any (Unicode) normalization, preserving original upper-/lower-case
+ //"Changing data [...] to NFC would cause interoperability problems. Always leave data as it is."
+- using FolderList = std::unordered_map<Zstring, std::pair<FolderAttributes, FolderContainer>>;
+- using FileList = std::unordered_map<Zstring, FileAttributes>;
+- using SymlinkList = std::unordered_map<Zstring, LinkAttributes>;
++ using FolderList = std::map<Zstring, std::pair<FolderAttributes, FolderContainer>>;
++ using FileList = std::map<Zstring, FileAttributes>;
++ using SymlinkList = std::map<Zstring, LinkAttributes>;
+ //------------------------------------------------------------------
+
+ FolderContainer() = default;
+--- a/zen/json.h
++++ b/zen/json.h
+@@ -41,7 +41,7 @@
+
+ Type type = Type::null;
+ std::string primVal; //for primitive types
+- std::unordered_map<std::string, JsonValue> objectVal; //"[...] most implementations of JSON libraries do not accept duplicate keys [...]" => fine!
++ std::map<std::string, JsonValue> objectVal; //"[...] most implementations of JSON libraries do not accept duplicate keys [...]" => fine!
+ std::vector<JsonValue> arrayVal;
+ };
+
diff --git a/freefilesync/ffs_no_wx311.patch b/freefilesync/ffs_no_wx311.patch
index 1671e4c..e74da90 100644
--- a/freefilesync/ffs_no_wx311.patch
+++ b/freefilesync/ffs_no_wx311.patch
@@ -1,10 +1,10 @@
-Last modified: 2022-04-18
-Version: 11.20
+Last modified: 2022-05-24
+Version: 11.21
Author: bgstack15
Message: Just compile by stepping around wxWidgets 3.1.1 calls
diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/ui/small_dlgs.cpp 11.4-1/FreeFileSync/Source/ui/small_dlgs.cpp
--- 11.4-0/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 08:15:29.432156507 -0500
-+++ 11.4-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 18:22:19.929543356 -0500
++++ 11.21-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 18:22:19.929543356 -0500
@@ -300,7 +300,8 @@
{
showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(e.toString()));
@@ -15,6 +15,16 @@ diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/ui/small_dl
//set default values for Google Drive: use first item of m_listBoxGdriveUsers
if (!gdriveAccounts.empty() && !acceptsItemPathPhraseGdrive(folderPathPhrase))
+@@ -1292,7 +1298,8 @@
+ for (const auto& [dlgShown, dlgSetShown, msg] : hiddenDialogCfgMapping_)
+ dialogMessages.push_back(msg);
+
+- m_checkListHiddenDialogs->Append(dialogMessages);
++ for (const wxString& item :dialogMessages) // reverted to pre-wx 3.1.1 logic
++ m_checkListHiddenDialogs->Append(item);
+
+ unsigned int itemPos = 0;
+ for (const auto& [dlgShown, dlgSetShown, msg] : hiddenDialogCfgMapping_)
@@ -1689,7 +1690,6 @@
//setMainInstructionFont(*m_staticTextMain);
@@ -63,3 +73,66 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/FreeFileSync/Source/ui/fol
//this->SetSelection(wxNOT_FOUND); //don't select anything
ChangeValue(folderPathPhrase); //preserve main text!
+--- 11.21-0/FreeFileSync/Source/config.cpp 2022-05-22 17:09:32.238809549 -0400
++++ 11.21-1/FreeFileSync/Source/config.cpp 2022-05-24 08:41:55.360955076 -0400
+@@ -1502,13 +1512,13 @@
+ if (lngName == "English (US)")
+ cfg.programLanguage = wxLANGUAGE_ENGLISH_US;
+ else if (lngName == "Chinese (Simplified)")
+- cfg.programLanguage = wxLANGUAGE_CHINESE_CHINA;
++ cfg.programLanguage = wxLANGUAGE_CHINESE_SIMPLIFIED;
+ else if (lngName == "Chinese (Traditional)")
+ cfg.programLanguage = wxLANGUAGE_CHINESE_TAIWAN;
+ else if (lngName == "English (U.K.)")
+ cfg.programLanguage = wxLANGUAGE_ENGLISH_UK;
+ else if (lngName == "Norwegian (Bokmal)")
+- cfg.programLanguage = wxLANGUAGE_NORWEGIAN;
++ cfg.programLanguage = wxLANGUAGE_NORWEGIAN_BOKMAL;
+ else if (lngName == "Portuguese (Brazilian)")
+ cfg.programLanguage = wxLANGUAGE_PORTUGUESE_BRAZILIAN;
+ else if (const wxLanguageInfo* lngInfo = wxLocale::FindLanguageInfo(utfTo<wxString>(lngName)))
+--- 11.21-0/FreeFileSync/Source/localization.cpp 2022-05-22 17:09:32.238809549 -0400
++++ 11.21-1/FreeFileSync/Source/localization.cpp 2022-05-24 08:48:56.398222091 -0400
+@@ -195,19 +195,19 @@
+ if (lngCode == "zh")
+ {
+ if (lng == wxLANGUAGE_CHINESE) //wxWidgets assigns this to "zh" or "zh_TW" for some reason
+- return wxLANGUAGE_CHINESE_CHINA;
++ return wxLANGUAGE_CHINESE_SIMPLIFIED;
+
+ for (const char* l : {"zh_HK", "zh_MO", "zh_TW"})
+ if (locale == l)
+ return wxLANGUAGE_CHINESE_TAIWAN;
+
+- return wxLANGUAGE_CHINESE_CHINA;
++ return wxLANGUAGE_CHINESE_SIMPLIFIED;
+ }
+
+ if (lngCode == "en")
+ {
+ if (lng == wxLANGUAGE_ENGLISH || //wxWidgets assigns this to "en" or "en_GB" for some reason
+- lng == wxLANGUAGE_ENGLISH_WORLD)
++ lng == wxLANGUAGE_ENGLISH_EIRE)
+ return wxLANGUAGE_ENGLISH_US;
+
+ for (const char* l : {"en_US", "en_CA", "en_AS", "en_UM", "en_VI"})
+@@ -218,7 +218,7 @@
+ }
+
+ if (lngCode == "nb" || lngCode == "nn") //wxLANGUAGE_NORWEGIAN_BOKMAL, wxLANGUAGE_NORWEGIAN_NYNORSK
+- return wxLANGUAGE_NORWEGIAN;
++ return wxLANGUAGE_NORWEGIAN_BOKMAL;
+
+ if (locale == "pt_BR")
+ return wxLANGUAGE_PORTUGUESE_BRAZILIAN;
+--- 11.21-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 17:09:32.246809650 -0400
++++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-24 09:29:32.384695364 -0400
+@@ -1759,7 +1753,7 @@
+ if (statusTxts_.empty())
+ {
+ m_staticTextStatusCenter->SetForegroundColour(highlight ? wxColor(31, 57, 226) /*blue*/ : wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
+- m_staticTextStatusCenter->SetFont((m_staticTextStatusCenter->GetFont().*(highlight ? &wxFont::Bold : &wxFont::GetBaseFont))());
++ m_staticTextStatusCenter->SetFont(m_staticTextStatusCenter->GetFont().Bold());
+
+ setText(*m_staticTextStatusCenter, text);
+ m_panelStatusBar->Layout();
diff --git a/freefilesync/ffs_traditional_view.patch b/freefilesync/ffs_traditional_view.patch
index b9b35cc..e0cf0d2 100644
--- a/freefilesync/ffs_traditional_view.patch
+++ b/freefilesync/ffs_traditional_view.patch
@@ -1,11 +1,11 @@
-Version: 11.6
-Date: 2021-02-02
+Version: 11.21
+Date: 2022-05-24
Author: bgstack15@gmail.com
Message: restore a traditional view to FreeFileSync
diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.3-1/FreeFileSync/Source/ui/file_grid.cpp
---- 11.3-1/FreeFileSync/Source/ui/file_grid.cpp 2020-11-02 11:38:14.806496077 -0500
-+++ 11.3-2/FreeFileSync/Source/ui/file_grid.cpp 2020-11-05 11:11:46.146360956 -0500
-@@ -493,8 +493,10 @@
+--- 11.21-0/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 17:09:32.242809600 -0400
++++ 11.21-1/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 20:23:04.015916689 -0400
+@@ -475,8 +475,10 @@
case ItemPathFormat::name:
return utfTo<std::wstring>(fsObj->getItemName<side>());
case ItemPathFormat::relative:
@@ -16,7 +16,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return AFS::getDisplayPath(fsObj->getAbstractPath<side>());
}
assert(false);
-@@ -547,8 +549,13 @@
+@@ -529,8 +531,13 @@
else
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
@@ -31,7 +31,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
}
-@@ -654,6 +661,26 @@
+@@ -636,6 +643,26 @@
else //=> BaseFolderPair
groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>());
break;
@@ -58,7 +58,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
}
//path components should follow the app layout direction and are NOT a single piece of text!
-@@ -679,11 +706,42 @@
+@@ -661,11 +688,38 @@
int groupNameWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + getTextExtentBuffered(dc, groupName).x);
const int groupNameMinWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + ellipsisWidth);
@@ -77,10 +77,6 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
+ // start trad patch
+
+ // rearrange this one section
-+ //add slashes for better readability + a wide gap for disambiguation
-+ assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\'));
-+ const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR);
-+
+ switch (itemPathFormat_)
+ {
+ case ItemPathFormat::traditional:
@@ -89,7 +85,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
+ if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/
+ !endsWith(groupParentFolder, L'\\') && /*e.g. C:\ */
+ groupParentFolder.size() > 0 )
-+ groupParentFolder += groupParentSep;
++ groupParentFolder += contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR);
+ break;
+ case ItemPathFormat::name:
+ case ItemPathFormat::relative:
@@ -102,18 +98,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
//not enough space? => collapse
if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth;
excessWidth > 0)
-@@ -693,10 +751,6 @@
- //1. render group components on two rows
- stackedGroupRender = true;
-
-- //add slashes for better readability + a wide gap for disambiguation
-- assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\'));
-- const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR);
--
- if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/
- !endsWith(groupParentFolder, L'\\')) /*e.g. C:\ */
- groupParentFolder += groupParentSep;
-@@ -755,6 +809,11 @@
+@@ -731,6 +785,11 @@
}
}
}
@@ -125,7 +110,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return
{
-@@ -873,6 +932,9 @@
+@@ -851,6 +910,9 @@
rectGroup = rectGroupParent = rectGroupName = rectTmp;
rectGroupParent.width = groupParentWidth;
@@ -135,7 +120,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
rectGroupName .width = groupNameWidth;
if (stackedGroupRender)
-@@ -896,6 +958,11 @@
+@@ -874,6 +936,11 @@
rectGroupItems.width = 0;
}
@@ -147,7 +132,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
//-------------------------------------------------------------------------
{
//clear background below parent path => harmonize with renderRowBackgound()
-@@ -906,8 +973,8 @@
+@@ -884,8 +951,8 @@
wxRect rectGroupBack = rectGroup;
rectGroupBack.width += 2 * gapSize_; //include gap before vline
@@ -158,7 +143,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
clearArea(dc, rectGroupBack, getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 == 0));
//clearArea() is surprisingly expensive => call just once!
-@@ -924,7 +991,8 @@
+@@ -900,7 +967,8 @@
rectNav.width = fastFromDIP(20);
if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
@@ -168,7 +153,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
wxColor backCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
dc.GetPixel(rectNav.GetTopRight(), &backCol); //e.g. selected row!
-@@ -914,13 +982,13 @@
+@@ -908,13 +976,13 @@
dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST);
}
@@ -184,7 +169,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
wxDCTextColourChanger textColorGroupName(dc);
//folder background: coordinate with renderRowBackgound()
-@@ -974,9 +1042,9 @@
+@@ -947,9 +1015,9 @@
drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName));
}
@@ -196,7 +181,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
(groupName.empty() || !pdi.folderGroupObj->isEmpty<side>())) //don't show for missing folders
{
wxRect rectGroupParentText = rectGroupParent;
-@@ -975,16 +1043,16 @@
+@@ -969,16 +1037,16 @@
rectGroupItems.x += 2 * gapSize_;
rectGroupItems.width -= 2 * gapSize_;
@@ -217,7 +202,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation());
-@@ -1134,7 +1202,12 @@
+@@ -1105,7 +1173,12 @@
groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth);
assert(!stackedGroupRender);
@@ -231,7 +216,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconSize() : 0;
const int ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x;
const int itemWidth = itemName.empty() ? 0 :
-@@ -1166,6 +1239,10 @@
+@@ -1137,6 +1210,10 @@
return _("Relative path");
case ItemPathFormat::full:
return _("Full path");
@@ -242,7 +227,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
}
assert(false);
break;
-@@ -1423,7 +1500,8 @@
+@@ -1393,7 +1470,8 @@
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
//----------------------------------------------------------------------------------
@@ -252,7 +237,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
}
-@@ -1447,7 +1525,8 @@
+@@ -1417,7 +1495,8 @@
{
wxRect rectBack = rect;
if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
@@ -276,8 +261,8 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g
const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::relative;
diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 11.2-1-trad3/FreeFileSync/Source/ui/main_dlg.cpp
--- 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-10-02 20:49:11.487782099 -0400
-+++ 11.12-1/FreeFileSync/Source/ui/main_dlg.cpp 2021-07-15 20:22:02.191278722 -0400
-@@ -2653,6 +2647,8 @@
++++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 20:26:31.350461792 -0400
+@@ -2741,6 +2741,8 @@
addFormatEntry(_("Item name" ), ItemPathFormat::name);
addFormatEntry(_("Relative path"), ItemPathFormat::relative);
addFormatEntry(_("Full path" ), ItemPathFormat::full);
@@ -285,7 +270,7 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_d
+ addFormatEntry(_("Trad. relative"),ItemPathFormat::tradrel);
//----------------------------------------------------------------------------------------------
- auto setIconSize = [&](FileIconSize sz, bool showIcons)
+ auto setIconSize = [&](GridIconSize sz, bool showIcons)
diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/config.cpp 11.2-1-trad3/FreeFileSync/Source/config.cpp
--- 11.2-1/FreeFileSync/Source/config.cpp 2020-10-02 14:39:05.233462578 -0400
+++ 11.2-1-trad3/FreeFileSync/Source/config.cpp 2020-10-02 20:22:24.275555557 -0400
diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec
index 3636de0..76d9c4b 100644
--- a/freefilesync/freefilesync.spec
+++ b/freefilesync/freefilesync.spec
@@ -18,8 +18,13 @@
%if 0%{?rhel} >= 8
%define libssh2_name libssh2-%{name}
%endif
+%if 0%{?fedora} >= 36
+# https://www.spinics.net/lists/fedora-devel/msg296646.html
+# https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects
+%undefine _package_note_file
+%endif
Name: freefilesync
-Version: 11.20
+Version: 11.21
Release: 1%{?dist}
Summary: A file synchronization utility
@@ -47,6 +52,7 @@ Patch11: ffs_traditional_view.patch
Patch12: ffs_desktop_notifications.patch
Patch13: ffs_openssl.patch
Patch14: ffs_icon_loader.patch
+Patch15: ffs_no_gcc12.patch
Packager: B. Stack <bgstack15@gmail.com>
BuildRequires: brotli-devel
@@ -114,6 +120,7 @@ find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \
%patch13 -p1
%endif
%patch14 -p1
+%patch15 -p1
# custom build parameters for packaging application in rpm
# fedora provides build_cxxflags, which is really just optflags
@@ -217,6 +224,10 @@ update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & :
%ghost %config %attr(666, -, -) %{_datadir}/%{name}/GlobalSettings.xml
%changelog
+* Wed May 25 2022 B. Stack <bgstack15@gmail.com> - 11.21-1
+- version bump
+- add ffs_no_gcc12 patch
+
* Mon Apr 18 2022 B. Stack <bgstack15@gmail.com> - 11.20-1
- version bump
- remove a few patches from r_z_a_u for when gcc < 11
diff --git a/freefilesync/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/revert_zenju_aggressive_upstreamisms.patch
index fda8cc2..43fec48 100644
--- a/freefilesync/revert_zenju_aggressive_upstreamisms.patch
+++ b/freefilesync/revert_zenju_aggressive_upstreamisms.patch
@@ -1,6 +1,6 @@
Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
-Date: 2022-04-18
-Version: 11.20
+Date: 2022-05-22
+Version: 11.21
Author: bgstack15
diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h
--- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400
@@ -155,8 +155,8 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
{
SetLabel(label);
diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/wx+/dc.h
---- 11.20-0/wx+/dc.h 2022-04-18 09:49:31.921386600 -0400
-+++ 11.20-1/wx+/dc.h 2022-04-18 10:12:04.667907393 -0400
+--- 11.21-0/wx+/dc.h 2022-05-22 17:09:32.250809701 -0400
++++ 11.21-1/wx+/dc.h 2022-05-22 20:28:53.788193992 -0400
@@ -12,7 +12,7 @@
#include <zen/basic_math.h>
#include <wx/dcbuffer.h> //for macro: wxALWAYS_NATIVE_DOUBLE_BUFFER
@@ -175,18 +175,17 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
-#endif
//GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114
//=> requires general fix at wxWidgets-level
-
-@@ -119,11 +116,11 @@
+
+@@ -119,11 +116,10 @@
inline
-wxBitmapBundle toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/)
+wxBitmap toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/)
{
- //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); not (yet) implemented
+ //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); implementation just ignores scale parameter! WTF!
wxBitmap bmpScaled(img);
- bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi);
-+ //bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi);
return bmpScaled;
}
bgstack15