Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package FreeFileSync for openSUSE:Factory 
checked in at 2025-12-11 18:40:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/FreeFileSync (Old)
 and      /work/SRC/openSUSE:Factory/.FreeFileSync.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "FreeFileSync"

Thu Dec 11 18:40:21 2025 rev:29 rq:1322139 version:14.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/FreeFileSync/FreeFileSync.changes        
2025-02-04 18:14:42.288913994 +0100
+++ /work/SRC/openSUSE:Factory/.FreeFileSync.new.1939/FreeFileSync.changes      
2025-12-11 18:43:09.610058195 +0100
@@ -1,0 +2,31 @@
+Thu Dec  4 07:43:36 UTC 2025 - Paolo Stivanin <[email protected]>
+
+- Update to 14.6:
+  * Write sync statistics to stdout as JSON for .ffs_batch
+  * Removed precompiled 32-bit bundle (Linux)
+  * Avoid redundant window centering before finishing layout
+  * GTK3-based build (Linux)
+  * Dark mode support with GTK3 (Linux)
+  * Stream errors to stderr instead of stdout (Linux)
+  * Fixed FTP login error "dh key too small"
+  * Updated all 3rd party libraries to latest versions
+  * Quotation not needed anymore for external application macros
+  * Unambiguous license key file extension
+  * Fixed crash when resizing config panel during comparison
+  * Fixed log file viewing when config name contains special characters
+- Drop FreeFileSync-icon-loader.patch
+- Drop FreeFileSync-build.patch
+- Added FreeFileSync-gui.patch
+
+-------------------------------------------------------------------
+Mon Apr  7 08:04:45 UTC 2025 - Paolo Stivanin <[email protected]>
+
+- Update to 14.3:
+  * Support internationalized domain names (IDN) for (S)FTP and email
+  * Log performance statistics for file content comparison
+  * Support installation using Ptyxis terminal (Linux)
+  * Support pausing countdown towards system shutdown
+  * Support KDE Plasma 6 service menu (Linux)
+  * Fixed crash on app exit when called by Cron (Linux)
+
+-------------------------------------------------------------------

Old:
----
  FreeFileSync-build.patch
  FreeFileSync-icon-loader.patch
  FreeFileSync_13.8_Source.zip

New:
----
  FreeFileSync-gui.patch
  FreeFileSync_14.6_Source.zip

----------(Old B)----------
  Old:- Drop FreeFileSync-icon-loader.patch
- Drop FreeFileSync-build.patch
- Added FreeFileSync-gui.patch
  Old:  * Fixed log file viewing when config name contains special characters
- Drop FreeFileSync-icon-loader.patch
- Drop FreeFileSync-build.patch
----------(Old E)----------

----------(New B)----------
  New:- Drop FreeFileSync-build.patch
- Added FreeFileSync-gui.patch
----------(New E)----------

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

Other differences:
------------------
++++++ FreeFileSync.spec ++++++
--- /var/tmp/diff_new_pack.E8EPXa/_old  2025-12-11 18:43:10.606100044 +0100
+++ /var/tmp/diff_new_pack.E8EPXa/_new  2025-12-11 18:43:10.610100212 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package FreeFileSync
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -21,7 +21,7 @@
 %endif
 
 Name:           FreeFileSync
-Version:        13.8
+Version:        14.6
 Release:        0
 Summary:        Backup software to synchronize files and folders
 License:        GPL-3.0-or-later
@@ -33,11 +33,10 @@
 Source3:        RealTimeSync.desktop
 Source4:        RealTimeSync.png
 Source5:        Animal.dat
-Patch0:         FreeFileSync-build.patch
-Patch1:         FreeFileSync-resources.patch
-Patch2:         FreeFileSync-icon-loader.patch
-Patch3:         FreeFileSync-disable-in-app-updates.patch
-Patch4:         FreeFileSync-remove_ifdef_exceptions.patch
+Patch0:         FreeFileSync-resources.patch
+Patch1:         FreeFileSync-disable-in-app-updates.patch
+Patch2:         FreeFileSync-remove_ifdef_exceptions.patch
+Patch3:         FreeFileSync-gui.patch
 BuildRequires:  boost-devel >= 1.54
 BuildRequires:  gcc%{?force_gcc_version}-c++ >= 12
 BuildRequires:  libcurl-devel
@@ -47,7 +46,7 @@
 BuildRequires:  libstdc++6 >= 12
 BuildRequires:  unzip
 BuildRequires:  update-desktop-files
-BuildRequires:  wxGTK3-3_2-devel >= 3.1.6
+BuildRequires:  wxGTK3-3_2-devel >= 3.2.0
 BuildRequires:  zlib-devel
 
 # base/db_file.cpp does  static_assert(std::endian::native == 
std::endian::little);  - but s390x is big endian
@@ -71,6 +70,9 @@
 
 %prep
 %autosetup -p1 -c %{name}-%{version}
+touch zen/warn_static.h
+sed -i 's|-Wfatal-errors||' FreeFileSync/Source/Makefile 
FreeFileSync/Source/RealTimeSync/Makefile
+sed -i 's|const override|const|' FreeFileSync/Source/ui/small_dlgs.cpp
 sed -i 's/\r$//' License.txt
 mkdir FreeFileSync/Build/Bin
 
@@ -79,8 +81,9 @@
 %if 0%{?force_gcc_version}
   export CXX="g++-%{?force_gcc_version}"
 %endif
-export CFLAGS="%{optflags}"
-export CXXFLAGS="%{optflags}"
+export CFLAGS="%{optflags} -Wno-psabi -DMAX_SFTP_READ_SIZE=30000 
-DMAX_SFTP_OUTGOING_SIZE=30000 -DwxInfoDC=wxClientDC -DwxReadOnlyDC=wxDC"
+export CXXFLAGS="%{optflags} -Wno-psabi -DMAX_SFTP_READ_SIZE=30000 
-DMAX_SFTP_OUTGOING_SIZE=30000 -DwxInfoDC=wxClientDC -DwxReadOnlyDC=wxDC"
+export LDFLAGS="${LDFLAGS} `pkg-config --libs gtk+-3.0`"
 %make_build -C %{name}/Source exeName=FreeFileSync
 %make_build -C %{name}/Source/RealTimeSync exeName=RealTimeSync
 


++++++ FreeFileSync-disable-in-app-updates.patch ++++++
--- /var/tmp/diff_new_pack.E8EPXa/_old  2025-12-11 18:43:10.658102229 +0100
+++ /var/tmp/diff_new_pack.E8EPXa/_new  2025-12-11 18:43:10.662102397 +0100
@@ -1,7 +1,7 @@
-Index: FreeFileSync-13.8/FreeFileSync/Source/ui/gui_generated.cpp
+Index: FreeFileSync-14.3/FreeFileSync/Source/ui/gui_generated.cpp
 ===================================================================
---- FreeFileSync-13.8.orig/FreeFileSync/Source/ui/gui_generated.cpp
-+++ FreeFileSync-13.8/FreeFileSync/Source/ui/gui_generated.cpp
+--- FreeFileSync-14.3.orig/FreeFileSync/Source/ui/gui_generated.cpp
++++ FreeFileSync-14.3/FreeFileSync/Source/ui/gui_generated.cpp
 @@ -108,10 +108,10 @@ MainDialogGenerated::MainDialogGenerated
      m_menuItemHelp = new wxMenuItem( m_menuHelp, wxID_HELP, wxString( 
_("&View help") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL );
      m_menuHelp->Append( m_menuItemHelp );
@@ -15,10 +15,10 @@
  
      m_menuHelp->AppendSeparator();
  
-Index: FreeFileSync-13.8/FreeFileSync/Source/ui/main_dlg.cpp
+Index: FreeFileSync-14.3/FreeFileSync/Source/ui/main_dlg.cpp
 ===================================================================
---- FreeFileSync-13.8.orig/FreeFileSync/Source/ui/main_dlg.cpp
-+++ FreeFileSync-13.8/FreeFileSync/Source/ui/main_dlg.cpp
+--- FreeFileSync-14.3.orig/FreeFileSync/Source/ui/main_dlg.cpp
++++ FreeFileSync-14.3/FreeFileSync/Source/ui/main_dlg.cpp
 @@ -1092,7 +1092,7 @@ imgFileManagerSmall_([]
      updateGui();
  
@@ -28,11 +28,11 @@
  
      //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);
-Index: FreeFileSync-13.8/FreeFileSync/Source/ui/version_check.cpp
+Index: FreeFileSync-14.3/FreeFileSync/Source/ui/version_check.cpp
 ===================================================================
---- FreeFileSync-13.8.orig/FreeFileSync/Source/ui/version_check.cpp
-+++ FreeFileSync-13.8/FreeFileSync/Source/ui/version_check.cpp
-@@ -48,7 +48,8 @@ void openBrowserForDownload(wxWindow* pa
+--- FreeFileSync-14.3.orig/FreeFileSync/Source/ui/version_check.cpp
++++ FreeFileSync-14.3/FreeFileSync/Source/ui/version_check.cpp
+@@ -49,7 +49,8 @@ void openBrowserForDownload(wxWindow* pa
  bool fff::automaticUpdateCheckDue(time_t lastUpdateCheck)
  {
      const time_t now = std::time(nullptr);

++++++ FreeFileSync-gui.patch ++++++
diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp 
b/FreeFileSync/Source/ui/gui_status_handler.cpp
--- a/FreeFileSync/Source/ui/gui_status_handler.cpp
+++ b/FreeFileSync/Source/ui/gui_status_handler.cpp
@@ -70,27 +70,33 @@ void StatusHandlerTemporaryPanel::showStatsPanel()
                 //case wxAUI_DOCK_CENTRE:
         }
 
+        wxAuiPaneInfoArray& paneArray = mainDlg_.auiMgr_.GetAllPanes();
         const bool statusRowTaken = [&]
         {
-            for (wxAuiPaneInfo& paneInfo : mainDlg_.auiMgr_.GetAllPanes())
+            for (size_t i = 0; i < paneArray.size(); ++i)
+            {
+                const wxAuiPaneInfo& paneInfo = paneArray[i];
                 //doesn't matter if paneInfo.IsShown() or not! => move down in 
either case!
                 if (&paneInfo != &statusPanel &&
                     paneInfo.dock_layer     == statusPanel.dock_layer &&
                     paneInfo.dock_direction == statusPanel.dock_direction &&
                     paneInfo.dock_row       == statusPanel.dock_row)
                     return true;
-
+            }
             return false;
         }();
 
         //move all rows that are in the way one step further
         if (statusRowTaken)
-            for (wxAuiPaneInfo& paneInfo : mainDlg_.auiMgr_.GetAllPanes())
+            for (size_t i = 0; i < paneArray.size(); ++i)
+            {
+                wxAuiPaneInfo& paneInfo = paneArray[i];
                 if (&paneInfo != &statusPanel &&
                     paneInfo.dock_layer     == statusPanel.dock_layer &&
                     paneInfo.dock_direction == statusPanel.dock_direction &&
                     paneInfo.dock_row       >= statusPanel.dock_row)
                     ++paneInfo.dock_row;
+            }
         //------------------------------------------------------------------
 
         statusPanel.Show();

--- a/wx+/darkmode.cpp
+++ b/wx+/darkmode.cpp
@@ -60,7 +60,7 @@ void zen::colorThemeInit(wxApp& app, Col
 {
     assert(!refGlobalColorHook());
 
-    globalDefaultThemeIsDark = wxSystemSettings::GetAppearance().AreAppsDark();
+    globalDefaultThemeIsDark = false;
     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
@@ -93,10 +93,6 @@ void zen::changeColorTheme(ColorTheme colTheme) //throw 
FileError
     try
     {
         ZEN_ON_SCOPE_SUCCESS(refGlobalColorHook() = 
std::make_unique<SysColorsHook>()); //*after* SetAppearance()
-        if (wxApp::AppearanceResult rv = wxTheApp->SetAppearance(colTheme);
-            rv != wxApp::AppearanceResult::Ok)
-            throw SysError(formatSystemError("wxApp::SetAppearance",
-                                             rv == 
wxApp::AppearanceResult::CannotChange ? L"CannotChange" : L"Failure", L"" 
/*errorMsg*/));
     }
     catch (const SysError& e) { throw FileError(_("Failed to update the color 
theme."), e.toString()); }
 }
--- a/wx+/darkmode.h
+++ b/wx+/darkmode.h
@@ -9,14 +9,16 @@
 
 #include <zen/file_error.h>
 #include <wx/app.h>
+#include <wx/settings.h>
 
 
+enum class Appearance{System,Light,Dark};
 namespace zen
 {
 bool darkModeAvailable();
 
 //support not only "dark mode" but dark themes in general
-using ColorTheme = wxApp::Appearance; //why reinvent the wheel?
+using ColorTheme = Appearance; //why reinvent the wheel?
 
 void colorThemeInit(wxApp& app, ColorTheme colTheme); //throw FileError
 void colorThemeCleanup();
@@ -25,4 +27,28 @@ bool equalAppearance(ColorTheme colTheme1, ColorTheme 
colTheme2);
 void changeColorTheme(ColorTheme colTheme); //throw FileError
 }
 
+struct wxColorHook
+{
+    virtual ~wxColorHook() {}
+    virtual wxColour getColor(wxSystemColour index) const = 0;
+};
+WXDLLIMPEXP_CORE inline std::unique_ptr<wxColorHook>& refGlobalColorHook()
+{
+    static std::unique_ptr<wxColorHook> globalColorHook;
+    return globalColorHook;
+}
+
+
+class WXDLLIMPEXP_CORE wxSystemSettings2 : public wxSystemSettingsNative
+{
+public:
+    static wxColour GetColour(wxSystemColour index)
+    {
+        if (refGlobalColorHook())
+                       return refGlobalColorHook()->getColor(index);
+
+        return wxSystemSettingsNative::GetColour(index);
+    }
+};
+
 #endif //DARKMODE_H_754298057018
--- a/FreeFilesync/Source/ui/main_dlg.cpp
+++ b/FreeFileSync/Source/ui/main_dlg.cpp
@@ -1279,11 +1279,11 @@ void MainDialog::setGlobalCfgOnInit(const GlobalConfig& 
globalCfg)
 
     
//--------------------------------------------------------------------------------
     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;
@@ -3147,8 +3147,8 @@ void MainDialog::onSetLayoutContext(wxMouseEvent& event)
     
//----------------------------------------------------------------------------------------
 
     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                    &&
@@ -3166,7 +3166,7 @@ void MainDialog::onSetLayoutContext(wxMouseEvent& event)
                 this->auiMgr_.Update();
             });
         }
-
+    }
     menu.popup(*this);
 }
 

++++++ FreeFileSync-remove_ifdef_exceptions.patch ++++++
--- /var/tmp/diff_new_pack.E8EPXa/_old  2025-12-11 18:43:10.682103238 +0100
+++ /var/tmp/diff_new_pack.E8EPXa/_new  2025-12-11 18:43:10.686103405 +0100
@@ -1,8 +1,8 @@
-Index: FreeFileSync-13.3/FreeFileSync/Source/application.cpp
+Index: FreeFileSync-14.3/FreeFileSync/Source/application.cpp
 ===================================================================
---- FreeFileSync-13.3.orig/FreeFileSync/Source/application.cpp
-+++ FreeFileSync-13.3/FreeFileSync/Source/application.cpp
-@@ -243,10 +243,6 @@ wxLayoutDirection Application::GetLayout
+--- FreeFileSync-14.3.orig/FreeFileSync/Source/application.cpp
++++ FreeFileSync-14.3/FreeFileSync/Source/application.cpp
+@@ -239,10 +239,6 @@ wxLayoutDirection Application::GetLayout
  
  int Application::OnRun()
  {
@@ -13,11 +13,11 @@
      //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-13.3/FreeFileSync/Source/RealTimeSync/application.cpp
+Index: FreeFileSync-14.3/FreeFileSync/Source/RealTimeSync/application.cpp
 ===================================================================
---- FreeFileSync-13.3.orig/FreeFileSync/Source/RealTimeSync/application.cpp
-+++ FreeFileSync-13.3/FreeFileSync/Source/RealTimeSync/application.cpp
-@@ -209,10 +209,6 @@ wxLayoutDirection Application::GetLayout
+--- FreeFileSync-14.3.orig/FreeFileSync/Source/RealTimeSync/application.cpp
++++ FreeFileSync-14.3/FreeFileSync/Source/RealTimeSync/application.cpp
+@@ -213,10 +213,6 @@ wxLayoutDirection Application::GetLayout
  
  int Application::OnRun()
  {

++++++ FreeFileSync-resources.patch ++++++
--- /var/tmp/diff_new_pack.E8EPXa/_old  2025-12-11 18:43:10.702104078 +0100
+++ /var/tmp/diff_new_pack.E8EPXa/_new  2025-12-11 18:43:10.706104246 +0100
@@ -1,8 +1,8 @@
-Index: FreeFileSync-13.1/FreeFileSync/Source/ffs_paths.cpp
+Index: FreeFileSync-14.3/FreeFileSync/Source/ffs_paths.cpp
 ===================================================================
---- FreeFileSync-13.1.orig/FreeFileSync/Source/ffs_paths.cpp
-+++ FreeFileSync-13.1/FreeFileSync/Source/ffs_paths.cpp
-@@ -54,7 +54,8 @@ Zstring fff::getInstallDirPath()
+--- FreeFileSync-14.3.orig/FreeFileSync/Source/ffs_paths.cpp
++++ FreeFileSync-14.3/FreeFileSync/Source/ffs_paths.cpp
+@@ -53,7 +53,8 @@ Zstring fff::getInstallDirPath()
  
  Zstring fff::getResourceDirPath()
  {


++++++ FreeFileSync_13.8_Source.zip -> FreeFileSync_14.6_Source.zip ++++++
++++ 21354 lines of diff (skipped)

Reply via email to