From aabf4bb91f2f85e0e5f9128e4a9c9174f80b1d9e Mon Sep 17 00:00:00 2001 From: "B. Stack" Date: Mon, 23 Jan 2023 09:50:50 -0500 Subject: ffs 12.0 --- .gitignore | 5 + freefilesync/debian/_service | 2 +- freefilesync/debian/changelog | 20 +++ .../debian/patches/ffs_allow_parallel_ops.patch | 13 +- .../debian/patches/ffs_desktop_notifications.patch | 8 +- freefilesync/debian/patches/ffs_libssh2.patch | 7 +- .../debian/patches/ffs_no_check_updates.patch | 86 ++++++------- .../debian/patches/ffs_tooltips_no_taskbar.patch | 16 +-- .../debian/patches/ffs_traditional_view.patch | 138 +++++++++------------ 9 files changed, 152 insertions(+), 143 deletions(-) diff --git a/.gitignore b/.gitignore index 84883e0..ad194a0 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,8 @@ *.buildinfo *.changes !*moz.build +*/debian/debhelper-build-stamp +*/debian/*.debhelper.log +*/debian/files +*/debian/*.substvars +*/debian/freefilesync/ diff --git a/freefilesync/debian/_service b/freefilesync/debian/_service index 976c025..cab1830 100644 --- a/freefilesync/debian/_service +++ b/freefilesync/debian/_service @@ -14,7 +14,7 @@ git https://gitlab.com/opensource-tracking/FreeFileSync.git - 11.29 + 12.0 _none_ diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog index 935472a..8a92145 100644 --- a/freefilesync/debian/changelog +++ b/freefilesync/debian/changelog @@ -1,3 +1,23 @@ +freefilesync (12.0-100+stackrpms) obs; urgency=low + + * Upstream updates + * Don't save password and show prompt instead for (S)FTP + * Fast path check failure on access errors + * Support PuTTY private key file version 3 + * Respect timeout during SFTP connect + * Removed 20-sec timeout while checking directory existence + * Avoid hitting (S)FTP connection limit for non-uniform configs + * Fixed middle grid tooltip icon not always showing (Linux) + * Optimized file accesses when checking file path existence + * Fixed overview navigation marker not always showing on main grid + * Clear all grid selections after view filter toggle + * Fixed mouse selection starting on folder group + * Don't require sudo during non-root installation (Linux) + * Stricter type checking when deleting file/folder/symlinks + * Succinct error messages when path component is not existing + + -- B. Stack Sun, 22 Jan 2023 14:00:49 -0500 + freefilesync (11.29-100+devuan) obs; urgency=low * Upstream updates diff --git a/freefilesync/debian/patches/ffs_allow_parallel_ops.patch b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch index dfe2c55..c102480 100644 --- a/freefilesync/debian/patches/ffs_allow_parallel_ops.patch +++ b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch @@ -1,9 +1,10 @@ -Version: 11.22 -Date: 2022-06-26 +Version: 12.0 +Date: 2023-01-23 +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 +++ b/FreeFileSync/Source/ui/folder_selector.cpp -@@ -263,7 +263,7 @@ void FolderSelector::onSelectFolder(wxCo +@@ -272,7 +272,7 @@ void FolderSelector::onSelectFolder(wxCo void FolderSelector::onSelectAltFolder(wxCommandEvent& event) { Zstring folderPathPhrase = getPath(); @@ -14,7 +15,7 @@ Message: The source release appears not to actually include the logic that perfo return; --- a/FreeFileSync/Source/ui/small_dlgs.cpp +++ b/FreeFileSync/Source/ui/small_dlgs.cpp -@@ -371,11 +371,14 @@ CloudSetupDlg::CloudSetupDlg(wxWindow* p +@@ -379,11 +379,14 @@ CloudSetupDlg::CloudSetupDlg(wxWindow* p m_spinCtrlConnectionCount->SetValue(parallelOps); @@ -33,7 +34,7 @@ Message: The source release appears not to actually include the logic that perfo //--------------------------------------------------------- //set up default view for dialog size calculation -@@ -821,7 +824,7 @@ CopyToDialog::CopyToDialog(wxWindow* par +@@ -932,7 +935,7 @@ CopyToDialog::CopyToDialog(wxWindow* par targetFolder = std::make_unique(this, *this, *m_buttonSelectTargetFolder, *m_bpButtonSelectAltTargetFolder, *m_targetFolderPath, targetFolderLastSelected, sftpKeyFileLastSelected, nullptr /*staticText*/, nullptr /*wxWindow*/, nullptr /*droppedPathsFilter*/, @@ -44,7 +45,7 @@ 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 -@@ -352,7 +352,7 @@ emailHistoryOut_(emailHistory), +@@ -461,7 +461,7 @@ emailHistoryOut_(emailHistory), commandHistoryOut_(commandHistory), globalPairCfg_(globalPairCfg), localPairCfg_(localPairCfg), diff --git a/freefilesync/debian/patches/ffs_desktop_notifications.patch b/freefilesync/debian/patches/ffs_desktop_notifications.patch index 5989a9c..4dec781 100644 --- a/freefilesync/debian/patches/ffs_desktop_notifications.patch +++ b/freefilesync/debian/patches/ffs_desktop_notifications.patch @@ -1,5 +1,5 @@ -Version: 11.25 -Date: 2022-09-14 +Version: 12.0 +Date: 2023-01-23 Author: bgstack15 Message: Add support for building with desktop notification support. --- a/FreeFileSync/Source/Makefile @@ -20,7 +20,7 @@ Message: Add support for building with desktop notification support. ifeq ($(SELINUX_EXISTING),YES) --- a/FreeFileSync/Source/ui/progress_indicator.cpp +++ b/FreeFileSync/Source/ui/progress_indicator.cpp -@@ -31,6 +31,9 @@ +@@ -30,6 +30,9 @@ #include "../icon_buffer.h" #include "../base/speed_test.h" @@ -30,7 +30,7 @@ Message: Add support for building with desktop notification support. using namespace zen; using namespace fff; -@@ -1377,6 +1380,22 @@ void SyncProgressDialogImplSetLabelText(getSyncResultLabel(syncResult)); //pnl_.m_bitmapStatus->SetToolTip(); -> redundant diff --git a/freefilesync/debian/patches/ffs_libssh2.patch b/freefilesync/debian/patches/ffs_libssh2.patch index 022914b..315ef6f 100644 --- a/freefilesync/debian/patches/ffs_libssh2.patch +++ b/freefilesync/debian/patches/ffs_libssh2.patch @@ -9,9 +9,9 @@ Source: Author: B Stack Message: libssh2 v1.8.0 does not yet implement these two error messages. I do not know why distros are not serving libssh2 v1.9.0 which wa released June 20, 2019. Date: 2019-09-17T13:41:23Z ---- 11.3-0/libssh2/libssh2_wrap.h 2020-11-01 17:14:27.203497619 -0500 -+++ 11.3-1/libssh2/libssh2_wrap.h 2020-11-01 17:18:42.294130563 -0500 -@@ -172,8 +172,8 @@ +--- a/libssh2/libssh2_wrap.h ++++ b/libssh2/libssh2_wrap.h +@@ -171,8 +171,8 @@ std::wstring formatSshStatusCode(int sc) ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_ENCRYPT); ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_BAD_SOCKET); ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_KNOWN_HOSTS); @@ -22,4 +22,3 @@ Date: 2019-09-17T13:41:23Z default: return replaceCpy(L"SSH status %x", L"%x", numberTo(sc)); - diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch index f6d02f1..6fd0fc2 100644 --- a/freefilesync/debian/patches/ffs_no_check_updates.patch +++ b/freefilesync/debian/patches/ffs_no_check_updates.patch @@ -1,54 +1,54 @@ -Version: 11.29 -Date: 2022-12-16 +Version: 12.0 +Date: 2023-01-22 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 @@ 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(); } +@@ -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(); } --- a/FreeFileSync/Source/ui/main_dlg.cpp +++ b/FreeFileSync/Source/ui/main_dlg.cpp @@ -30,7 +30,6 @@ @@ -59,7 +59,7 @@ 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" -@@ -828,7 +827,6 @@ imgFileManagerSmall_([] +@@ -834,7 +833,6 @@ imgFileManagerSmall_([] setImage(*m_menuItemHelp, loadImage("help_sicon")); setImage(*m_menuItemAbout, loadImage("about_sicon")); @@ -67,7 +67,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1 fixMenuIcons(*m_menuFile); fixMenuIcons(*m_menuActions); -@@ -928,9 +926,6 @@ imgFileManagerSmall_([] +@@ -934,9 +932,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() -@@ -1124,8 +1119,6 @@ void MainDialog::setGlobalCfgOnInit(cons +@@ -1130,8 +1125,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(); } -@@ -5821,72 +5814,6 @@ void MainDialog::onMenuExportFileList(wx +@@ -5848,72 +5841,6 @@ void MainDialog::onMenuExportFileList(wx } } @@ -219,7 +219,7 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1 - showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg(). - setIcon(loadImage("update_check")). - setTitle(_("Check for Program Updates")). -- setMainInstructions(_("FreeFileSync is up to date."))); +- setMainInstructions(_("FreeFileSync is up-to-date."))); - } - catch (const SysError& e) - { @@ -281,8 +281,8 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1 cppFiles+=ui/triple_splitter.cpp -cppFiles+=ui/version_check.cpp cppFiles+=../../libcurl/curl_wrap.cpp + cppFiles+=../../zen/argon2.cpp cppFiles+=../../zen/file_access.cpp - cppFiles+=../../zen/file_io.cpp --- a/FreeFileSync/Source/ui/small_dlgs.cpp +++ b/FreeFileSync/Source/ui/small_dlgs.cpp @@ -26,7 +26,6 @@ diff --git a/freefilesync/debian/patches/ffs_tooltips_no_taskbar.patch b/freefilesync/debian/patches/ffs_tooltips_no_taskbar.patch index 9a5f114..7f2443d 100644 --- a/freefilesync/debian/patches/ffs_tooltips_no_taskbar.patch +++ b/freefilesync/debian/patches/ffs_tooltips_no_taskbar.patch @@ -1,6 +1,6 @@ -Date: 2022-12-16 +Version: 12.0 +Date: 2023-01-22 Author: bgstack15 -Version: 11.29 Message: Suppress taskbar entry for tooltip "window" --- a/wx+/tooltip.cpp +++ b/wx+/tooltip.cpp @@ -12,12 +12,12 @@ Message: Suppress taskbar entry for tooltip "window" #include #include "image_tools.h" #include "bitmap_button.h" -@@ -27,7 +28,7 @@ const int TIP_WINDOW_OFFSET_DIP = 30; - class Tooltip::TooltipDlgGenerated : public wxDialog +@@ -28,7 +29,7 @@ class Tooltip::TooltipDlgGenerated : pub { public: -- TooltipDlgGenerated(wxWindow* parent) : wxDialog(parent, wxID_ANY, L"" /*title*/, wxDefaultPosition, wxDefaultSize, 0 /*style*/) -+ TooltipDlgGenerated(wxWindow* parent) : wxDialog(parent, wxID_ANY, L"" /*title*/, wxDefaultPosition, wxDefaultSize, wxFRAME_NO_TASKBAR /*style*/) + TooltipDlgGenerated(wxWindow* parent) : //Suse Linux/X11: needs parent window, else there are z-order issues +- wxDialog(parent, wxID_ANY, L"" /*title*/, wxDefaultPosition, wxDefaultSize, 0 /*style*/) ++ wxDialog(parent, wxID_ANY, L"" /*title*/, wxDefaultPosition, wxDefaultSize, wxFRAME_NO_TASKBAR /*style*/) { - //Suse Linux/X11: needs parent window, else there are z-order issues - + SetSizeHints(wxDefaultSize, wxDefaultSize); + SetExtraStyle(this->GetExtraStyle() | wxWS_EX_TRANSIENT); diff --git a/freefilesync/debian/patches/ffs_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch index 2c7ab23..7601b8a 100644 --- a/freefilesync/debian/patches/ffs_traditional_view.patch +++ b/freefilesync/debian/patches/ffs_traditional_view.patch @@ -1,11 +1,10 @@ -Version: 11.22 -Date: 2022-06-26 +Version: 12.0 +Date: 2023-01-23 Author: bgstack15@gmail.com Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVersion" About dialog -diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.3-1/FreeFileSync/Source/ui/file_grid.cpp ---- 11.21-0/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 17:09:32.242809600 -0400 -+++ 11.21-1/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 20:23:04.015916689 -0400 -@@ -475,8 +475,10 @@ +--- a/FreeFileSync/Source/ui/file_grid.cpp ++++ b/FreeFileSync/Source/ui/file_grid.cpp +@@ -475,8 +475,10 @@ private: case ItemPathFormat::name: return utfTo(fsObj->getItemName()); case ItemPathFormat::relative: @@ -16,7 +15,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. return AFS::getDisplayPath(fsObj->getAbstractPath()); } assert(false); -@@ -529,8 +531,13 @@ +@@ -529,8 +531,13 @@ private: else GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover); @@ -31,7 +30,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); } -@@ -636,6 +643,26 @@ +@@ -636,6 +643,26 @@ private: else //=> BaseFolderPair groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath()); break; @@ -58,7 +57,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. } //path components should follow the app layout direction and are NOT a single piece of text! -@@ -661,11 +688,38 @@ +@@ -661,11 +688,38 @@ private: int groupNameWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + getTextExtentBuffered(dc, groupName).x); const int groupNameMinWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + ellipsisWidth); @@ -74,7 +73,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. int groupItemsWidth = groupSepWidth + (drawFileIcons ? gapSize_ + iconSize : 0) + gapSize_ + groupItemNamesWidth; const int groupItemsMinWidth = groupSepWidth + (drawFileIcons ? gapSize_ + iconSize : 0) + gapSize_ + ellipsisWidth; -+ // start trad patch ++ // start trad patch + + // rearrange this one section + switch (itemPathFormat_) @@ -98,19 +97,19 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. //not enough space? => collapse if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth; excessWidth > 0) -@@ -731,6 +785,11 @@ - } +@@ -732,6 +786,11 @@ private: } } -+ + + // end of original section, and back to the trad patch! + break; + } + // and end the addition for trad patch - ++ return { -@@ -851,6 +910,9 @@ + itemName, +@@ -872,6 +931,9 @@ private: rectGroup = rectGroupParent = rectGroupName = rectTmp; rectGroupParent.width = groupParentWidth; @@ -120,7 +119,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. rectGroupName .width = groupNameWidth; if (stackedGroupRender) -@@ -874,6 +936,11 @@ +@@ -895,6 +957,11 @@ private: rectGroupItems.width = 0; } @@ -132,33 +131,37 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. //------------------------------------------------------------------------- { //clear background below parent path => harmonize with renderRowBackgound() -@@ -884,8 +951,8 @@ +@@ -905,8 +972,9 @@ private: wxRect rectGroupBack = rectGroup; 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; clearArea(dc, rectGroupBack, getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 == 0)); //clearArea() is surprisingly expensive => call just once! -@@ -900,7 +967,8 @@ - rectNav.width = fastFromDIP(20); - - if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line! -- rectNav.height -= fastFromDIP(1); -+ if (itemPathFormat_ != ItemPathFormat::traditional && itemPathFormat_ != ItemPathFormat::tradrel) -+ rectNav.height -= lineWidth; +@@ -914,9 +982,9 @@ private: + //accessibility: always set *both* foreground AND background colors! + } - wxColor backCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); - dc.GetPixel(rectNav.GetTopRight(), &backCol); //e.g. selected row! -@@ -908,13 +976,13 @@ - dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST); - } +- if (!groupParentFolder.empty() && ++ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel || (!groupParentFolder.empty() && + (( stackedGroupRender && row == groupFirstRow + 1) || +- (!stackedGroupRender && row == groupFirstRow)) && ++ (!stackedGroupRender && row == groupFirstRow))) && + (groupName.empty() || !pdi.folderGroupObj->isEmpty())) //don't show for missing folders + { + tryDrawNavMarker(rectGroupParent); +@@ -928,14 +996,14 @@ private: + drawCellText(dc, rectGroupParentText, groupParentFolder, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupParentFolder)); + } -- if (!groupName.empty() && row == groupFirstRow) -+ if (!(itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel) && !groupName.empty() && row == groupFirstRow) +- if (!groupName.empty() && ++ if (!(itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel) && !groupName.empty() && + row == groupFirstRow) { wxRect rectGroupNameBack = rectGroupName; @@ -169,19 +172,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. wxDCTextColourChanger textColorGroupName(dc); //folder background: coordinate with renderRowBackgound() -@@ -947,9 +1015,9 @@ - drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName)); - } - -- if (!groupParentFolder.empty() && -+ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel || (!groupParentFolder.empty() && - (( stackedGroupRender && row == groupFirstRow + 1) || -- (!stackedGroupRender && row == groupFirstRow)) && -+ (!stackedGroupRender && row == groupFirstRow))) && - (groupName.empty() || !pdi.folderGroupObj->isEmpty())) //don't show for missing folders - { - wxRect rectGroupParentText = rectGroupParent; -@@ -969,16 +1037,16 @@ +@@ -979,16 +1047,16 @@ private: rectGroupItems.x += 2 * gapSize_; rectGroupItems.width -= 2 * gapSize_; @@ -201,8 +192,8 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. + rectItemsBack.height -= lineWidth; //preserve item separation lines! drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation()); - -@@ -1105,7 +1173,12 @@ + tryDrawNavMarker(rectGroupItems); +@@ -1119,7 +1187,12 @@ private: groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth); assert(!stackedGroupRender); @@ -216,7 +207,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconSize() : 0; const int ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x; const int itemWidth = itemName.empty() ? 0 : -@@ -1137,6 +1210,10 @@ +@@ -1151,6 +1224,10 @@ private: return _("Relative path"); case ItemPathFormat::full: return _("Full path"); @@ -227,7 +218,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. } assert(false); break; -@@ -1393,7 +1470,8 @@ +@@ -1408,7 +1485,8 @@ private: GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover); //---------------------------------------------------------------------------------- @@ -237,7 +228,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); } -@@ -1417,7 +1495,8 @@ +@@ -1432,7 +1510,8 @@ private: { wxRect rectBack = rect; if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line! @@ -247,10 +238,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectBack, col); } -diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_grid_attr.h 11.2-1-trad3/FreeFileSync/Source/ui/file_grid_attr.h ---- 11.2-1/FreeFileSync/Source/ui/file_grid_attr.h 2020-10-02 14:39:05.313463564 -0400 -+++ 11.2-1-trad3/FreeFileSync/Source/ui/file_grid_attr.h 2020-10-02 20:21:48.863111642 -0400 -@@ -79,6 +79,8 @@ +--- a/FreeFileSync/Source/ui/file_grid_attr.h ++++ b/FreeFileSync/Source/ui/file_grid_attr.h +@@ -79,6 +79,8 @@ enum class ItemPathFormat name, relative, full, @@ -259,10 +249,17 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g }; const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::relative; -diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 11.2-1-trad3/FreeFileSync/Source/ui/main_dlg.cpp ---- 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-10-02 20:49:11.487782099 -0400 -+++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 20:26:31.350461792 -0400 -@@ -2741,6 +2741,8 @@ +--- 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_.welcomeShownVersion != ffsVersion) + { + mainDlg->globalCfg_.welcomeShownVersion = ffsVersion; +- showAboutDialog(mainDlg); + } + + +@@ -2773,6 +2772,8 @@ void MainDialog::onGridLabelContextRim(G addFormatEntry(_("Item name" ), ItemPathFormat::name); addFormatEntry(_("Relative path"), ItemPathFormat::relative); addFormatEntry(_("Full path" ), ItemPathFormat::full); @@ -271,10 +268,9 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_d //---------------------------------------------------------------------------------------------- auto setIconSize = [&](GridIconSize sz, bool showIcons) -diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/config.cpp 11.2-1-trad3/FreeFileSync/Source/config.cpp ---- 11.2-1/FreeFileSync/Source/config.cpp 2020-10-02 14:39:05.233462578 -0400 -+++ 11.2-1-trad3/FreeFileSync/Source/config.cpp 2020-10-02 20:22:24.275555557 -0400 -@@ -528,6 +528,12 @@ +--- a/FreeFileSync/Source/config.cpp ++++ b/FreeFileSync/Source/config.cpp +@@ -494,6 +494,12 @@ void writeText(const ItemPathFormat& val case ItemPathFormat::full: output = "Full"; break; @@ -287,7 +283,7 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/config.cp } } -@@ -541,6 +547,10 @@ +@@ -507,6 +513,10 @@ bool readText(const std::string& input, value = ItemPathFormat::relative; else if (tmp == "Full") value = ItemPathFormat::full; @@ -298,10 +294,9 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/config.cp else return false; return true; -diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_view.cpp 11.2-1-trad3/FreeFileSync/Source/ui/file_view.cpp ---- 11.2-1/FreeFileSync/Source/ui/file_view.cpp 2020-10-02 14:39:05.305463465 -0400 -+++ 11.2-1-trad3/FreeFileSync/Source/ui/file_view.cpp 2020-10-02 20:22:38.439733112 -0400 -@@ -798,11 +798,13 @@ +--- a/FreeFileSync/Source/ui/file_view.cpp ++++ b/FreeFileSync/Source/ui/file_view.cpp +@@ -798,11 +798,13 @@ void FileView::sortView(ColumnTypeRim ty break; case ItemPathFormat::relative: @@ -315,14 +310,3 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_v if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath(folderPairs_)); else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath(folderPairs_)); else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath(folderPairs_)); -diff -aur 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp ---- 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 12:01:15.634291415 -0400 -+++ 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 15:39:46.313320272 -0400 -@@ -436,7 +436,6 @@ - if (mainDlg->globalCfg_.welcomeShownVersion != ffsVersion) - { - mainDlg->globalCfg_.welcomeShownVersion = ffsVersion; -- showAboutDialog(mainDlg); - } - - -- cgit