summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--freefilesync/debian/_service2
-rw-r--r--freefilesync/debian/changelog14
-rw-r--r--freefilesync/debian/freefilesync+stackrpms.dsc2
-rw-r--r--freefilesync/debian/patches/ffs_devuan.patch11
-rw-r--r--freefilesync/debian/patches/ffs_no_check_updates.patch70
-rw-r--r--freefilesync/debian/patches/ffs_traditional_view.patch113
-rw-r--r--freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch42
7 files changed, 115 insertions, 139 deletions
diff --git a/freefilesync/debian/_service b/freefilesync/debian/_service
index 37855e1..27f1ca4 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">13.1</param>
+ <param name="revision">13.2</param>
<param name="version">_none_</param>
</service>
<service name="recompress">
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 2f06c37..8493967 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,17 @@
+freefilesync (13.2-100+stackrpms) obs; urgency=low
+
+ * Upstream updates
+ * Complete high-DPI/Retina display support (macOS)
+ * Prevent files from being moved to versioning recursively
+ * Fixed tooltip line wrap bug for moved files (Windows)
+ * Return first FTP parsing error when trying multiple variants
+ * Allow file times from the future for Linux-style FTP listing
+ * Fixed setting modification times on certain storage devices (Windows)
+ * Fixed bogus "Sound playback failed" error message (macOS)
+ * Fixed rename dialog text selection wobble (macOS)
+
+ -- B. Stack <bgstack15@gmail.com> Mon, 27 Nov 2023 11:14:47 -0500
+
freefilesync (13.1-100+stackrpms) obs; urgency=low
* Keep comparison results when only changing cloud connection settings
diff --git a/freefilesync/debian/freefilesync+stackrpms.dsc b/freefilesync/debian/freefilesync+stackrpms.dsc
index 6762b34..2407c5f 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: 13.1-100+stackrpms
+Version: 13.2-100+stackrpms
Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
diff --git a/freefilesync/debian/patches/ffs_devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch
index 1973b60..a835ccb 100644
--- a/freefilesync/debian/patches/ffs_devuan.patch
+++ b/freefilesync/debian/patches/ffs_devuan.patch
@@ -5,7 +5,7 @@ Last-Version: 12.5
Message: Main patch to compile on Devuan.
--- a/FreeFileSync/Source/ffs_paths.cpp
+++ b/FreeFileSync/Source/ffs_paths.cpp
-@@ -55,7 +55,7 @@ Zstring fff::getInstallDirPath()
+@@ -54,7 +54,7 @@ Zstring fff::getInstallDirPath()
Zstring fff::getResourceDirPath()
{
@@ -32,7 +32,7 @@ Message: Main patch to compile on Devuan.
CXXFLAGS += `pkg-config --cflags openssl`
--- a/FreeFileSync/Source/ui/small_dlgs.cpp
+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
-@@ -87,6 +87,8 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+@@ -90,6 +90,8 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
build += LTR_MARK; //fix Arabic
build += utfTo<wxString>(cpuArchName);
@@ -41,7 +41,7 @@ Message: Main patch to compile on Devuan.
build += SPACED_BULLET;
build += utfTo<wxString>(formatTime(formatDateTag, getCompileTime()));
-@@ -137,9 +139,9 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+@@ -140,9 +142,9 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
wxImage::AddHandler(new wxJPEGHandler /*ownership passed*/); //activate support for .jpg files
@@ -54,12 +54,11 @@ Message: Main patch to compile on Devuan.
//--------------------------------------------------------------------------
//have animal + text match *final* dialog width
-@@ -153,7 +155,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+@@ -156,7 +158,6 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 /* grey border*/) / 2;
const int textWidth = m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 - imageWidth;
-- setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/));
-+ //setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/));
+- setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, wxsizeToScreen(imageWidth), -1 /*maxHeight*/));
m_staticTextDonate->Show();
m_staticTextDonate->Wrap(textWidth - 10 /*left gap*/); //wrap *after* changing font size
diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch
index 0a3558f..26180ff 100644
--- a/freefilesync/debian/patches/ffs_no_check_updates.patch
+++ b/freefilesync/debian/patches/ffs_no_check_updates.patch
@@ -16,42 +16,42 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
+++ b/FreeFileSync/Source/ui/gui_generated.cpp
@@ -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_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 );
-@@ -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 );
+@@ -1119,7 +1114,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,7 +96,6 @@ protected:
- wxMenuItem* m_menuItemShowOverview;
- wxMenu* m_menuHelp;
- wxMenuItem* m_menuItemHelp;
-- wxMenuItem* m_menuItemCheckVersionNow;
- wxMenuItem* m_menuItemAbout;
- wxBoxSizer* bSizerPanelHolder;
- wxPanel* m_panelTopButtons;
-@@ -233,7 +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 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
@@ -32,7 +32,6 @@
@@ -73,9 +73,9 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
@@ -871,7 +870,6 @@ imgFileManagerSmall_([]
- setImage(*m_menuItemHelp, loadImage("help", getDefaultMenuIconSize()));
- setImage(*m_menuItemAbout, loadImage("about", getDefaultMenuIconSize()));
-- setImage(*m_menuItemCheckVersionNow, loadImage("update_check", getDefaultMenuIconSize()));
+ setImage(*m_menuItemHelp, loadImage("help", dipToScreen(getMenuIconDipSize())));
+ setImage(*m_menuItemAbout, loadImage("about", dipToScreen(getMenuIconDipSize())));
+- setImage(*m_menuItemCheckVersionNow, loadImage("update_check", dipToScreen(getMenuIconDipSize())));
fixMenuIcons(*m_menuFile);
fixMenuIcons(*m_menuActions);
@@ -89,7 +89,7 @@ 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()
-@@ -6259,56 +6254,6 @@ void MainDialog::onMenuExportFileList(wx
+@@ -6271,56 +6266,6 @@ void MainDialog::onMenuExportFileList(wx
}
@@ -211,7 +211,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
-{
- try
- {
-- const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError
+- const std::string onlineVersion = getOnlineVersion(geHttpPostParameters()); //throw SysError
- lastOnlineVersion = onlineVersion;
-
- if (haveNewerVersionOnline(onlineVersion))
diff --git a/freefilesync/debian/patches/ffs_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch
index 1790069..5e6e7ff 100644
--- a/freefilesync/debian/patches/ffs_traditional_view.patch
+++ b/freefilesync/debian/patches/ffs_traditional_view.patch
@@ -4,7 +4,7 @@ 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
-@@ -465,8 +465,10 @@
+@@ -487,8 +487,10 @@ private:
case ItemPathFormat::name:
return utfTo<std::wstring>(fsObj->getItemName<side>());
case ItemPathFormat::relative:
@@ -15,22 +15,19 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
return AFS::getDisplayPath(fsObj->getAbstractPath<side>());
}
-@@ -526,8 +528,13 @@
+@@ -548,6 +550,11 @@ private:
else
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
+ // trad patch section for removing lines around items in grid
-+ int lineWidth { fastFromDIP(1) } ;
++ int lineWidth { dipToWxsize(1) } ;
+ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel)
+ lineWidth = 0;
+
//----------------------------------------------------------------------------------
-- const wxRect rectLine(rect.x, rect.y + rect.height - fastFromDIP(1), rect.width, fastFromDIP(1));
-+ const wxRect rectLine(rect.x, rect.y + rect.height - lineWidth, rect.width, lineWidth);
+ const wxRect rectLine(rect.x, rect.y + rect.height - dipToWxsize(1), rect.width, dipToWxsize(1));
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
- getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
- }
-@@ -636,6 +643,26 @@
+@@ -658,6 +665,26 @@ private:
else //=> BaseFolderPair
groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>());
break;
@@ -57,14 +54,14 @@ 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!
-@@ -661,11 +688,38 @@
+@@ -683,11 +710,38 @@ private:
int groupNameWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + getTextExtentBuffered(dc, groupName).x);
const int groupNameMinWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + ellipsisWidth);
-- const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + fastFromDIP(1));
+- const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + dipToWxsize(1));
+ // trad patch section for removing lines around items in grid
+ // code duplication because this is a different scope!
-+ int lineWidth { fastFromDIP(1) } ;
++ int lineWidth { dipToWxsize(1) } ;
+ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel)
+ lineWidth = 0;
+
@@ -97,7 +94,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
//not enough space? => collapse
if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth;
excessWidth > 0)
-@@ -732,6 +786,11 @@
+@@ -754,6 +808,11 @@ private:
}
}
@@ -109,7 +106,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
return
{
itemName,
-@@ -872,6 +931,9 @@
+@@ -894,6 +953,9 @@ private:
rectGroup = rectGroupParent = rectGroupName = rectTmp;
rectGroupParent.width = groupParentWidth;
@@ -119,31 +116,29 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
rectGroupName .width = groupNameWidth;
if (stackedGroupRender)
-@@ -895,6 +957,11 @@
+@@ -917,6 +979,11 @@ private:
rectGroupItems.width = 0;
}
+ // trad patch section for removing lines around items in grid
-+ int lineWidth { fastFromDIP(1) } ;
++ int lineWidth { dipToWxsize(1) } ;
+ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel)
+ lineWidth = 0;
+
//-------------------------------------------------------------------------
{
//clear background below parent path => harmonize with renderRowBackgound()
-@@ -905,8 +972,9 @@
- wxRect rectGroupBack = rectGroup;
+@@ -928,7 +995,8 @@ private:
rectGroupBack.width += 2 * gapSize_; //include gap before vline
-- if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
-- rectGroupBack.height -= fastFromDIP(1);
-+ if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
-+ if (itemPathFormat_ != ItemPathFormat::traditional && itemPathFormat_ != ItemPathFormat::tradrel)
-+ rectGroupBack.height -= lineWidth;
+ if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
+- rectGroupBack.height -= dipToWxsize(1);
++ if (itemPathFormat_ != ItemPathFormat::traditional && itemPathFormat_ != ItemPathFormat::tradrel)
++ rectGroupBack.height -= dipToWxsize(1);
clearArea(dc, rectGroupBack, getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 == 0));
//clearArea() is surprisingly expensive => call just once!
-@@ -914,9 +982,9 @@
+@@ -936,9 +1004,9 @@ private:
//accessibility: always set *both* foreground AND background colors!
}
@@ -155,7 +150,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);
-@@ -928,14 +996,14 @@
+@@ -950,7 +1018,7 @@ private:
drawCellText(dc, rectGroupParentText, groupParentFolder, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupParentFolder));
}
@@ -164,50 +159,22 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
row == groupFirstRow)
{
wxRect rectGroupNameBack = rectGroupName;
-
- if (!itemName.empty())
- rectGroupNameBack.width += 2 * gapSize_; //include gap left of item vline
-- rectGroupNameBack.height -= fastFromDIP(1); //harmonize with item separation lines
-+ rectGroupNameBack.height -= lineWidth; //harmonize with item separation lines
-
- wxDCTextColourChanger textColorGroupName(dc);
- //folder background: coordinate with renderRowBackgound()
-@@ -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)); //DrawLine() doesn't draw last pixel!
-
-- rectGroupItems.x += fastFromDIP(1);
-- rectGroupItems.width -= fastFromDIP(1);
-+ rectGroupItems.x += lineWidth;
-+ rectGroupItems.width -= lineWidth;
- }
- //-------------------------------------------------------------------------
-
- wxRect rectItemsBack = rectGroupItems;
-- rectItemsBack.height -= fastFromDIP(1); //preserve item separation lines!
-+ rectItemsBack.height -= lineWidth; //preserve item separation lines!
-
- drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation());
- tryDrawNavMarker(rectGroupItems);
-@@ -1119,7 +1187,12 @@
+@@ -1142,7 +1210,13 @@ private:
groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth);
assert(!stackedGroupRender);
-- const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + fastFromDIP(1));
+- const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + dipToWxsize(1));
+ // trad patch section for removing lines around items in grid
-+ int lineWidth { fastFromDIP(1) } ;
++ int lineWidth { dipToWxsize(1) } ;
+ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel)
+ lineWidth = 0;
+
-+ const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + lineWidth);
- const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconSize() : 0;
++ const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + lineWidth);
++
+ const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconWxsize() : 0;
const int ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x;
const int itemWidth = itemName.empty() ? 0 :
-@@ -1151,6 +1224,10 @@
+@@ -1174,6 +1248,10 @@ private:
return _("Relative path");
case ItemPathFormat::full:
return _("Full path");
@@ -218,29 +185,25 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
}
assert(false);
break;
-@@ -1408,7 +1485,8 @@
+@@ -1431,6 +1509,7 @@ private:
GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover);
//----------------------------------------------------------------------------------
-- const wxRect rectLine(rect.x, rect.y + rect.height - fastFromDIP(1), rect.width, fastFromDIP(1));
-+ // just hardcoding this in this trad patch, because itempathFormat_ is not available in this scope.
-+ const wxRect rectLine(rect.x, rect.y + rect.height - 0, rect.width, 0);
++ // trad patch: we might need to convert these dipToWxsize to lineWidth calculated based on if-traditional logic.
+ const wxRect rectLine(rect.x, rect.y + rect.height - dipToWxsize(1), rect.width, dipToWxsize(1));
clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ?
getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0));
- }
-@@ -1432,7 +1510,8 @@
+@@ -1455,6 +1534,7 @@ private:
{
wxRect rectBack = rect;
if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line!
-- rectBack.height -= fastFromDIP(1);
-+ // just hardcoding this in this trad patch, because itempathFormat_ is not available in this scope.
-+ rectBack.height -= 0;
++ // trad patch: we might need to convert these dipToWxsize to lineWidth calculated based on if-traditional logic.
+ rectBack.height -= dipToWxsize(1);
clearArea(dc, rectBack, col);
- }
--- a/FreeFileSync/Source/ui/file_grid_attr.h
+++ b/FreeFileSync/Source/ui/file_grid_attr.h
-@@ -79,6 +79,8 @@
+@@ -79,6 +79,8 @@ enum class ItemPathFormat
name,
relative,
full,
@@ -251,7 +214,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
-@@ -3002,6 +3002,8 @@
+@@ -3016,6 +3016,8 @@ void MainDialog::onGridLabelContextRim(G
addFormatEntry(_("Item name" ), ItemPathFormat::name);
addFormatEntry(_("Relative path"), ItemPathFormat::relative);
addFormatEntry(_("Full path" ), ItemPathFormat::full);
@@ -262,7 +225,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 @@
+@@ -476,6 +476,12 @@ void writeText(const ItemPathFormat& val
case ItemPathFormat::full:
output = "Full";
break;
@@ -275,7 +238,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
}
}
-@@ -490,6 +496,10 @@
+@@ -489,6 +495,10 @@ bool readText(const std::string& input,
value = ItemPathFormat::relative;
else if (tmp == "Full")
value = ItemPathFormat::full;
@@ -288,7 +251,7 @@ 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,6 +798,7 @@
+@@ -798,6 +798,7 @@ void FileView::sortView(ColumnTypeRim ty
break;
case ItemPathFormat::relative:
@@ -296,7 +259,7 @@ Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVe
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 @@
+@@ -805,6 +806,7 @@ void FileView::sortView(ColumnTypeRim ty
break;
case 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
index 78fed20..360f804 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
@@ -13,7 +13,7 @@ Version: 13.0
--- a/FreeFileSync/Source/ui/abstract_folder_picker.cpp
+++ b/FreeFileSync/Source/ui/abstract_folder_picker.cpp
-@@ -127,10 +127,7 @@
+@@ -127,10 +127,7 @@ AbstractFolderPickerDlg::AbstractFolderP
//----------------------------------------------------------------------
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -27,7 +27,7 @@ Version: 13.0
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 @@
+@@ -81,10 +81,7 @@ BatchDialog::BatchDialog(wxWindow* paren
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -41,7 +41,7 @@ Version: 13.0
m_buttonSaveAs->SetFocus();
--- a/FreeFileSync/Source/ui/progress_indicator.cpp
+++ b/FreeFileSync/Source/ui/progress_indicator.cpp
-@@ -221,10 +221,7 @@
+@@ -221,10 +221,7 @@ CompareProgressPanel::Impl::Impl(wxFrame
m_panelErrorStats->Layout();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -53,7 +53,7 @@ Version: 13.0
}
-@@ -924,10 +921,6 @@
+@@ -925,10 +922,6 @@ syncStat_(&syncStat)
//make sure that standard height matches ProcessPhase::binaryCompare statistics layout (== largest)
this->GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -66,7 +66,7 @@ Version: 13.0
--- a/FreeFileSync/Source/ui/small_dlgs.cpp
+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
-@@ -144,10 +144,6 @@
+@@ -148,10 +148,6 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
//--------------------------------------------------------------------------
//have animal + text match *final* dialog width
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -77,7 +77,7 @@ Version: 13.0
{
const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 /* grey border*/) / 2;
-@@ -163,10 +159,7 @@
+@@ -166,10 +162,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()
@@ -89,7 +89,7 @@ Version: 13.0
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!!!
-@@ -400,11 +393,7 @@
+@@ -406,11 +399,7 @@ CloudSetupDlg::CloudSetupDlg(wxWindow* p
m_checkBoxPasswordPrompt->Hide();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -102,7 +102,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
-@@ -968,10 +957,7 @@
+@@ -974,10 +963,7 @@ CopyToDialog::CopyToDialog(wxWindow* par
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -114,7 +114,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
m_buttonOK->SetFocus();
-@@ -1085,10 +1071,7 @@
+@@ -1091,10 +1077,7 @@ DeleteDialog::DeleteDialog(wxWindow* par
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -126,7 +126,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
m_buttonOK->SetFocus();
-@@ -1228,10 +1211,7 @@
+@@ -1234,10 +1217,7 @@ SyncConfirmationDlg::SyncConfirmationDlg
setIntValue(*m_staticTextDeleteRight, st.deleteCount<SelectSide::right>(), *m_bitmapDeleteRight, "so_delete_right_sicon");
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -138,7 +138,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
m_buttonStartSync->SetFocus();
-@@ -1495,10 +1475,7 @@
+@@ -1501,10 +1481,7 @@ OptionsDlg::OptionsDlg(wxWindow* parent,
updateGui();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -150,7 +150,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
//restore actual value:
-@@ -1818,10 +1795,7 @@
+@@ -1824,10 +1801,7 @@ SelectTimespanDlg::SelectTimespanDlg(wxW
Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -162,7 +162,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
m_buttonOkay->SetFocus();
-@@ -1917,10 +1891,7 @@
+@@ -1923,10 +1897,7 @@ PasswordPromptDlg::PasswordPromptDlg(wxW
m_textCtrlPasswordVisible->Hide();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -174,7 +174,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
-@@ -2003,10 +1974,7 @@
+@@ -2009,10 +1980,7 @@ CfgHighlightDlg::CfgHighlightDlg(wxWindo
m_spinCtrlOverdueDays->SetValue(cfgHistSyncOverdueDays);
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -186,7 +186,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
m_spinCtrlOverdueDays->SetFocus();
-@@ -2074,10 +2042,7 @@
+@@ -2080,10 +2048,7 @@ ActivationDlg::ActivationDlg(wxWindow* p
m_textCtrlOfflineActivationKey->ChangeValue(manualActivationKey);
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -198,7 +198,7 @@ Version: 13.0
Center(); //needs to be re-applied after a dialog size change!
m_buttonActivateOnline->SetFocus();
-@@ -2182,12 +2147,8 @@
+@@ -2188,12 +2153,8 @@ DownloadProgressWindow::Impl::Impl(wxWin
updateGui();
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -214,7 +214,7 @@ Version: 13.0
//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
-@@ -706,10 +706,7 @@
+@@ -707,10 +707,7 @@ globalLogFolderPhrase_(globalLogFolderPh
selectFolderPairConfig(-1);
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
@@ -228,7 +228,7 @@ Version: 13.0
//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
-@@ -283,17 +283,12 @@
+@@ -283,17 +283,12 @@ public:
//set std order after button visibility was set
setStandardButtonLayout(*bSizerStdButtons, stdBtns);
@@ -249,7 +249,7 @@ Version: 13.0
if (m_buttonAccept->IsEnabled())
--- a/wx+/tooltip.cpp
+++ b/wx+/tooltip.cpp
-@@ -80,12 +80,11 @@
+@@ -83,12 +83,11 @@ void Tooltip::show(const wxString& text,
}
if (imgChanged || txtChanged)
@@ -264,10 +264,10 @@ Version: 13.0
+ }
const wxPoint newPos = wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft ?
- mousePos - wxPoint(fastFromDIP(TIP_WINDOW_OFFSET_DIP) + tipWindow_->GetSize().GetWidth(), 0) :
+ mousePos - wxPoint(dipToWxsize(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 @@
+@@ -363,10 +363,7 @@ RenameDialog::RenameDialog(wxWindow* par
//-----------------------------------------------------------
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
bgstack15