Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package FreeFileSync for openSUSE:Factory 
checked in at 2026-10-05 15:21:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/FreeFileSync (Old)
 and      /work/SRC/openSUSE:Factory/.FreeFileSync.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "FreeFileSync"

Mon Oct  5 15:21:40 2026 rev:34 rq:1382490 version:14.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/FreeFileSync/FreeFileSync.changes        
2026-09-01 15:48:54.720918951 +0200
+++ /work/SRC/openSUSE:Factory/.FreeFileSync.new.3698736/FreeFileSync.changes   
2026-10-05 15:21:42.641398172 +0200
@@ -1,0 +2,20 @@
+Mon Oct  5 09:55:06 UTC 2026 - Paolo Stivanin <[email protected]>
+
+- Add FreeFileSync-wxstring-char-type.patch
+  * Fix build with wxWidgets 3.2: wxString::c_str() converts to both
+    const char* and const wchar_t*, making GetCharTypeImpl ambiguous
+- Add FreeFileSync-libssh2-no-store-overflow.patch
+  * Fix build with libssh2 <= 1.11.1 (no LIBSSH2_ERROR_STORE_OVERFLOW)
+
+-------------------------------------------------------------------
+Mon Oct  5 09:17:01 UTC 2026 - Paolo Stivanin <[email protected]>
+
+- Update to 14.12:
+  * Further reduced size of database files by 16%
+  * Improved toggle button layout calculations
+  * Fixed grid view filters not showing (Linux)
+  * Fixed text descriptions not wrapping
+  * Work around ERROR_UNTRUSTED_MOUNT_POINT
+  * Fixed bitmap buttons being shrinked (macOS)
+
+-------------------------------------------------------------------

Old:
----
  FreeFileSync_14.11_Source.zip

New:
----
  FreeFileSync-libssh2-no-store-overflow.patch
  FreeFileSync-wxstring-char-type.patch
  FreeFileSync_14.12_Source.zip

----------(New B)----------
  New:    const char* and const wchar_t*, making GetCharTypeImpl ambiguous
- Add FreeFileSync-libssh2-no-store-overflow.patch
  * Fix build with libssh2 <= 1.11.1 (no LIBSSH2_ERROR_STORE_OVERFLOW)
  New:
- Add FreeFileSync-wxstring-char-type.patch
  * Fix build with wxWidgets 3.2: wxString::c_str() converts to both
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ FreeFileSync.spec ++++++
--- /var/tmp/diff_new_pack.MjLIS3/_old  2026-10-05 15:21:43.811446909 +0200
+++ /var/tmp/diff_new_pack.MjLIS3/_new  2026-10-05 15:21:43.813446993 +0200
@@ -21,7 +21,7 @@
 %endif
 
 Name:           FreeFileSync
-Version:        14.11
+Version:        14.12
 Release:        0
 Summary:        Backup software to synchronize files and folders
 License:        GPL-3.0-or-later
@@ -41,6 +41,10 @@
 Patch4:         
glib2-2.78-free_size-Fix-build-when-g_free-macro-is-defined.patch
 # 
https://salsa.debian.org/bastif/freefilesync/-/blob/debian/latest/debian/patches/03-deps/wxwidgets-no-wx3.3.1-WxLogCollector.patch
 Patch5:         wxwidgets-no-wx3.3.1-WxLogCollector.patch
+# PATCH-FIX-OPENSUSE FreeFileSync-wxstring-char-type.patch -- 
wxString::c_str() (wxCStrData) converts to both const char* and const wchar_t* 
in wxWidgets 3.2: prefer wchar_t
+Patch6:         FreeFileSync-wxstring-char-type.patch
+# PATCH-FIX-OPENSUSE FreeFileSync-libssh2-no-store-overflow.patch -- 
LIBSSH2_ERROR_STORE_OVERFLOW does not exist in libssh2 <= 1.11.1
+Patch7:         FreeFileSync-libssh2-no-store-overflow.patch
 BuildRequires:  boost-devel >= 1.54
 BuildRequires:  gcc%{?force_gcc_version}-c++ >= 15
 BuildRequires:  libcurl-devel


++++++ FreeFileSync-disable-in-app-updates.patch ++++++
--- /var/tmp/diff_new_pack.MjLIS3/_old  2026-10-05 15:21:43.849448492 +0200
+++ /var/tmp/diff_new_pack.MjLIS3/_new  2026-10-05 15:21:43.851448576 +0200
@@ -19,14 +19,14 @@
 ===================================================================
 --- FreeFileSync-14.9.orig/FreeFileSync/Source/ui/main_dlg.cpp
 +++ FreeFileSync-14.9/FreeFileSync/Source/ui/main_dlg.cpp
-@@ -1089,7 +1089,7 @@ imgFileManagerSmall_([]
+@@ -1086,7 +1086,7 @@ imgFileManagerSmall_([]
      updateGui();
  
      //register regular check for update on next idle event
 -    Bind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this);
 +    //Bind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this);
  
-     //asynchronous call to wxWindow::Dimensions(): fix superfluous frame on 
right and bottom when FFS is started in fullscreen mode
+     //asynchronous call to wxWindow::Layout(): fix superfluous frame on right 
and bottom when FFS is started in fullscreen mode
      Bind(wxEVT_IDLE, &MainDialog::onLayoutWindowAsync, this);
 Index: FreeFileSync-14.9/FreeFileSync/Source/ui/version_check.cpp
 ===================================================================

++++++ FreeFileSync-gui.patch ++++++
--- /var/tmp/diff_new_pack.MjLIS3/_old  2026-10-05 15:21:43.870449367 +0200
+++ /var/tmp/diff_new_pack.MjLIS3/_new  2026-10-05 15:21:43.873449492 +0200
@@ -1,33 +1,7 @@
-Index: FreeFileSync-14.9/wx+/dc.h
-===================================================================
---- FreeFileSync-14.9.orig/wx+/dc.h
-+++ FreeFileSync-14.9/wx+/dc.h
-@@ -333,7 +333,6 @@ public:
-     {
-         assert(wnd.IsDoubleBuffered());
-         dc_.emplace<wxPaintDC>(&wnd);
--        static_cast<wxDC&>(*this).DisableAutomaticBoundingBoxUpdates(); 
//MOOOAAAR perf!?
-     }
-
-     operator wxDC& ()
-Index: FreeFileSync-14.9/wx+/grid.cpp
-===================================================================
---- FreeFileSync-14.9.orig/wx+/grid.cpp
-+++ FreeFileSync-14.9/wx+/grid.cpp
-@@ -172,7 +172,7 @@
-
- wxRect GridData::drawCellBorder(wxDC& dc, const wxRect& rect) //returns 
remaining rectangle
- {
--    drawRectangleBorder(dc, rect, 
wxSystemSettings::GetColour(wxSYS_COLOUR_GRIDLINES), dipToWxsize(1), wxRIGHT | 
wxBOTTOM);
-+    drawRectangleBorder(dc, rect, 
wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT), dipToWxsize(1), wxRIGHT | 
wxBOTTOM);
-
-     return {rect.x, rect.y, rect.width - dipToWxsize(1), rect.height - 
dipToWxsize(1)};
- }
-Index: FreeFileSync-14.9/FreeFileSync/Source/ui/gui_status_handler.cpp
-===================================================================
---- FreeFileSync-14.9.orig/FreeFileSync/Source/ui/gui_status_handler.cpp
-+++ FreeFileSync-14.9/FreeFileSync/Source/ui/gui_status_handler.cpp
-@@ -70,27 +70,33 @@ void StatusHandlerTemporaryPanel::showSt
+diff -ruN a/FreeFileSync/Source/ui/gui_status_handler.cpp 
b/FreeFileSync/Source/ui/gui_status_handler.cpp
+--- a/FreeFileSync/Source/ui/gui_status_handler.cpp    2026-10-05 
11:26:30.986938552 +0200
++++ b/FreeFileSync/Source/ui/gui_status_handler.cpp    2026-10-05 
11:26:31.021227748 +0200
+@@ -70,27 +70,33 @@
                  //case wxAUI_DOCK_CENTRE:
          }
  
@@ -64,11 +38,48 @@
          //------------------------------------------------------------------
  
          statusPanel.Show();
-Index: FreeFileSync-14.9/wx+/darkmode.cpp
-===================================================================
---- FreeFileSync-14.9.orig/wx+/darkmode.cpp
-+++ FreeFileSync-14.9/wx+/darkmode.cpp
-@@ -53,7 +53,7 @@ void zen::colorThemeInit(wxApp& app, Col
+diff -ruN a/FreeFileSync/Source/ui/main_dlg.cpp 
b/FreeFileSync/Source/ui/main_dlg.cpp
+--- a/FreeFileSync/Source/ui/main_dlg.cpp      2026-10-05 11:26:30.987030691 
+0200
++++ b/FreeFileSync/Source/ui/main_dlg.cpp      2026-10-05 11:26:31.022104585 
+0200
+@@ -1273,11 +1273,11 @@
+ 
+     
//--------------------------------------------------------------------------------
+     m_checkBoxMatchCase->SetValue(globalCfg_.mainDlg.textSearchRespectCase);
+-
++    wxAuiPaneInfoArray& paneArray = auiMgr_.GetAllPanes();
+     //work around wxAuiManager::LoadPerspective overwriting pane captions 
with old values (might be different language!)
+     std::vector<std::pair<wxAuiPaneInfo*, wxString>> paneCaptions;
+-    for (wxAuiPaneInfo& paneInfo : auiMgr_.GetAllPanes())
+-        paneCaptions.emplace_back(&paneInfo, paneInfo.caption);
++    for (size_t i = 0; i < paneArray.size(); ++i)
++        paneCaptions.emplace_back(&paneArray[i], paneArray[i].caption);
+ 
+     //compare progress dialog minimum sizes are layout-dependent + can't be 
changed by user => don't load stale values from config
+     std::vector<std::tuple<wxAuiPaneInfo*, wxSize /*min size*/, wxSize /*best 
size*/>> paneConstraints;
+@@ -3141,8 +3141,8 @@
+     
//----------------------------------------------------------------------------------------
+ 
+     bool addedSeparator = false;
+-
+-    for (wxAuiPaneInfo& paneInfo : auiMgr_.GetAllPanes())
++    const wxAuiPaneInfoArray& paneArray = auiMgr_.GetAllPanes();
++    for (size_t i = 0; i < paneArray.size(); ++i){ wxAuiPaneInfo& paneInfo = 
paneArray[i];
+         if (!paneInfo.IsShown() &&
+             paneInfo.window != compareStatus_->getAsWindow() &&
+             paneInfo.window != m_panelLog                    &&
+@@ -3160,7 +3160,7 @@
+                 this->auiMgr_.Update();
+             });
+         }
+-
++    }
+     menu.popup(*this);
+ }
+ 
+diff -ruN a/wx+/darkmode.cpp b/wx+/darkmode.cpp
+--- a/wx+/darkmode.cpp 2026-10-05 11:26:30.992167023 +0200
++++ b/wx+/darkmode.cpp 2026-10-05 11:26:31.021355402 +0200
+@@ -53,7 +53,7 @@
  {
      assert(!refGlobalColorHook());
  
@@ -77,7 +88,7 @@
      ZEN_ON_SCOPE_EXIT(if (!refGlobalColorHook()) refGlobalColorHook() = 
std::make_unique<SysColorsHook>()); //*after* SetAppearance() and despite errors
  
      //caveat: on macOS there are more themes than light/dark: 
https://developer.apple.com/documentation/appkit/nsappearance/name-swift.struct
-@@ -86,10 +86,6 @@ void zen::changeColorTheme(ColorTheme co
+@@ -86,10 +86,6 @@
      try
      {
          ZEN_ON_SCOPE_SUCCESS(refGlobalColorHook() = 
std::make_unique<SysColorsHook>()); //*after* SetAppearance()
@@ -88,17 +99,16 @@
      }
      catch (const SysError& e) { throw FileError(_("Failed to update the color 
theme."), e.toString()); }
  }
-Index: FreeFileSync-14.9/wx+/darkmode.h
-===================================================================
---- FreeFileSync-14.9.orig/wx+/darkmode.h
-+++ FreeFileSync-14.9/wx+/darkmode.h
-@@ -9,14 +9,16 @@
+diff -ruN a/wx+/darkmode.h b/wx+/darkmode.h
+--- a/wx+/darkmode.h   2026-10-05 11:26:30.991614771 +0200
++++ b/wx+/darkmode.h   2026-10-05 11:26:31.044585835 +0200
+@@ -7,13 +7,16 @@
  
  #include <zen/file_error.h>
  #include <wx/app.h>
 +#include <wx/settings.h>
  
- 
++
 +enum class Appearance{System,Light,Dark};
  namespace zen
  {
@@ -110,10 +120,10 @@
  
  void colorThemeInit(wxApp& app, ColorTheme colTheme); //throw FileError
  void colorThemeCleanup();
-@@ -25,4 +27,28 @@ bool equalAppearance(ColorTheme colTheme
+@@ -21,3 +24,27 @@
+ bool equalAppearance(ColorTheme colTheme1, ColorTheme colTheme2);
  void changeColorTheme(ColorTheme colTheme); //throw FileError
  }
- 
 +struct wxColorHook
 +{
 +    virtual ~wxColorHook() {}
@@ -138,44 +148,27 @@
 +    }
 +};
 +
- #endif //DARKMODE_H_754298057018
-Index: FreeFileSync-14.9/FreeFileSync/Source/ui/main_dlg.cpp
-===================================================================
---- FreeFileSync-14.9.orig/FreeFileSync/Source/ui/main_dlg.cpp
-+++ FreeFileSync-14.9/FreeFileSync/Source/ui/main_dlg.cpp
-@@ -1276,11 +1276,11 @@ void MainDialog::setGlobalCfgOnInit(cons
+diff -ruN a/wx+/dc.h b/wx+/dc.h
+--- a/wx+/dc.h 2026-10-05 11:26:30.991646261 +0200
++++ b/wx+/dc.h 2026-10-05 11:26:31.020577178 +0200
+@@ -341,7 +341,6 @@
+     {
+         assert(wnd.IsDoubleBuffered());
+         dc_.emplace<wxPaintDC>(&wnd);
+-        static_cast<wxDC&>(*this).DisableAutomaticBoundingBoxUpdates(); 
//MOOOAAAR perf!?
+     }
  
-     
//--------------------------------------------------------------------------------
-     m_checkBoxMatchCase->SetValue(globalCfg_.mainDlg.textSearchRespectCase);
--
-+    wxAuiPaneInfoArray& paneArray = auiMgr_.GetAllPanes();
-     //work around wxAuiManager::LoadPerspective overwriting pane captions 
with old values (might be different language!)
-     std::vector<std::pair<wxAuiPaneInfo*, wxString>> paneCaptions;
--    for (wxAuiPaneInfo& paneInfo : auiMgr_.GetAllPanes())
--        paneCaptions.emplace_back(&paneInfo, paneInfo.caption);
-+    for (size_t i = 0; i < paneArray.size(); ++i)
-+        paneCaptions.emplace_back(&paneArray[i], paneArray[i].caption);
+     operator wxDC& ()
+diff -ruN a/wx+/grid.cpp b/wx+/grid.cpp
+--- a/wx+/grid.cpp     2026-10-05 11:26:30.992397141 +0200
++++ b/wx+/grid.cpp     2026-10-05 11:26:31.020907086 +0200
+@@ -172,7 +172,7 @@
  
-     //compare progress dialog minimum sizes are layout-dependent + can't be 
changed by user => don't load stale values from config
-     std::vector<std::tuple<wxAuiPaneInfo*, wxSize /*min size*/, wxSize /*best 
size*/>> paneConstraints;
-@@ -3144,8 +3144,8 @@ void MainDialog::onSetLayoutContext(wxMo
-     
//----------------------------------------------------------------------------------------
+ wxRect GridData::drawCellBorder(wxDC& dc, const wxRect& rect) //returns 
remaining rectangle
+ {
+-    drawRectangleBorder(dc, rect, 
wxSystemSettings::GetColour(wxSYS_COLOUR_GRIDLINES), dipToWxsize(1), wxRIGHT | 
wxBOTTOM);
++    drawRectangleBorder(dc, rect, 
wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT), dipToWxsize(1), wxRIGHT | 
wxBOTTOM);
  
-     bool addedSeparator = false;
--
--    for (wxAuiPaneInfo& paneInfo : auiMgr_.GetAllPanes())
-+    const wxAuiPaneInfoArray& paneArray = auiMgr_.GetAllPanes();
-+    for (size_t i = 0; i < paneArray.size(); ++i){ wxAuiPaneInfo& paneInfo = 
paneArray[i];
-         if (!paneInfo.IsShown() &&
-             paneInfo.window != compareStatus_->getAsWindow() &&
-             paneInfo.window != m_panelLog                    &&
-@@ -3163,7 +3163,7 @@ void MainDialog::onSetLayoutContext(wxMo
-                 this->auiMgr_.Update();
-             });
-         }
--
-+    }
-     menu.popup(*this);
+     return {rect.x, rect.y, rect.width - dipToWxsize(1), rect.height - 
dipToWxsize(1)};
  }
- 
 

++++++ FreeFileSync-libssh2-no-store-overflow.patch ++++++
diff -ruN a/libssh2/libssh2_wrap.h b/libssh2/libssh2_wrap.h
--- a/libssh2/libssh2_wrap.h
+++ b/libssh2/libssh2_wrap.h
@@ -195,7 +195,9 @@
             ZEN_CASE_RETURN_STRING(LIBSSH2_ERROR_MAC_FAILURE);
             ZEN_CASE_RETURN_STRING(LIBSSH2_ERROR_HASH_INIT);
             ZEN_CASE_RETURN_STRING(LIBSSH2_ERROR_HASH_CALC);
+#ifdef LIBSSH2_ERROR_STORE_OVERFLOW //not available in libssh2 <= 1.11.1
             ZEN_CASE_RETURN_STRING(LIBSSH2_ERROR_STORE_OVERFLOW);
+#endif
 
         default:
             return replaceCpy<std::wstring>(L"SSH status %x", L"%x", 
numberTo<std::wstring>(sc));

++++++ FreeFileSync-remove_ifdef_exceptions.patch ++++++
--- /var/tmp/diff_new_pack.MjLIS3/_old  2026-10-05 15:21:43.898450534 +0200
+++ /var/tmp/diff_new_pack.MjLIS3/_new  2026-10-05 15:21:43.902450700 +0200
@@ -1,23 +1,22 @@
-Index: FreeFileSync-14.8/FreeFileSync/Source/application.cpp
+Index: FreeFileSync-14.12/FreeFileSync/Source/application.cpp
 ===================================================================
---- FreeFileSync-14.8.orig/FreeFileSync/Source/application.cpp
-+++ FreeFileSync-14.8/FreeFileSync/Source/application.cpp
-@@ -222,10 +222,6 @@ wxLayoutDirection Application::GetLayout
+--- FreeFileSync-14.12.orig/FreeFileSync/Source/application.cpp
++++ FreeFileSync-14.12/FreeFileSync/Source/application.cpp
+@@ -232,9 +232,6 @@ wxLayoutDirection Application::GetLayout
  
  int Application::OnRun()
  {
 -#if wxUSE_EXCEPTIONS
 -#error why is wxWidgets uncaught exception handling enabled!?
 -#endif
--
-     //exception => Windows: let it crash and create mini dump!!! Linux/macOS: 
std::exception::what() logged to console
+     //exception? => Windows: let it crash and create mini dump!!! 
Linux/macOS: std::exception::what() logged to console
+ 
          [[maybe_unused]] const int rc = wxApp::OnRun();
-     return static_cast<int>(exitCode_);
-Index: FreeFileSync-14.8/FreeFileSync/Source/RealTimeSync/application.cpp
+Index: FreeFileSync-14.12/FreeFileSync/Source/RealTimeSync/application.cpp
 ===================================================================
---- FreeFileSync-14.8.orig/FreeFileSync/Source/RealTimeSync/application.cpp
-+++ FreeFileSync-14.8/FreeFileSync/Source/RealTimeSync/application.cpp
-@@ -203,10 +203,6 @@ wxLayoutDirection Application::GetLayout
+--- FreeFileSync-14.12.orig/FreeFileSync/Source/RealTimeSync/application.cpp
++++ FreeFileSync-14.12/FreeFileSync/Source/RealTimeSync/application.cpp
+@@ -215,10 +215,6 @@ wxLayoutDirection Application::GetLayout
  
  int Application::OnRun()
  {

++++++ FreeFileSync-wxstring-char-type.patch ++++++
diff -ruN a/zen/string_traits.h b/zen/string_traits.h
--- a/zen/string_traits.h
+++ b/zen/string_traits.h
@@ -46,18 +46,27 @@
 class GetCharTypeImpl;
 
 
+template <class S, class Char> //test if result of S::c_str() can convert to 
const Char*
+class HasConversion
+{
+    using Yes = char[1];
+    using No  = char[2];
+
+    static Yes& hasConversion(const Char*);
+    static  No& hasConversion(...);
+
+public:
+    static constexpr bool value = 
sizeof(hasConversion(std::declval<S>().c_str())) == sizeof(Yes);
+};
+
+
 template <class S>
 class GetCharTypeImpl<S, StringType::class_>
 {
-    static char    conversionType(const char*);
-    static wchar_t conversionType(const wchar_t*);
-    //static char8_t  conversionType(const char8_t*);
-    //static char16_t conversionType(const char16_t*);
-    //static char32_t conversionType(const char32_t*);
-    static void    conversionType(...);
-
 public:
-    using Type = decltype(conversionType(std::declval<S>().c_str()));
+    //wchar_t is tested first: wxString::c_str() returns a proxy (wxCStrData) 
which converts to *both* const char* and const wchar_t*
+    using Type = std::conditional_t<HasConversion<S, wchar_t>::value, wchar_t,
+          /**/   std::conditional_t<HasConversion<S, char   >::value, char, 
void>>;
     //using Type = typename S::value_type;
     /*DON'T use S::value_type:
         1. support Glib::ustring: value_type is "unsigned int" but c_str() 
returns "const char*"


++++++ FreeFileSync_14.11_Source.zip -> FreeFileSync_14.12_Source.zip ++++++
++++ 8976 lines of diff (skipped)


++++++ glib2-2.78-free_size-Fix-build-when-g_free-macro-is-defined.patch ++++++
--- /var/tmp/diff_new_pack.MjLIS3/_old  2026-10-05 15:21:44.239464738 +0200
+++ /var/tmp/diff_new_pack.MjLIS3/_new  2026-10-05 15:21:44.248465113 +0200
@@ -82,7 +82,7 @@
 --- FreeFileSync-14.10.orig/zen/zstring.cpp
 +++ FreeFileSync-14.10/zen/zstring.cpp
 @@ -25,7 +25,11 @@ Zstring getUnicodeNormalForm_NonAsciiVal
-         gchar* strNorm = ::g_utf8_normalize(str.c_str(), str.length(), form 
== UnicodeNormalForm::nfc ? G_NORMALIZE_NFC : G_NORMALIZE_NFD);
+         gchar* strNorm = ::g_utf8_normalize(str.c_str(), str.size(), form == 
UnicodeNormalForm::nfc ? G_NORMALIZE_NFC : G_NORMALIZE_NFD);
          if (!strNorm)
              throw SysError(formatSystemError("g_utf8_normalize", L"", 
L"Conversion failed."));
 +#ifdef g_free
@@ -91,6 +91,6 @@
          ZEN_ON_SCOPE_EXIT(::g_free(strNorm));
 +#endif
  
-         const std::string_view strNormView(strNorm, strLength(strNorm));
+         const std::string_view strNormView(strNorm, strSize(strNorm));
  
 

++++++ wxwidgets-no-wx3.3.1-WxLogCollector.patch ++++++
--- /var/tmp/diff_new_pack.MjLIS3/_old  2026-10-05 15:21:44.264465780 +0200
+++ /var/tmp/diff_new_pack.MjLIS3/_new  2026-10-05 15:21:44.270466030 +0200
@@ -1,22 +1,6 @@
-From: Fab Stz <[email protected]>
-Date: Wed, 1 Jul 2026 10:26:39 +0200
-Subject: Revert to WxLog instead of WxLogCollector
-
-WxLogCollector appeared is wxWidgets 3.3.1 & FreeFileSync 14.10
-
-This reverts to the way it worked in FreeFileSync 14.9
----
- FreeFileSync/Source/localization.cpp            | 8 +-------
- FreeFileSync/Source/ui/batch_status_handler.cpp | 6 +++---
- FreeFileSync/Source/ui/gui_status_handler.cpp   | 7 +++----
- FreeFileSync/Source/ui/main_dlg.cpp             | 7 +++----
- wx+/image_resources.cpp                         | 8 +-------
- 5 files changed, 11 insertions(+), 25 deletions(-)
-
-diff --git a/FreeFileSync/Source/localization.cpp 
b/FreeFileSync/Source/localization.cpp
-index 31379c5..5d8dac6 100644
---- a/FreeFileSync/Source/localization.cpp
-+++ b/FreeFileSync/Source/localization.cpp
+diff -ruN a/FreeFileSync/Source/localization.cpp 
b/FreeFileSync/Source/localization.cpp
+--- a/FreeFileSync/Source/localization.cpp     2026-10-05 11:23:23.983134803 
+0200
++++ b/FreeFileSync/Source/localization.cpp     2026-10-05 11:23:24.003523570 
+0200
 @@ -8,7 +8,6 @@
  #include <clocale> //setlocale
  #include <zen/file_traverser.h>
@@ -25,7 +9,7 @@
  #include <wx/zipstrm.h>
  #include <wx/mstream.h>
  #include <wx/uilocale.h>
-@@ -129,8 +128,6 @@ std::vector<TranslationInfo> loadTranslations(const 
Zstring& zipPath) //throw Fi
+@@ -129,8 +128,6 @@
          }
          //-------------------------------------------------------------
  
@@ -34,7 +18,7 @@
          wxMemoryInputStream byteStream(rawStream.c_str(), rawStream.size()); 
//does not take ownership
          wxZipInputStream zipStream(byteStream, wxConvUTF8);
  
-@@ -151,11 +148,8 @@ std::vector<TranslationInfo> loadTranslations(const 
Zstring& zipPath) //throw Fi
+@@ -151,11 +148,8 @@
                  streams.emplace_back(zipPath + Zstr(':') + 
utfTo<Zstring>(entry->GetName()), std::move(stream));
              }
              else
@@ -43,15 +27,14 @@
          }
 -
 -        if (zipStream.GetLastError() != wxSTREAM_EOF || 
!zipLog.GetMessages().empty())
--             throw FileError(replaceCpy(_("Cannot read file %x."), L"%x", 
fmtPath(zipPath)), utfTo<std::wstring>(zipLog.GetMessages()));
+-            throw FileError(replaceCpy(_("Cannot read file %x."), L"%x", 
fmtPath(zipPath)), utfTo<std::wstring>(zipLog.GetMessages()));
      }();
      //--------------------------------------------------------------------
  
-diff --git a/FreeFileSync/Source/ui/batch_status_handler.cpp 
b/FreeFileSync/Source/ui/batch_status_handler.cpp
-index 88f722b..b065b3b 100644
---- a/FreeFileSync/Source/ui/batch_status_handler.cpp
-+++ b/FreeFileSync/Source/ui/batch_status_handler.cpp
-@@ -190,12 +190,12 @@ BatchStatusHandler::DlgOptions 
BatchStatusHandler::showResult()
+diff -ruN a/FreeFileSync/Source/ui/batch_status_handler.cpp 
b/FreeFileSync/Source/ui/batch_status_handler.cpp
+--- a/FreeFileSync/Source/ui/batch_status_handler.cpp  2026-10-05 
11:23:23.980777739 +0200
++++ b/FreeFileSync/Source/ui/batch_status_handler.cpp  2026-10-05 
11:23:24.002664094 +0200
+@@ -190,12 +190,12 @@
      else if (!suspend && !autoClose && //only play when actually showing 
results dialog
               !soundFileSyncComplete_.empty())
      {
@@ -67,15 +50,14 @@
      }
      //if (::GetForegroundWindow() != GetHWND())
      //    RequestUserAttention(); -> probably too much since task bar is 
already colorized with Taskbar::Status::error or Status::normal
-diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp 
b/FreeFileSync/Source/ui/gui_status_handler.cpp
-index 15fed1f..3dce443 100644
---- a/FreeFileSync/Source/ui/gui_status_handler.cpp
-+++ b/FreeFileSync/Source/ui/gui_status_handler.cpp
-@@ -515,12 +515,11 @@ StatusHandlerFloatingDialog::DlgOptions 
StatusHandlerFloatingDialog::showResult(
+diff -ruN a/FreeFileSync/Source/ui/gui_status_handler.cpp 
b/FreeFileSync/Source/ui/gui_status_handler.cpp
+--- a/FreeFileSync/Source/ui/gui_status_handler.cpp    2026-10-05 
11:23:23.981591100 +0200
++++ b/FreeFileSync/Source/ui/gui_status_handler.cpp    2026-10-05 
11:23:24.001916292 +0200
+@@ -508,12 +508,11 @@
      if (!taskCancelled() && !suspend && !autoClose && //only play when 
actually showing results dialog
          !soundFileSyncComplete_.empty())
      {
--                wxLogCollector soundLog; //wxWidgets shows modal error dialog 
by default => "no, wxWidgets, NO!"
+-        wxLogCollector soundLog; //wxWidgets shows modal error dialog by 
default => "no, wxWidgets, NO!"
 +        //wxWidgets shows modal error dialog by default => "no, wxWidgets, 
NO!"
 +        wxLog* oldLogTarget = wxLog::SetActiveTarget(new wxLogStderr); 
//transfer and receive ownership!
 +        ZEN_ON_SCOPE_EXIT(delete wxLog::SetActiveTarget(oldLogTarget));
@@ -87,11 +69,10 @@
      }
      //if (::GetForegroundWindow() != GetHWND())
      //    RequestUserAttention(); -> probably too much since task bar is 
already colorized with Taskbar::Status::error or Status::normal
-diff --git a/FreeFileSync/Source/ui/main_dlg.cpp 
b/FreeFileSync/Source/ui/main_dlg.cpp
-index 9300767..bc3e88d 100644
---- a/FreeFileSync/Source/ui/main_dlg.cpp
-+++ b/FreeFileSync/Source/ui/main_dlg.cpp
-@@ -4622,12 +4622,11 @@ void MainDialog::onCompare(wxCommandEvent& event)
+diff -ruN a/FreeFileSync/Source/ui/main_dlg.cpp 
b/FreeFileSync/Source/ui/main_dlg.cpp
+--- a/FreeFileSync/Source/ui/main_dlg.cpp      2026-10-05 11:23:23.981832066 
+0200
++++ b/FreeFileSync/Source/ui/main_dlg.cpp      2026-10-05 11:23:24.002832207 
+0200
+@@ -4614,12 +4614,11 @@
          //play (optional) sound notification
          if (!globalCfg_.soundFileCompareFinished.empty())
          {
@@ -107,10 +88,9 @@
          }
      }
      catch (CancelProcess&) {}
-diff --git a/wx+/image_resources.cpp b/wx+/image_resources.cpp
-index 2df8282..e672d05 100644
---- a/wx+/image_resources.cpp
-+++ b/wx+/image_resources.cpp
+diff -ruN a/wx+/image_resources.cpp b/wx+/image_resources.cpp
+--- a/wx+/image_resources.cpp  2026-10-05 11:23:23.987369636 +0200
++++ b/wx+/image_resources.cpp  2026-10-05 11:23:24.007936155 +0200
 @@ -9,7 +9,6 @@
  #include <zen/thread.h>
  #include <zen/file_io.h>
@@ -119,7 +99,7 @@
  #include <wx/mstream.h>
  #include <wx/zipstrm.h>
  #include <xBRZ/src/xbrz.h>
-@@ -202,8 +201,6 @@ ImageBuffer::ImageBuffer(const Zstring& zipPath) //throw 
FileError
+@@ -204,8 +203,6 @@
          }
      //--------------------------------------------------------------------
  
@@ -128,7 +108,7 @@
          //wxFFileInputStream/wxZipInputStream loads in junks of 512 bytes => 
WTF!!! => implement sane file loading:
          wxMemoryInputStream memStream(rawStream.c_str(), rawStream.size()); 
//does not take ownership
          wxZipInputStream zipStream(memStream, wxConvUTF8);
-@@ -220,10 +217,7 @@ ImageBuffer::ImageBuffer(const Zstring& zipPath) //throw 
FileError
+@@ -222,10 +219,7 @@
                  streams.emplace_back(utfTo<Zstring>(entry->GetName()), 
std::move(stream));
              }
              else

Reply via email to