diff options
Diffstat (limited to 'freefilesync')
-rw-r--r-- | freefilesync/debian/_service | 2 | ||||
-rw-r--r-- | freefilesync/debian/changelog | 38 | ||||
-rw-r--r-- | freefilesync/debian/control | 2 | ||||
-rw-r--r-- | freefilesync/debian/freefilesync+stackrpms.dsc | 2 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_desktop_notifications.patch | 12 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_devuan.patch | 15 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_gcc.patch | 8 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_no_check_updates.patch | 219 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_traditional_view.patch | 66 | ||||
-rw-r--r-- | freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch | 80 |
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 |