summaryrefslogtreecommitdiff
path: root/freefilesync
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync')
-rw-r--r--freefilesync/debian/_service2
-rw-r--r--freefilesync/debian/changelog38
-rw-r--r--freefilesync/debian/control2
-rw-r--r--freefilesync/debian/freefilesync+stackrpms.dsc2
-rw-r--r--freefilesync/debian/patches/ffs_desktop_notifications.patch12
-rw-r--r--freefilesync/debian/patches/ffs_devuan.patch15
-rw-r--r--freefilesync/debian/patches/ffs_gcc.patch8
-rw-r--r--freefilesync/debian/patches/ffs_no_check_updates.patch219
-rw-r--r--freefilesync/debian/patches/ffs_traditional_view.patch66
-rw-r--r--freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch80
10 files changed, 249 insertions, 195 deletions
diff --git a/freefilesync/debian/_service b/freefilesync/debian/_service
index 5f3089a..7d35e82 100644
--- a/freefilesync/debian/_service
+++ b/freefilesync/debian/_service
@@ -14,7 +14,7 @@
<service name="tar_scm">
<param name="scm">git</param>
<param name="url">https://gitlab.com/opensource-tracking/FreeFileSync.git</param>
- <param name="revision">12.4</param>
+ <param name="revision">13.0</param>
<param name="version">_none_</param>
</service>
<service name="recompress">
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 6479e02..da87756 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,41 @@
+freefilesync (13.0-100+stackrpms) obs; urgency=low
+
+ * Rename (multiple) files manually (F2 key)
+ * Configure individual directions for DB-based sync
+ * Detect moved files with "Update" sync variant (requires sync.ffs_db
+ files)
+ * Update variant: Do not restore files that were deleted on target
+ * Distinguish file renames from file moves and simplify grid display
+ * Fixed ERROR_NOT_SUPPORTED when copying files with NTFS extended
+ attributes
+ * Fixed error during process initialization while connecting with quick
+ launch
+ * Avoid redundant file reopen when setting file times during copy
+ * Set working directory to match FFS configuration file when
+ double-clicking (Linux)
+
+ -- B. Stack <bgstack15@gmail.com> Wed, 13 Sep 2023 19:39:50 -0400
+
+freefilesync (12.5-100+stackrpms) obs; urgency=low
+
+ * Upstream updates
+ * Merge logs of individual steps (comparison, manual operation, sync)
+ * Show total percentage in progress dialog header
+ * Log and report errors during cleanup or exception handling
+ * Skip folder traversal if existence check fails for other side of the
+ pair
+ * Automatically adapt batch options to prevent hanging a
+ non-interactive process (Windows)
+ * Support path lists for external applications: %item_paths%,
+ %local_paths%, %item_names%, %parent_paths%
+ * Create directory lock files with hidden attribute
+ * Don't clear other side when right-clicking file selection
+ * Fixed passive FTP when using different IP than control connection
+ * Work around FTP servers silently renaming unsupported characters of
+ temporary file
+
+ -- B. Stack <bgstack15@gmail.com> Mon, 24 Jul 2023 15:12:39 -0400
+
freefilesync (12.4-100+stackrpms) obs; urgency=low
* Upstream updates
diff --git a/freefilesync/debian/control b/freefilesync/debian/control
index 627cfb2..ee7ec1f 100644
--- a/freefilesync/debian/control
+++ b/freefilesync/debian/control
@@ -7,7 +7,7 @@ Build-Depends: debhelper (>=12~),
g++-12,
libbrotli-dev,
libcurl4-openssl-dev (>=7.83.1-1+b1),
- libglibmm-2.4-dev,
+ libglibmm-2.4-dev | glibmm24-devel,
libssh2-1-dev (>=1.10.0-3+b1),
libssl-dev (>=3.0.3-5),
wx3.2-headers,
diff --git a/freefilesync/debian/freefilesync+stackrpms.dsc b/freefilesync/debian/freefilesync+stackrpms.dsc
index 1a75d77..07ef4cd 100644
--- a/freefilesync/debian/freefilesync+stackrpms.dsc
+++ b/freefilesync/debian/freefilesync+stackrpms.dsc
@@ -2,7 +2,7 @@ Format: 3.0 (quilt)
Source: freefilesync
Binary: freefilesync
Architecture: any
-Version: 12.4-100+stackrpms
+Version: 13.0-100+stackrpms
Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
diff --git a/freefilesync/debian/patches/ffs_desktop_notifications.patch b/freefilesync/debian/patches/ffs_desktop_notifications.patch
index b660044..a262682 100644
--- a/freefilesync/debian/patches/ffs_desktop_notifications.patch
+++ b/freefilesync/debian/patches/ffs_desktop_notifications.patch
@@ -1,5 +1,5 @@
-Version: 12.1
-Date: 2023-02-21
+Version: 12.5
+Date: 2023-07-25
Author: bgstack15
Message: Add support for building with desktop notification support.
--- a/FreeFileSync/Source/Makefile
@@ -8,7 +8,7 @@ Message: Add support for building with desktop notification support.
#treat as system headers so that warnings are hidden:
CXXFLAGS += -isystem/usr/include/gtk-3.0
-+with_notifications ?= NO
++with_notifications ?= YES
+ifeq ($(with_notifications),YES)
+# package libglibmm-2.4-dev or glibmm24-devel
+cxxFlags += `pkg-config --cflags giomm-2.4` -Dwith_notifications
@@ -20,7 +20,7 @@ Message: Add support for building with desktop notification support.
ifeq ($(SELINUX_EXISTING),YES)
--- a/FreeFileSync/Source/ui/progress_indicator.cpp
+++ b/FreeFileSync/Source/ui/progress_indicator.cpp
-@@ -30,6 +30,9 @@
+@@ -29,6 +29,9 @@
#include "../icon_buffer.h"
#include "../base/speed_test.h"
@@ -30,8 +30,8 @@ Message: Add support for building with desktop notification support.
using namespace zen;
using namespace fff;
-@@ -1368,6 +1371,22 @@ void SyncProgressDialogImpl<TopLevelDial
- pnl_.m_staticTextPhase->SetLabelText(getSyncResultLabel(syncResult));
+@@ -1439,6 +1442,22 @@ void SyncProgressDialogImpl<TopLevelDial
+
//pnl_.m_bitmapStatus->SetToolTip(); -> redundant
+#ifdef with_notifications
diff --git a/freefilesync/debian/patches/ffs_devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch
index a24c41e..1973b60 100644
--- a/freefilesync/debian/patches/ffs_devuan.patch
+++ b/freefilesync/debian/patches/ffs_devuan.patch
@@ -1,11 +1,11 @@
Author: bgstack15
Source: Original research
-Last-Modified: 2023-02-21
-Last-Version: 12.1
+Last-Modified: 2023-07-24
+Last-Version: 12.5
Message: Main patch to compile on Devuan.
--- a/FreeFileSync/Source/ffs_paths.cpp
+++ b/FreeFileSync/Source/ffs_paths.cpp
-@@ -49,7 +49,7 @@ Zstring fff::getInstallDirPath()
+@@ -55,7 +55,7 @@ Zstring fff::getInstallDirPath()
Zstring fff::getResourceDirPath()
{
@@ -21,13 +21,12 @@ Message: Main patch to compile on Devuan.
-exeName = FreeFileSync_$(shell arch)
+exeName = FreeFileSync
- CXXFLAGS += -std=c++2b -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
+ CXXFLAGS += -std=c++23 -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 \
-- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
-+ -O3 -DNDEBUG `wx-config --version=3.2 --cxxflags --debug=no` -pthread
+ -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
-LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread
-+LDFLAGS += -s -no-pie `wx-config --version=3.2 --libs std, aui, richtext --debug=no` -pthread -lz
++LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread -lz
CXXFLAGS += `pkg-config --cflags openssl`
@@ -71,7 +70,7 @@ Message: Main patch to compile on Devuan.
-exeName = RealTimeSync_$(shell arch)
+exeName = RealTimeSync
- CXXFLAGS += -std=c++2b -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
+ CXXFLAGS += -std=c++23 -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 \
-O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
diff --git a/freefilesync/debian/patches/ffs_gcc.patch b/freefilesync/debian/patches/ffs_gcc.patch
index 21a338d..0f7329c 100644
--- a/freefilesync/debian/patches/ffs_gcc.patch
+++ b/freefilesync/debian/patches/ffs_gcc.patch
@@ -1,5 +1,5 @@
-Date: 2022-09-07
-Version: 11.25
+Date: 2023-07-24
+Version: 12.5
Message: Parameterize the C++ compiler invocation, and use g++-12
Author: bgstack15
--- a/FreeFileSync/Source/Makefile
@@ -9,7 +9,7 @@ Author: bgstack15
exeName = FreeFileSync
+CXX=g++-12
- CXXFLAGS += -std=c++2b -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
+ CXXFLAGS += -std=c++23 -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 \
--- a/FreeFileSync/Source/RealTimeSync/Makefile
+++ b/FreeFileSync/Source/RealTimeSync/Makefile
@@ -18,5 +18,5 @@ Author: bgstack15
exeName = RealTimeSync
+CXX=g++-12
- CXXFLAGS += -std=c++2b -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
+ CXXFLAGS += -std=c++23 -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_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch
index 97802be..560e8a6 100644
--- a/freefilesync/debian/patches/ffs_no_check_updates.patch
+++ b/freefilesync/debian/patches/ffs_no_check_updates.patch
@@ -1,65 +1,77 @@
-Version: 12.3
-Date: 2023-05-19
+Version: 13.0
+Date: 2023-09-13
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.
+--- a/FreeFileSync/Source/Makefile
++++ b/FreeFileSync/Source/Makefile
+@@ -80,7 +80,6 @@ cppFiles+=ui/small_dlgs.cpp
+ cppFiles+=ui/sync_cfg.cpp
+ cppFiles+=ui/tray_icon.cpp
+ cppFiles+=ui/triple_splitter.cpp
+-cppFiles+=ui/version_check.cpp
+ cppFiles+=../../libcurl/curl_wrap.cpp
+ cppFiles+=../../zen/argon2.cpp
+ cppFiles+=../../zen/file_access.cpp
--- a/FreeFileSync/Source/ui/gui_generated.cpp
+++ b/FreeFileSync/Source/ui/gui_generated.cpp
-@@ -110,15 +110,6 @@ MainDialogGenerated::MainDialogGenerated
+@@ -110,11 +110,6 @@ MainDialogGenerated::MainDialogGenerated
- 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_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 );
-@@ -1129,8 +1120,6 @@ MainDialogGenerated::MainDialogGenerated
- 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_buttonCompare->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCompare ), NULL, this );
- m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this );
+@@ -1125,7 +1120,6 @@ MainDialogGenerated::MainDialogGenerated
+ 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::onMenuAbout ), this, m_menuItemAbout->GetId());
+ m_buttonCompare->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCompare ), NULL, this );
+ m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this );
--- a/FreeFileSync/Source/ui/gui_generated.h
+++ b/FreeFileSync/Source/ui/gui_generated.h
-@@ -96,8 +96,6 @@ protected:
- wxMenuItem* m_menuItemShowOverview;
- wxMenu* m_menuHelp;
- wxMenuItem* m_menuItemHelp;
-- wxMenuItem* m_menuItemCheckVersionNow;
-- wxMenuItem* m_menuItemCheckVersionAuto;
- wxMenuItem* m_menuItemAbout;
- wxBoxSizer* bSizerPanelHolder;
- wxPanel* m_panelTopButtons;
-@@ -234,8 +232,6 @@ protected:
- 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(); }
+@@ -96,7 +96,6 @@ class MainDialogGenerated : public wxFra
+ wxMenuItem* m_menuItemShowOverview;
+ wxMenu* m_menuHelp;
+ wxMenuItem* m_menuItemHelp;
+- wxMenuItem* m_menuItemCheckVersionNow;
+ wxMenuItem* m_menuItemAbout;
+ wxBoxSizer* bSizerPanelHolder;
+ wxPanel* m_panelTopButtons;
+@@ -233,7 +232,6 @@ class MainDialogGenerated : public wxFra
+ 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 onMenuAbout( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); }
--- a/FreeFileSync/Source/ui/main_dlg.cpp
+++ b/FreeFileSync/Source/ui/main_dlg.cpp
-@@ -31,7 +31,6 @@
+@@ -32,7 +32,6 @@
#include <wx+/window_tools.h>
#include <wx+/image_resources.h>
#include "cfg_grid.h"
-#include "version_check.h"
#include "gui_status_handler.h"
#include "small_dlgs.h"
- #include "progress_indicator.h"
-@@ -844,7 +843,6 @@ imgFileManagerSmall_([]
+ #include "rename_dlg.h"
+@@ -467,7 +466,7 @@ void MainDialog::create(const Zstring& g
+
+ //showAboutDialog(mainDlg); => dialog centered incorrectly (Centos)
+ //mainDlg->CallAfter([mainDlg] { showAboutDialog(mainDlg); }); => dialog centered incorrectly (Windows, Centos)
+- mainDlg->guiQueue_.processAsync([] {}, [mainDlg]() { showAboutDialog(mainDlg); }); //apparently oh-kay?
++ //mainDlg->guiQueue_.processAsync([] {}, [mainDlg]() { showAboutDialog(mainDlg); }); //apparently oh-kay?
+ }
+
+
+@@ -861,7 +860,6 @@ imgFileManagerSmall_([]
setImage(*m_menuItemHelp, loadImage("help", getDefaultMenuIconSize()));
setImage(*m_menuItemAbout, loadImage("about", getDefaultMenuIconSize()));
@@ -67,7 +79,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
fixMenuIcons(*m_menuFile);
fixMenuIcons(*m_menuActions);
-@@ -944,9 +942,6 @@ imgFileManagerSmall_([]
+@@ -961,9 +959,6 @@ imgFileManagerSmall_([]
//mainly to update row label sizes...
updateGui();
@@ -77,45 +89,16 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
//asynchronous call to wxWindow::Dimensions(): fix superfluous frame on right and bottom when FFS is started in fullscreen mode
Bind(wxEVT_IDLE, &MainDialog::onLayoutWindowAsync, this);
wxCommandEvent evtDummy; //call once before onLayoutWindowAsync()
-@@ -1139,8 +1134,6 @@ void MainDialog::setGlobalCfgOnInit(cons
- auiMgr_.GetPane(m_panelSearch).Hide(); //no need to show it on startup
- auiMgr_.GetPane(m_panelLog ).Hide(); //
-
-- m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck));
--
- auiMgr_.Update();
+@@ -6238,52 +6233,6 @@ void MainDialog::onMenuExportFileList(wx
}
-@@ -5917,72 +5910,6 @@ void MainDialog::onMenuExportFileList(wx
- }
- }
--
-void MainDialog::onMenuCheckVersion(wxCommandEvent& event)
-{
- checkForUpdateNow(*this, globalCfg_.lastOnlineVersion);
-}
-
-
--void MainDialog::onMenuCheckVersionAutomatically(wxCommandEvent& event)
--{
-- if (updateCheckActive(globalCfg_.lastUpdateCheck))
-- disableUpdateCheck(globalCfg_.lastUpdateCheck);
-- else
-- globalCfg_.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value!
--
-- m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck));
--
-- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
-- {
-- flashStatusInfo(_("Searching for program updates..."));
-- //synchronous update check is sufficient here:
-- automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion,
-- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get());
-- }
--}
--
--
-void MainDialog::onStartupUpdateCheck(wxIdleEvent& event)
-{
- //execute just once per startup!
@@ -124,12 +107,12 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
-
- auto showNewVersionReminder = [this]
- {
-- if (!globalCfg_.lastOnlineVersion.empty() && haveNewerVersionOnline(globalCfg_.lastOnlineVersion))
+- if (haveNewerVersionOnline(globalCfg_.lastOnlineVersion))
- {
- auto menu = new wxMenu();
- wxMenuItem* newItem = new wxMenuItem(menu, wxID_ANY, _("&Show details"));
- Bind(wxEVT_COMMAND_MENU_SELECTED, [this](wxCommandEvent&) { checkForUpdateNow(*this, globalCfg_.lastOnlineVersion); }, newItem->GetId());
-- //show changelog + handle Donation Edition auto-updater (including expiration)
+- //show changelog + handle Supporter Edition auto-updater (including expiration)
- menu->Append(newItem); //pass ownership
-
- const std::wstring& blackStar = utfTo<std::wstring>("★");
@@ -137,17 +120,17 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
- }
- };
-
-- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
+- if (automaticUpdateCheckDue(globalCfg_.lastUpdateCheck))
- {
- flashStatusInfo(_("Searching for program updates..."));
-
-- std::shared_ptr<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread:
+- SharedRef<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread:
-
-- guiQueue_.processAsync([resultPrep] { return automaticUpdateCheckRunAsync(resultPrep.get()); }, //run on worker thread: (long-running part of the check)
-- [this, showNewVersionReminder] (std::shared_ptr<const UpdateCheckResult>&& resultAsync)
+- guiQueue_.processAsync([resultPrep] { return automaticUpdateCheckRunAsync(resultPrep.ref()); }, //run on worker thread: (long-running part of the check)
+- [this, showNewVersionReminder] (SharedRef<const UpdateCheckResult>&& resultAsync)
- {
- automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion,
-- resultAsync.get()); //run on main thread:
+- resultAsync.ref()); //run on main thread:
- showNewVersionReminder();
- });
- }
@@ -161,27 +144,41 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
//execute just once per startup!
--- a/FreeFileSync/Source/ui/main_dlg.h
+++ b/FreeFileSync/Source/ui/main_dlg.h
-@@ -273,8 +273,6 @@ private:
+@@ -273,7 +273,6 @@ private:
void onMenuExportFileList (wxCommandEvent& event) override;
void onMenuResetLayout (wxCommandEvent& event) override { resetLayout(); }
void onMenuFindItem (wxCommandEvent& event) override { showFindPanel(true /*show*/); } //CTRL + F
- void onMenuCheckVersion (wxCommandEvent& event) override;
-- void onMenuCheckVersionAutomatically(wxCommandEvent& event) override;
void onMenuAbout (wxCommandEvent& event) override;
void onShowHelp (wxCommandEvent& event) override { wxLaunchDefaultBrowser(L"https://freefilesync.org/manual.php?topic=freefilesync"); }
void onMenuQuit (wxCommandEvent& event) override { Close(); }
+--- a/FreeFileSync/Source/ui/small_dlgs.cpp
++++ b/FreeFileSync/Source/ui/small_dlgs.cpp
+@@ -26,7 +26,6 @@
+ #include <wx+/image_resources.h>
+ #include "gui_generated.h"
+ #include "folder_selector.h"
+-#include "version_check.h"
+ #include "abstract_folder_picker.h"
+ #include "../afs/concrete.h"
+ #include "../afs/gdrive.h"
--- a/FreeFileSync/Source/ui/version_check.cpp
+++ b/FreeFileSync/Source/ui/version_check.cpp
-@@ -80,6 +80,8 @@ void openBrowserForDownload(wxWindow* pa
+@@ -55,13 +55,6 @@ void openBrowserForDownload(wxWindow* pa
+ }
- bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck)
- {
-+ // short-circuit
-+ return false;
- if (lastUpdateCheck == getVersionCheckInactiveId())
- return false;
-@@ -176,8 +178,7 @@ void showUpdateAvailableDialog(wxWindow*
+-bool fff::automaticUpdateCheckDue(time_t lastUpdateCheck)
+-{
+- const time_t now = std::time(nullptr);
+- return std::abs(now - lastUpdateCheck) >= 7 * 24 * 3600; //check weekly
+-}
+-
+-
+ namespace
+ {
+ std::wstring getIso639Language()
+@@ -150,8 +143,7 @@ void showUpdateAvailableDialog(wxWindow*
std::wstring updateDetailsMsg;
try
{
@@ -191,7 +188,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
}
catch (const SysError& e) { updateDetailsMsg = _("Failed to retrieve update information.") + + L"\n\n" + e.toString(); }
-@@ -199,8 +200,8 @@ void showUpdateAvailableDialog(wxWindow*
+@@ -173,8 +165,8 @@ void showUpdateAvailableDialog(wxWindow*
std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError
{
@@ -202,7 +199,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
if (response.empty() ||
!std::all_of(response.begin(), response.end(), [](char c) { return isDigit(c) || c == FFS_VERSION_SEPARATOR; }) ||
-@@ -247,58 +248,6 @@ void fff::disableUpdateCheck(time_t& las
+@@ -215,58 +207,6 @@ bool fff::haveNewerVersionOnline(const s
}
@@ -225,7 +222,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
- {
- if (internetIsAlive())
- {
-- lastOnlineVersion = "Unknown";
+- lastOnlineVersion = getUnknownVersionTag();
-
- switch (showConfirmationDialog(&parent, DialogInfoType::error, PopupDialogCfg().
- setTitle(_("Check for Program Updates")).
@@ -263,9 +260,17 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
std::vector<std::pair<std::string, std::string>> postParameters;
--- a/FreeFileSync/Source/ui/version_check.h
+++ b/FreeFileSync/Source/ui/version_check.h
-@@ -32,9 +32,6 @@ std::shared_ptr<const UpdateCheckResult>
- void automaticUpdateCheckEval(wxWindow& parent, time_t& lastUpdateCheck, std::string& lastOnlineVersion,
- const UpdateCheckResult* asyncResult);
+@@ -15,7 +15,6 @@ namespace fff
+ {
+ bool haveNewerVersionOnline(const std::string& onlineVersion);
+ //----------------------------------------------------------------------------
+-bool automaticUpdateCheckDue(time_t lastUpdateCheck);
+
+ struct UpdateCheckResultPrep;
+ struct UpdateCheckResult;
+@@ -27,9 +26,6 @@ zen::SharedRef<const UpdateCheckResult>
+ //run on main thread:
+ void automaticUpdateCheckEval(wxWindow& parent, time_t& lastUpdateCheck, std::string& lastOnlineVersion, const UpdateCheckResult& result);
//----------------------------------------------------------------------------
-//call from main thread:
-void checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion);
@@ -273,23 +278,3 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
}
#endif //VERSION_CHECK_H_324872374893274983275
---- a/FreeFileSync/Source/Makefile
-+++ b/FreeFileSync/Source/Makefile
-@@ -78,7 +78,6 @@ cppFiles+=ui/small_dlgs.cpp
- cppFiles+=ui/sync_cfg.cpp
- cppFiles+=ui/tray_icon.cpp
- cppFiles+=ui/triple_splitter.cpp
--cppFiles+=ui/version_check.cpp
- cppFiles+=../../libcurl/curl_wrap.cpp
- cppFiles+=../../zen/argon2.cpp
- cppFiles+=../../zen/file_access.cpp
---- a/FreeFileSync/Source/ui/small_dlgs.cpp
-+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
-@@ -26,7 +26,6 @@
- #include <wx+/image_resources.h>
- #include "gui_generated.h"
- #include "folder_selector.h"
--#include "version_check.h"
- #include "abstract_folder_picker.h"
- #include "../afs/concrete.h"
- #include "../afs/gdrive.h"
diff --git a/freefilesync/debian/patches/ffs_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch
index bbb36f9..1790069 100644
--- a/freefilesync/debian/patches/ffs_traditional_view.patch
+++ b/freefilesync/debian/patches/ffs_traditional_view.patch
@@ -1,10 +1,10 @@
-Version: 12.3
-Date: 2023-05-19
-Author: bgstack15@gmail.com
+Version: 13.0
+Date: 2023-09-13
+Author: bgstack15
Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVersion" About dialog
--- a/FreeFileSync/Source/ui/file_grid.cpp
+++ b/FreeFileSync/Source/ui/file_grid.cpp
-@@ -474,8 +474,10 @@ private:
+@@ -465,8 +465,10 @@
case ItemPathFormat::name:
return utfTo<std::wstring>(fsObj->getItemName<side>());
case ItemPathFormat::relative:
@@ -15,7 +15,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
return AFS::getDisplayPath(fsObj->getAbstractPath<side>());
}
-@@ -535,8 +537,13 @@ private:
+@@ -526,8 +528,13 @@
else
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
@@ -30,7 +30,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
}
-@@ -642,6 +649,26 @@ private:
+@@ -636,6 +643,26 @@
else //=> BaseFolderPair
groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>());
break;
@@ -57,7 +57,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
}
//path components should follow the app layout direction and are NOT a single piece of text!
-@@ -667,11 +694,38 @@ private:
+@@ -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);
@@ -97,7 +97,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
//not enough space? => collapse
if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth;
excessWidth > 0)
-@@ -738,6 +792,11 @@ private:
+@@ -732,6 +786,11 @@
}
}
@@ -109,7 +109,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
return
{
itemName,
-@@ -878,6 +937,9 @@ private:
+@@ -872,6 +931,9 @@
rectGroup = rectGroupParent = rectGroupName = rectTmp;
rectGroupParent.width = groupParentWidth;
@@ -119,7 +119,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
rectGroupName .width = groupNameWidth;
if (stackedGroupRender)
-@@ -901,6 +963,11 @@ private:
+@@ -895,6 +957,11 @@
rectGroupItems.width = 0;
}
@@ -131,7 +131,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
//-------------------------------------------------------------------------
{
//clear background below parent path => harmonize with renderRowBackgound()
-@@ -911,8 +978,9 @@ private:
+@@ -905,8 +972,9 @@
wxRect rectGroupBack = rectGroup;
rectGroupBack.width += 2 * gapSize_; //include gap before vline
@@ -143,7 +143,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
clearArea(dc, rectGroupBack, getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 == 0));
//clearArea() is surprisingly expensive => call just once!
-@@ -920,9 +988,9 @@ private:
+@@ -914,9 +982,9 @@
//accessibility: always set *both* foreground AND background colors!
}
@@ -155,7 +155,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
(groupName.empty() || !pdi.folderGroupObj->isEmpty<side>())) //don't show for missing folders
{
tryDrawNavMarker(rectGroupParent);
-@@ -934,14 +1002,14 @@ private:
+@@ -928,14 +996,14 @@
drawCellText(dc, rectGroupParentText, groupParentFolder, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupParentFolder));
}
@@ -172,13 +172,13 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
wxDCTextColourChanger textColorGroupName(dc);
//folder background: coordinate with renderRowBackgound()
-@@ -985,16 +1053,16 @@ private:
+@@ -979,16 +1047,16 @@
rectGroupItems.x += 2 * gapSize_;
rectGroupItems.width -= 2 * gapSize_;
- wxDCPenChanger dummy(dc, wxPen(getColorGridLine(), fastFromDIP(1)));
+ wxDCPenChanger dummy(dc, wxPen(getColorGridLine(), lineWidth));
- dc.DrawLine(rectGroupItems.GetTopLeft(), rectGroupItems.GetBottomLeft() + wxPoint(0, 1)); //draws half-open range!
+ dc.DrawLine(rectGroupItems.GetTopLeft(), rectGroupItems.GetBottomLeft() + wxPoint(0, 1)); //DrawLine() doesn't draw last pixel!
- rectGroupItems.x += fastFromDIP(1);
- rectGroupItems.width -= fastFromDIP(1);
@@ -193,7 +193,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation());
tryDrawNavMarker(rectGroupItems);
-@@ -1125,7 +1193,12 @@ private:
+@@ -1119,7 +1187,12 @@
groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth);
assert(!stackedGroupRender);
@@ -207,7 +207,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconSize() : 0;
const int ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x;
const int itemWidth = itemName.empty() ? 0 :
-@@ -1157,6 +1230,10 @@ private:
+@@ -1151,6 +1224,10 @@
return _("Relative path");
case ItemPathFormat::full:
return _("Full path");
@@ -218,7 +218,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
}
assert(false);
break;
-@@ -1414,7 +1491,8 @@ private:
+@@ -1408,7 +1485,8 @@
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
//----------------------------------------------------------------------------------
@@ -228,7 +228,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
}
-@@ -1438,7 +1516,8 @@ private:
+@@ -1432,7 +1510,8 @@
{
wxRect rectBack = rect;
if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
@@ -240,7 +240,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
}
--- a/FreeFileSync/Source/ui/file_grid_attr.h
+++ b/FreeFileSync/Source/ui/file_grid_attr.h
-@@ -79,6 +79,8 @@ enum class ItemPathFormat
+@@ -79,6 +79,8 @@
name,
relative,
full,
@@ -251,15 +251,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::relative;
--- a/FreeFileSync/Source/ui/main_dlg.cpp
+++ b/FreeFileSync/Source/ui/main_dlg.cpp
-@@ -449,7 +449,6 @@ void MainDialog::create(const Zstring& g
-
- //showAboutDialog(mainDlg); => dialog centered incorrectly (Centos)
- //mainDlg->CallAfter([mainDlg] { showAboutDialog(mainDlg); }); => dialog centered incorrectly (Windows, Centos)
-- mainDlg->guiQueue_.processAsync([] {}, [mainDlg]() { showAboutDialog(mainDlg); }); //apparently oh-kay?
- }
-
-
-@@ -2780,6 +2779,8 @@ void MainDialog::onGridLabelContextRim(G
+@@ -3002,6 +3002,8 @@
addFormatEntry(_("Item name" ), ItemPathFormat::name);
addFormatEntry(_("Relative path"), ItemPathFormat::relative);
addFormatEntry(_("Full path" ), ItemPathFormat::full);
@@ -270,7 +262,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
auto setIconSize = [&](GridIconSize sz, bool showIcons)
--- a/FreeFileSync/Source/config.cpp
+++ b/FreeFileSync/Source/config.cpp
-@@ -477,6 +477,12 @@ void writeText(const ItemPathFormat& val
+@@ -477,6 +477,12 @@
case ItemPathFormat::full:
output = "Full";
break;
@@ -283,7 +275,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
}
}
-@@ -490,6 +496,10 @@ bool readText(const std::string& input,
+@@ -490,6 +496,10 @@
value = ItemPathFormat::relative;
else if (tmp == "Full")
value = ItemPathFormat::full;
@@ -296,17 +288,19 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
return true;
--- a/FreeFileSync/Source/ui/file_view.cpp
+++ b/FreeFileSync/Source/ui/file_view.cpp
-@@ -798,11 +798,13 @@ void FileView::sortView(ColumnTypeRim ty
+@@ -798,6 +798,7 @@
break;
case ItemPathFormat::relative:
+ case ItemPathFormat::tradrel:
- if ( ascending) std::sort(sortedRef_.begin(), sortedRef_.end(), LessRelativeFolder<true >(folderPairs_));
- else if (!ascending) std::sort(sortedRef_.begin(), sortedRef_.end(), LessRelativeFolder<false>(folderPairs_));
+ if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessRelativeFolder<true, SelectSide::left >(folderPairs_));
+ else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessRelativeFolder<true, SelectSide::right>(folderPairs_));
+ else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessRelativeFolder<false, SelectSide::left >(folderPairs_));
+@@ -805,6 +806,7 @@
break;
case ItemPathFormat::full:
+ case ItemPathFormat::traditional:
- if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::left>(folderPairs_));
+ if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::left >(folderPairs_));
else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::right>(folderPairs_));
- else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<false, SelectSide::left>(folderPairs_));
+ else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<false, SelectSide::left >(folderPairs_));
diff --git a/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch b/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch
index c4a8feb..78fed20 100644
--- a/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch
+++ b/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch
@@ -8,11 +8,12 @@ Author: Fab Stz <fabstz-it@yahoo.fr>
Origin: self
Bug: https://freefilesync.org/forum/viewtopic.php?t=10103
Forwarded: https://freefilesync.org/forum/viewtopic.php?t=10103
-Last-Update: 2023-03-19
+Last-Update: 2023-09-13
+Version: 13.0
--- a/FreeFileSync/Source/ui/abstract_folder_picker.cpp
+++ b/FreeFileSync/Source/ui/abstract_folder_picker.cpp
-@@ -127,10 +127,7 @@ AbstractFolderPickerDlg::AbstractFolderP
+@@ -127,10 +127,7 @@
//----------------------------------------------------------------------
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -26,7 +27,7 @@ Last-Update: 2023-03-19
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //dialog-specific local key events
--- a/FreeFileSync/Source/ui/batch_config.cpp
+++ b/FreeFileSync/Source/ui/batch_config.cpp
-@@ -82,10 +82,7 @@ BatchDialog::BatchDialog(wxWindow* paren
+@@ -82,10 +82,7 @@
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -40,7 +41,7 @@ Last-Update: 2023-03-19
m_buttonSaveAs->SetFocus();
--- a/FreeFileSync/Source/ui/progress_indicator.cpp
+++ b/FreeFileSync/Source/ui/progress_indicator.cpp
-@@ -221,10 +221,7 @@ CompareProgressPanel::Impl::Impl(wxFrame
+@@ -221,10 +221,7 @@
m_panelErrorStats->Layout();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -52,8 +53,8 @@ Last-Update: 2023-03-19
}
-@@ -923,10 +920,6 @@ syncStat_(&syncStat)
- //make sure that standard height matches ProcessPhase::comparingContent statistics layout (== largest)
+@@ -924,10 +921,6 @@
+ //make sure that standard height matches ProcessPhase::binaryCompare statistics layout (== largest)
this->GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
-#ifdef __WXGTK3__
@@ -65,7 +66,7 @@ Last-Update: 2023-03-19
--- a/FreeFileSync/Source/ui/small_dlgs.cpp
+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
-@@ -145,10 +145,6 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+@@ -144,10 +144,6 @@
//--------------------------------------------------------------------------
//have animal + text match *final* dialog width
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -76,7 +77,7 @@ Last-Update: 2023-03-19
{
const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 /* grey border*/) / 2;
-@@ -164,10 +160,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+@@ -163,10 +159,7 @@
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -88,7 +89,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
m_buttonClose->SetFocus(); //on GTK ESC is only associated with wxID_OK correctly if we set at least *any* focus at all!!!
-@@ -404,11 +397,7 @@ CloudSetupDlg::CloudSetupDlg(wxWindow* p
+@@ -400,11 +393,7 @@
m_checkBoxPasswordPrompt->Hide();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -101,7 +102,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
-@@ -976,10 +965,7 @@ CopyToDialog::CopyToDialog(wxWindow* par
+@@ -968,10 +957,7 @@
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -113,7 +114,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
m_buttonOK->SetFocus();
-@@ -1094,10 +1080,7 @@ DeleteDialog::DeleteDialog(wxWindow* par
+@@ -1085,10 +1071,7 @@
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -125,7 +126,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
m_buttonOK->SetFocus();
-@@ -1237,10 +1220,7 @@ SyncConfirmationDlg::SyncConfirmationDlg
+@@ -1228,10 +1211,7 @@
setIntValue(*m_staticTextDeleteRight, st.deleteCount<SelectSide::right>(), *m_bitmapDeleteRight, "so_delete_right_sicon");
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -137,7 +138,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
m_buttonStartSync->SetFocus();
-@@ -1504,10 +1484,7 @@ OptionsDlg::OptionsDlg(wxWindow* parent,
+@@ -1495,10 +1475,7 @@
updateGui();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -149,7 +150,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
//restore actual value:
-@@ -1827,10 +1804,7 @@ SelectTimespanDlg::SelectTimespanDlg(wxW
+@@ -1818,10 +1795,7 @@
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -161,7 +162,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
m_buttonOkay->SetFocus();
-@@ -1926,10 +1900,7 @@ PasswordPromptDlg::PasswordPromptDlg(wxW
+@@ -1917,10 +1891,7 @@
m_textCtrlPasswordVisible->Hide();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -173,7 +174,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
-@@ -2012,10 +1983,7 @@ CfgHighlightDlg::CfgHighlightDlg(wxWindo
+@@ -2003,10 +1974,7 @@
m_spinCtrlOverdueDays->SetValue(cfgHistSyncOverdueDays);
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -185,7 +186,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
m_spinCtrlOverdueDays->SetFocus();
-@@ -2081,10 +2049,7 @@ ActivationDlg::ActivationDlg(wxWindow* p
+@@ -2074,10 +2042,7 @@
m_textCtrlOfflineActivationKey->ChangeValue(manualActivationKey);
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -197,7 +198,7 @@ Last-Update: 2023-03-19
Center(); //needs to be re-applied after a dialog size change!
m_buttonActivateOnline->SetFocus();
-@@ -2189,12 +2154,8 @@ DownloadProgressWindow::Impl::Impl(wxWin
+@@ -2182,12 +2147,8 @@
updateGui();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -213,7 +214,7 @@ Last-Update: 2023-03-19
//clear gui flicker: window must be visible to make this work!
--- a/FreeFileSync/Source/ui/sync_cfg.cpp
+++ b/FreeFileSync/Source/ui/sync_cfg.cpp
-@@ -696,10 +696,7 @@ globalLogFolderPhrase_(globalLogFolderPh
+@@ -706,10 +706,7 @@
selectFolderPairConfig(-1);
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -224,11 +225,16 @@ Last-Update: 2023-03-19
+ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
Center(); //needs to be re-applied after a dialog size change!
- //keep stable sizer height: "two way" description is smaller than grid of sync directions
+ //keep stable sizer height: change-based directions are taller than difference-based ones => init with SyncVariant::twoWay
--- a/wx+/popup_dlg.cpp
+++ b/wx+/popup_dlg.cpp
-@@ -287,13 +287,8 @@ public:
+@@ -283,17 +283,12 @@
+ //set std order after button visibility was set
+ setStandardButtonLayout(*bSizerStdButtons, stdBtns);
+- updateGui();
+
++ updateGui();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
-#ifdef __WXGTK3__
@@ -241,3 +247,35 @@ Last-Update: 2023-03-19
Raise(); //[!] popup may be triggered by ffs_batch job running in the background!
if (m_buttonAccept->IsEnabled())
+--- a/wx+/tooltip.cpp
++++ b/wx+/tooltip.cpp
+@@ -80,12 +80,11 @@
+ }
+
+ if (imgChanged || txtChanged)
++ {
+ //tipWindow_->Dimensions(); -> apparently not needed!?
+ tipWindow_->GetSizer()->SetSizeHints(tipWindow_); //~=Fit() + SetMinSize()
+-#ifdef __WXGTK3__
+- //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
+- //=> call wxWindow::Show() to "execute"
+-#endif
++ //Linux: Fit() seems to be broken => call EVERY time inside show, not only if text or bmp change -> still true?!?
++ }
+
+ const wxPoint newPos = wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft ?
+ mousePos - wxPoint(fastFromDIP(TIP_WINDOW_OFFSET_DIP) + tipWindow_->GetSize().GetWidth(), 0) :
+--- a/FreeFileSync/Source/ui/rename_dlg.cpp
++++ b/FreeFileSync/Source/ui/rename_dlg.cpp
+@@ -354,10 +354,7 @@
+
+ //-----------------------------------------------------------
+ GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
+-#ifdef __WXGTK3__
+- Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
+- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_textCtrlNewName->SetFocus(); //[!] required *before* SetSelection() on wxGTK
bgstack15