summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--freefilesync/debian/_service2
-rw-r--r--freefilesync/debian/changelog22
-rw-r--r--freefilesync/debian/freefilesync+stackrpms.dsc2
-rw-r--r--freefilesync/debian/patches/ffs_allow_parallel_ops.patch8
-rw-r--r--freefilesync/debian/patches/ffs_no_check_updates.patch98
-rw-r--r--freefilesync/debian/patches/ffs_traditional_view.patch50
-rw-r--r--freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch261
-rw-r--r--freefilesync/debian/patches/series1
8 files changed, 364 insertions, 80 deletions
diff --git a/freefilesync/debian/_service b/freefilesync/debian/_service
index f269167..815a0dd 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.2</param>
+ <param name="revision">12.3</param>
<param name="version">_none_</param>
</service>
<service name="recompress">
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 15aa19c..c64598b 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,25 @@
+freefilesync (12.3-100+stackrpms) obs; urgency=low
+
+ * Add custom notes to sync configurations
+ * Highlight comparison and sync buttons
+ * Show sync stats in config panel tool tip
+ * Update config panel sync info even if cancelled
+ * Support FTP listing format missing owner/group
+ * Fixed "Class not registered" error during installation
+ * Propagate process priority of launcher executable
+ * Fixed config panel metadata being reset after renaming
+ * Fixed config panel keyboard cursor after deletion/rename
+ * Improved small icon resolution for high-DPI monitors
+
+ -- B. Stack <bgstack15@gmail.com> Fri, 19 May 2023 09:27:18 -0400
+
+freefilesync (12.2-101+stackrpms) obs; urgency=low
+
+ * Add Fab Stz patch for GTK3 dialogs
+ * Fix git history
+
+ -- B. Stack <bgstack15@gmail.com> Mon, 15 May 2023 18:12:59 -0400
+
freefilesync (12.2-100+stackrpms) obs; urgency=low
* Upstream updates
diff --git a/freefilesync/debian/freefilesync+stackrpms.dsc b/freefilesync/debian/freefilesync+stackrpms.dsc
index 1c42ad6..137fed9 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.2-100+stackrpms
+Version: 12.3-100+stackrpms
Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
diff --git a/freefilesync/debian/patches/ffs_allow_parallel_ops.patch b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch
index 41434f3..3697d01 100644
--- a/freefilesync/debian/patches/ffs_allow_parallel_ops.patch
+++ b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch
@@ -1,5 +1,5 @@
-Version: 12.1
-Date: 2023-02-21
+Version: 12.3
+Date: 2023-05-19
Author: bgstack15
Message: The source release appears not to actually include the logic that performs operations in parallel, so this patch doesn't actually do anything.
--- a/FreeFileSync/Source/ui/folder_selector.cpp
@@ -45,10 +45,10 @@ Message: The source release appears not to actually include the logic that perfo
--- a/FreeFileSync/Source/ui/sync_cfg.cpp
+++ b/FreeFileSync/Source/ui/sync_cfg.cpp
-@@ -461,7 +461,7 @@ emailHistoryOut_(emailHistory),
- commandHistoryOut_(commandHistory),
+@@ -466,7 +466,7 @@ commandHistoryOut_(commandHistory),
globalPairCfg_(globalPairCfg),
localPairCfg_(localPairCfg),
+ showNotesPanel_(!globalPairCfg.miscCfg.notes.empty()),
- enableExtraFeatures_(false),
+ enableExtraFeatures_(true),
showMultipleCfgs_(showMultipleCfgs),
diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch
index 88806ca..93ac0f0 100644
--- a/freefilesync/debian/patches/ffs_no_check_updates.patch
+++ b/freefilesync/debian/patches/ffs_no_check_updates.patch
@@ -1,54 +1,54 @@
-Version: 12.1
-Date: 2023-02-21
+Version: 12.3
+Date: 2023-05-19
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/ui/gui_generated.cpp
+++ b/FreeFileSync/Source/ui/gui_generated.cpp
@@ -110,15 +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_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 );
+ 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 );
--- 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,8 +96,6 @@ class MainDialogGenerated : public wxFra
+ 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 @@ 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 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(); }
--- a/FreeFileSync/Source/ui/main_dlg.cpp
+++ b/FreeFileSync/Source/ui/main_dlg.cpp
@@ -30,7 +30,6 @@
@@ -59,15 +59,15 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
#include "gui_status_handler.h"
#include "small_dlgs.h"
#include "progress_indicator.h"
-@@ -834,7 +833,6 @@ imgFileManagerSmall_([]
+@@ -843,7 +842,6 @@ imgFileManagerSmall_([]
- setImage(*m_menuItemHelp, loadImage("help_sicon"));
- setImage(*m_menuItemAbout, loadImage("about_sicon"));
-- setImage(*m_menuItemCheckVersionNow, loadImage("update_check_sicon"));
+ setImage(*m_menuItemHelp, loadImage("help", getDefaultMenuIconSize()));
+ setImage(*m_menuItemAbout, loadImage("about", getDefaultMenuIconSize()));
+- setImage(*m_menuItemCheckVersionNow, loadImage("update_check", getDefaultMenuIconSize()));
fixMenuIcons(*m_menuFile);
fixMenuIcons(*m_menuActions);
-@@ -934,9 +932,6 @@ imgFileManagerSmall_([]
+@@ -943,9 +941,6 @@ imgFileManagerSmall_([]
//mainly to update row label sizes...
updateGui();
@@ -77,7 +77,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
//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);
wxCommandEvent evtDummy; //call once before onLayoutWindowAsync()
-@@ -1126,8 +1121,6 @@ void MainDialog::setGlobalCfgOnInit(cons
+@@ -1138,8 +1133,6 @@ void MainDialog::setGlobalCfgOnInit(cons
auiMgr_.GetPane(m_panelSearch).Hide(); //no need to show it on startup
auiMgr_.GetPane(m_panelLog ).Hide(); //
@@ -86,7 +86,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
auiMgr_.Update();
}
-@@ -5839,72 +5832,6 @@ void MainDialog::onMenuExportFileList(wx
+@@ -5907,72 +5900,6 @@ void MainDialog::onMenuExportFileList(wx
}
}
@@ -161,7 +161,7 @@ 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:
+@@ -275,8 +275,6 @@ private:
void onMenuExportFileList (wxCommandEvent& event) override;
void onMenuResetLayout (wxCommandEvent& event) override { resetLayout(); }
void onMenuFindItem (wxCommandEvent& event) override { showFindPanel(true /*show*/); } //CTRL + F
@@ -172,7 +172,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
void onMenuQuit (wxCommandEvent& event) override { Close(); }
--- a/FreeFileSync/Source/ui/version_check.cpp
+++ b/FreeFileSync/Source/ui/version_check.cpp
-@@ -79,6 +79,8 @@ void openBrowserForDownload(wxWindow* pa
+@@ -81,6 +81,8 @@ void openBrowserForDownload(wxWindow* pa
bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck)
{
@@ -181,7 +181,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
if (lastUpdateCheck == getVersionCheckInactiveId())
return false;
-@@ -175,8 +177,7 @@ void showUpdateAvailableDialog(wxWindow*
+@@ -177,8 +179,7 @@ void showUpdateAvailableDialog(wxWindow*
std::wstring updateDetailsMsg;
try
{
@@ -191,7 +191,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(); }
-@@ -198,8 +199,8 @@ void showUpdateAvailableDialog(wxWindow*
+@@ -200,8 +201,8 @@ void showUpdateAvailableDialog(wxWindow*
std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError
{
@@ -202,7 +202,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; }) ||
-@@ -246,58 +247,6 @@ void fff::disableUpdateCheck(time_t& las
+@@ -248,58 +249,6 @@ void fff::disableUpdateCheck(time_t& las
}
diff --git a/freefilesync/debian/patches/ffs_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch
index e24afd0..fe04e26 100644
--- a/freefilesync/debian/patches/ffs_traditional_view.patch
+++ b/freefilesync/debian/patches/ffs_traditional_view.patch
@@ -1,10 +1,10 @@
-Version: 12.1
-Date: 2023-02-21
+Version: 12.3
+Date: 2023-05-19
Author: bgstack15@gmail.com
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
-@@ -473,8 +473,10 @@ private:
+@@ -474,8 +474,10 @@ private:
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>());
}
-@@ -534,8 +536,13 @@ private:
+@@ -535,8 +537,13 @@ private:
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));
}
-@@ -641,6 +648,26 @@ private:
+@@ -642,6 +649,26 @@ private:
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!
-@@ -666,11 +693,38 @@ private:
+@@ -667,11 +694,38 @@ private:
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)
-@@ -737,6 +791,11 @@ private:
+@@ -738,6 +792,11 @@ private:
}
}
@@ -109,7 +109,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
return
{
itemName,
-@@ -877,6 +936,9 @@ private:
+@@ -878,6 +937,9 @@ private:
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)
-@@ -900,6 +962,11 @@ private:
+@@ -901,6 +963,11 @@ private:
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()
-@@ -910,8 +977,9 @@ private:
+@@ -911,8 +978,9 @@ private:
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!
-@@ -919,9 +987,9 @@ private:
+@@ -920,9 +988,9 @@ private:
//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);
-@@ -933,14 +1001,14 @@ private:
+@@ -934,14 +1002,14 @@ private:
drawCellText(dc, rectGroupParentText, groupParentFolder, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupParentFolder));
}
@@ -172,7 +172,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
wxDCTextColourChanger textColorGroupName(dc);
//folder background: coordinate with renderRowBackgound()
-@@ -984,16 +1052,16 @@ private:
+@@ -985,16 +1053,16 @@ private:
rectGroupItems.x += 2 * gapSize_;
rectGroupItems.width -= 2 * gapSize_;
@@ -193,7 +193,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation());
tryDrawNavMarker(rectGroupItems);
-@@ -1124,7 +1192,12 @@ private:
+@@ -1125,7 +1193,12 @@ private:
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 :
-@@ -1156,6 +1229,10 @@ private:
+@@ -1157,6 +1230,10 @@ private:
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;
-@@ -1413,7 +1490,8 @@ private:
+@@ -1414,7 +1491,8 @@ private:
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));
}
-@@ -1437,7 +1515,8 @@ private:
+@@ -1438,7 +1516,8 @@ private:
{
wxRect rectBack = rect;
if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
@@ -251,15 +251,15 @@ 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
-@@ -439,7 +439,6 @@ void MainDialog::create(const Zstring& g
- if (mainDlg->globalCfg_.welcomeDialogLastVersion != ffsVersion)
- {
- mainDlg->globalCfg_.welcomeDialogLastVersion = ffsVersion;
-- showAboutDialog(mainDlg);
+@@ -448,7 +448,6 @@ void MainDialog::create(const Zstring& g
+
+ //showAboutDialog(mainDlg); => dialog centered incorrectly (Centos), or hidden behind main dialog (Lubuntu) https://freefilesync.org/forum/viewtopic.php?t=10246
+ //mainDlg->CallAfter([mainDlg] { showAboutDialog(mainDlg); }); => dialog centered incorrectly (Windows, Centos)
+- mainDlg->guiQueue_.processAsync([] {}, [mainDlg]() { showAboutDialog(mainDlg); }); //apparently oh-kay?
}
-@@ -2765,6 +2764,8 @@ void MainDialog::onGridLabelContextRim(G
+@@ -2777,6 +2776,8 @@ void MainDialog::onGridLabelContextRim(G
addFormatEntry(_("Item name" ), ItemPathFormat::name);
addFormatEntry(_("Relative path"), ItemPathFormat::relative);
addFormatEntry(_("Full path" ), ItemPathFormat::full);
@@ -270,7 +270,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
-@@ -494,6 +494,12 @@ void writeText(const ItemPathFormat& val
+@@ -495,6 +495,12 @@ void writeText(const ItemPathFormat& val
case ItemPathFormat::full:
output = "Full";
break;
@@ -283,7 +283,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
}
}
-@@ -507,6 +513,10 @@ bool readText(const std::string& input,
+@@ -508,6 +514,10 @@ bool readText(const std::string& input,
value = ItemPathFormat::relative;
else if (tmp == "Full")
value = ItemPathFormat::full;
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
new file mode 100644
index 0000000..578b2db
--- /dev/null
+++ b/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch
@@ -0,0 +1,261 @@
+Description: Revert change that provokes freeze when opening dialogs
+ With upstream's 12.1 version, there started to be a freeze when opening
+ some dialogs. Upstream author identified this might come from a given change
+ detailed in https://freefilesync.org/forum/viewtopic.php?t=10103
+ .
+ Until the problem is fixed upstream, this patch reverts that change.
+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
+
+--- a/FreeFileSync/Source/ui/abstract_folder_picker.cpp
++++ b/FreeFileSync/Source/ui/abstract_folder_picker.cpp
+@@ -127,10 +127,7 @@ AbstractFolderPickerDlg::AbstractFolderP
+
+ //----------------------------------------------------------------------
+ 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!
+
+ 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
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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_buttonSaveAs->SetFocus();
+--- a/FreeFileSync/Source/ui/progress_indicator.cpp
++++ b/FreeFileSync/Source/ui/progress_indicator.cpp
+@@ -218,10 +218,7 @@ CompareProgressPanel::Impl::Impl(wxFrame
+ m_panelTimeStats->Layout();
+
+ 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!!!
+ }
+
+
+@@ -884,10 +881,6 @@ syncStat_(&syncStat)
+ //make sure that standard height matches ProcessPhase::comparingContent statistics layout (== largest)
+
+ this->GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
+-#ifdef __WXGTK3__
+- this->Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
+- this->Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+-#endif
+ pnl_.Layout();
+ this->Center(); //call *after* dialog layout update and *before* wxWindow::Show()!
+
+--- a/FreeFileSync/Source/ui/small_dlgs.cpp
++++ b/FreeFileSync/Source/ui/small_dlgs.cpp
+@@ -145,10 +145,6 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+ //--------------------------------------------------------------------------
+ //have animal + text match *final* dialog width
+ 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
+
+ {
+ const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 /* grey border*/) / 2;
+@@ -164,10 +160,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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_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
+ m_checkBoxPasswordPrompt->Hide();
+
+ GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
+- //=> works like a charm for GTK with window resizing problems and title bar corruption; e.g. Debian!!!
+-#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!
+
+ updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
+@@ -976,10 +965,7 @@ CopyToDialog::CopyToDialog(wxWindow* par
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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_buttonOK->SetFocus();
+@@ -1094,10 +1080,7 @@ DeleteDialog::DeleteDialog(wxWindow* par
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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_buttonOK->SetFocus();
+@@ -1237,10 +1220,7 @@ SyncConfirmationDlg::SyncConfirmationDlg
+ setIntValue(*m_staticTextDeleteRight, st.deleteCount<SelectSide::right>(), *m_bitmapDeleteRight, "so_delete_right_sicon");
+
+ 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_buttonStartSync->SetFocus();
+@@ -1504,10 +1484,7 @@ OptionsDlg::OptionsDlg(wxWindow* parent,
+ updateGui();
+
+ 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!
+
+ //restore actual value:
+@@ -1827,10 +1804,7 @@ SelectTimespanDlg::SelectTimespanDlg(wxW
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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_buttonOkay->SetFocus();
+@@ -1926,10 +1900,7 @@ PasswordPromptDlg::PasswordPromptDlg(wxW
+ m_textCtrlPasswordVisible->Hide();
+
+ 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!
+
+ updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
+@@ -2012,10 +1983,7 @@ CfgHighlightDlg::CfgHighlightDlg(wxWindo
+ m_spinCtrlOverdueDays->SetValue(cfgHistSyncOverdueDays);
+
+ 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_spinCtrlOverdueDays->SetFocus();
+@@ -2081,10 +2049,7 @@ ActivationDlg::ActivationDlg(wxWindow* p
+ m_textCtrlOfflineActivationKey->ChangeValue(manualActivationKey);
+
+ 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_buttonActivateOnline->SetFocus();
+@@ -2189,12 +2154,8 @@ DownloadProgressWindow::Impl::Impl(wxWin
+ updateGui();
+
+ 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!
+-
+ Show();
+
+ //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
+ selectFolderPairConfig(-1);
+
+ 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!
+
+ //keep stable sizer height: "two way" description is smaller than grid of sync directions
+--- a/wx+/popup_dlg.cpp
++++ b/wx+/popup_dlg.cpp
+@@ -287,13 +287,8 @@ public:
+
+
+ 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
+ Center(); //needs to be re-applied after a dialog size change!
+
+-
+ 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
+@@ -79,12 +79,11 @@ void Tooltip::show(const wxString& text,
+ }
+
+ if (imgChanged || txtChanged)
++ {
+ //tipWindow_->Layout(); -> 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) :
diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series
index 68c4830..0a011f6 100644
--- a/freefilesync/debian/patches/series
+++ b/freefilesync/debian/patches/series
@@ -13,3 +13,4 @@ ffs_desktop_notifications.patch
#ffs_openssl.patch
ffs_icon_loader.patch
ffs_tooltips_no_taskbar.patch
+revert_buggy_gtk3_change_in_12.1.patch
bgstack15