From 63170ecbbfd611384c705efcf3f0aff05c3bc88a Mon Sep 17 00:00:00 2001 From: B Stack Date: Mon, 2 Nov 2020 07:44:37 -0500 Subject: ffs 11.3 dpkg rc1 --- freefilesync/debian/changelog | 18 ++++ freefilesync/debian/freefilesync+devuan.dsc | 2 +- freefilesync/debian/patches/ffs_curl.patch | 20 ++-- freefilesync/debian/patches/ffs_libssh2.patch | 7 +- .../debian/patches/ffs_traditional_view.patch | 118 +++++++++------------ 5 files changed, 85 insertions(+), 80 deletions(-) diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog index 301e624..2e40831 100644 --- a/freefilesync/debian/changelog +++ b/freefilesync/debian/changelog @@ -1,3 +1,21 @@ +freefilesync (11.3-1+devuan) obs; urgency=low + + * Upstream updates + - Enhanced main grid color scheme + - Mouse-highlight for file selection + - Added file create/delete indicators + - Show file list tooltip for missing items + - Click folder name and scroll to group start + - Log failure to create application default config folder + - Added tooltips and fixed help link context menu + - Fixed tooltip not updated when scrolling (macOS, Linux) + - Move error dialogs to foreground during batch sync + - Align context menu popup positions + - Updated translation files + * [bgstack15] update traditional view patch + + -- Ben Stack Mon, 02 Nov 2020 07:44:57 -0500 + freefilesync (11.2-1+devuan) obs; urgency=low * Upstream updates diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc index e5cae56..347d8d8 100644 --- a/freefilesync/debian/freefilesync+devuan.dsc +++ b/freefilesync/debian/freefilesync+devuan.dsc @@ -2,7 +2,7 @@ Format: 3.0 (quilt) Source: freefilesync Binary: freefilesync Architecture: any -Version: 11.2-1+devuan +Version: 11.3-1+devuan Maintainer: B Stack Homepage: https://freefilesync.org/ Standards-Version: 4.1.4 diff --git a/freefilesync/debian/patches/ffs_curl.patch b/freefilesync/debian/patches/ffs_curl.patch index 549d9ac..604ab30 100644 --- a/freefilesync/debian/patches/ffs_curl.patch +++ b/freefilesync/debian/patches/ffs_curl.patch @@ -1,10 +1,10 @@ Source: AUR -Author: Simon Brulhart -Date: 2019-10-20 21:33:47 +0200 +Author: Simon Brulhart, bgstack15 +Date: 2020-11-01 17:22:33 -0500 Message: remove assertion for libcurl version >1.67 (1.66 should be safe but slower) The upstream release uses the curl git master branch instead of release versions. The AUR guy thinks it's acceptable to use the older version of libcurl, that is actually already released. -Version: FreeFileSync 10.17 +Version: FreeFileSync 11.3 diff -r -u 10.17-0/FreeFileSync/Source/afs/ftp.cpp 10.17-1/FreeFileSync/Source/afs/ftp.cpp --- 10.21-0/FreeFileSync/Source/afs/ftp.cpp 2020-03-18 08:56:08.608066350 -0400 +++ 10.21-1/FreeFileSync/Source/afs/ftp.cpp 2020-03-18 09:23:46.882110499 -0400 @@ -17,18 +17,18 @@ diff -r -u 10.17-0/FreeFileSync/Source/afs/ftp.cpp 10.17-1/FreeFileSync/Source/a /* 1. CURLFTPMETHOD_NOCWD requires absolute paths to unconditionally skip CWDs: https://github.com/curl/curl/pull/4382 2. CURLFTPMETHOD_SINGLECWD requires absolute paths to skip one needless "CWD entry path": https://github.com/curl/curl/pull/4332 => https://curl.haxx.se/docs/faq.html#How_do_I_list_the_root_dir_of_an -diff -Naur 10.20-0/libcurl/curl_wrap.h 10.20-1/libcurl/curl_wrap.h ---- 10.21-0/libcurl/curl_wrap.h 2020-03-18 08:56:08.488065042 -0400 -+++ 10.21-1/libcurl/curl_wrap.h 2020-03-18 09:25:52.871480165 -0400 -@@ -137,9 +137,9 @@ +diff -x '*.orig' -x '*.rej' -aur 11.3-0/libcurl/curl_wrap.h 11.3-1/libcurl/curl_wrap.h +--- 11.3-0/libcurl/curl_wrap.h 2020-11-01 17:14:27.183497417 -0500 ++++ 11.3-1/libcurl/curl_wrap.h 2020-11-01 17:21:38.883967113 -0500 +@@ -137,10 +137,7 @@ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_AUTH_ERROR); ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_HTTP3); ZEN_CHECK_CASE_FOR_CONSTANT(CURL_LAST); - ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_QUIC_CONNECT_ERROR); -+ //ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_QUIC_CONNECT_ERROR); +- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PROXY); } -- static_assert(CURL_LAST == CURLE_QUIC_CONNECT_ERROR + 1); -+ //static_assert(CURL_LAST == CURLE_QUIC_CONNECT_ERROR + 1); +- static_assert(CURL_LAST == CURLE_PROXY + 1); return replaceCpy(L"Curl status %x", L"%x", numberTo(static_cast(sc))); } + diff --git a/freefilesync/debian/patches/ffs_libssh2.patch b/freefilesync/debian/patches/ffs_libssh2.patch index d5ca14e..022914b 100644 --- a/freefilesync/debian/patches/ffs_libssh2.patch +++ b/freefilesync/debian/patches/ffs_libssh2.patch @@ -9,8 +9,8 @@ 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 ---- 10.21-0/libssh2/libssh2_wrap.h 2020-03-18 08:56:08.500065173 -0400 -+++ 10.21-1/libssh2/libssh2_wrap.h 2020-03-18 09:11:49.398311857 -0400 +--- 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 @@ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_ENCRYPT); ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_BAD_SOCKET); @@ -20,5 +20,6 @@ Date: 2019-09-17T13:41:23Z + //ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_CHANNEL_WINDOW_FULL); + //ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_KEYFILE_AUTH_FAILED); - default: + default: return replaceCpy(L"SSH status %x", L"%x", numberTo(sc)); + diff --git a/freefilesync/debian/patches/ffs_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch index 173842f..ff78325 100644 --- a/freefilesync/debian/patches/ffs_traditional_view.patch +++ b/freefilesync/debian/patches/ffs_traditional_view.patch @@ -1,7 +1,11 @@ -diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_grid.cpp 11.2-1-trad3/FreeFileSync/Source/ui/file_grid.cpp ---- 11.2-1/FreeFileSync/Source/ui/file_grid.cpp 2020-10-02 14:39:05.289463269 -0400 -+++ 11.2-1-trad3/FreeFileSync/Source/ui/file_grid.cpp 2020-10-02 20:48:25.047194116 -0400 -@@ -446,8 +446,10 @@ +Version: 11.3 +Date: 2020-11-01 +Author: bgstack15@gmail.com +Message: restore a traditional view to FreeFileSync +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.3-0/FreeFileSync/Source/ui/file_grid.cpp 2020-11-01 17:14:27.531500950 -0500 ++++ 11.3-1/FreeFileSync/Source/ui/file_grid.cpp 2020-11-01 22:52:14.590746142 -0500 +@@ -493,8 +493,10 @@ case ItemPathFormat::name: return utfTo(fsObj->getItemName()); case ItemPathFormat::relative: @@ -12,20 +16,11 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g return AFS::getDisplayPath(fsObj->getAbstractPath()); } assert(false); -@@ -529,7 +531,8 @@ - //---------------------------------------------------------------------------------- - wxDCPenChanger dummy(dc, wxPen(row == pdi.groupLastRow - 1 /*last group item*/ ? - getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0), fastFromDIP(1))); -- dc.DrawLine(rect.GetBottomLeft(), rect.GetBottomRight() + wxPoint(1, 0)); -+ if (itemPathFormat_ != ItemPathFormat::traditional && itemPathFormat_ != ItemPathFormat::tradrel) -+ dc.DrawLine(rect.GetBottomLeft(), rect.GetBottomRight() + wxPoint(1, 0)); - } - - -@@ -628,6 +631,24 @@ +@@ -654,6 +656,27 @@ else //=> BaseFolderPair groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath()); break; ++ + case ItemPathFormat::traditional: + if (auto groupFolder = dynamic_cast(pdi.folderGroupObj)) + { @@ -36,6 +31,7 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g + else //=> BaseFolderPair + groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath()); + break; ++ + case ItemPathFormat::tradrel: + if (pdi.folderGroupObj) + { @@ -44,25 +40,26 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g + utfTo(pdi.folderGroupObj ->template getItemName()); + } + break; ++ } //path components should follow the app layout direction and are NOT a single piece of text! -@@ -655,6 +676,31 @@ - int widthGroupName = groupName .empty() ? 0 : (iconSize + gridGap_ + getTextExtentBuffered(dc, groupName).x + 2 * gridGap_); - int widthGroupItems = widthGroupSep + (drawFileIcons ? iconSize + gridGap_ : 0) + groupItemNamesWidth; +@@ -684,6 +707,31 @@ + 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 + -+ //add slashes for better readability -+ assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\')); -+ const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); ++ // rearrange this one section ++ //add slashes for better readability + a wide gap for disambiguation ++ assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\')); ++ const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); + + switch (itemPathFormat_) + { + case ItemPathFormat::traditional: + case ItemPathFormat::tradrel: -+ widthGroupParent -= widthGroupName - getTextExtentBuffered(dc, utfTo(FILE_NAME_SEPARATOR)).x; -+ ++ groupParentWidth -= groupNameWidth - getTextExtentBuffered(dc, utfTo(FILE_NAME_SEPARATOR)).x; + if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/ + !endsWith(groupParentFolder, L'\\') && /*e.g. C:\ */ + groupParentFolder.size() > 0 ) @@ -77,83 +74,72 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g + // but with the "add slashes" paragraph 1 moved to above this switch statement! + //not enough space? => collapse - if (int excessWidth = gridGap_ + widthGroupParent + widthGroupName + widthGroupItems - maxWidth; + if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth; excessWidth > 0) -@@ -664,10 +710,6 @@ +@@ -693,10 +741,6 @@ //1. render group components on two rows stackedGroupRender = true; -- //add slashes for better readability +- //add slashes for better readability + a wide gap for disambiguation - assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\')); - const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); - if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/ !endsWith(groupParentFolder, L'\\')) /*e.g. C:\ */ groupParentFolder += groupParentSep; -@@ -725,6 +767,11 @@ +@@ -755,6 +799,11 @@ + } } } - ++ + // end of original section, and back to the trad patch! + break; + } + // and end the addition for trad patch -+ + return { - itemName, -@@ -793,6 +840,9 @@ +@@ -873,6 +922,9 @@ rectGroup = rectGroupParent = rectGroupName = rectTmp; - rectGroupParent.width = widthGroupParent; + rectGroupParent.width = groupParentWidth; + // re-add back the width of groupname so that the directory name is clickable + if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel) -+ rectGroupParent.width += widthGroupName; - rectGroupName .width = widthGroupName; ++ rectGroupParent.width += groupNameWidth; + rectGroupName .width = groupNameWidth; if (stackedGroupRender) -@@ -829,7 +879,8 @@ - if (row == pdi.groupLastRow - 1 /*last group item*/) //restore the group separation line we just cleared - { - wxDCPenChanger dummy(dc, wxPen(getColorGridLine(), fastFromDIP(1))); -- dc.DrawLine(rectGroup.GetBottomLeft(), rectGroup.GetBottomRight() + wxPoint(1, 0)); -+ if (itemPathFormat_ != ItemPathFormat::traditional && itemPathFormat_ != ItemPathFormat::tradrel) -+ dc.DrawLine(rectGroup.GetBottomLeft(), rectGroup.GetBottomRight() + wxPoint(1, 0)); - } - } +@@ -922,6 +974,7 @@ + rectNav.width = fastFromDIP(20); -@@ -844,7 +895,7 @@ - dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST); - } + if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line! ++ if (itemPathFormat_ != ItemPathFormat::traditional && itemPathFormat_ != ItemPathFormat::tradrel) + rectNav.height -= fastFromDIP(1); + + wxColor backCol = *wxWHITE; +@@ -930,7 +983,7 @@ + dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST); + } - if (!groupName.empty() && row == groupFirstRow) + if (!(itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel) && !groupName.empty() && row == groupFirstRow) { - wxDCTextColourChanger textColorGroupName(dc); - if (static_cast(rowHover) == HoverAreaGroup::groupName) -@@ -865,9 +916,9 @@ - drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName)); + wxRect rectGroupNameBack = rectGroupName; + rectGroupNameBack.width += 2 * gapSize_; //include gap left of vline +@@ -972,10 +1025,10 @@ + 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)))) + (!stackedGroupRender && row == groupFirstRow)) && +- (groupName.empty() || !pdi.folderGroupObj->isEmpty())) ++ (groupName.empty() || !pdi.folderGroupObj->isEmpty()))) { - drawCellText(dc, rectGroupParent, groupParentFolder, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupParentFolder)); - } -@@ -876,7 +927,8 @@ - if (!groupParentFolder.empty() || !groupName.empty()) - { - wxDCPenChanger dummy(dc, wxPen(getColorGridLine(), fastFromDIP(1))); -- dc.DrawLine(rectGroupItems.GetTopLeft(), rectGroupItems.GetBottomLeft() + wxPoint(0, 1)); //draws half-open range! -+ if (itemPathFormat_ != ItemPathFormat::traditional && itemPathFormat_ != ItemPathFormat::tradrel) -+ dc.DrawLine(rectGroupItems.GetTopLeft(), rectGroupItems.GetBottomLeft() + wxPoint(0, 1)); //draws half-open range! - rectGroupItems.x += fastFromDIP(1) + gridGap_; - rectGroupItems.width -= fastFromDIP(1) + gridGap_; - } -@@ -1040,6 +1092,10 @@ + wxRect rectGroupParentText = rectGroupParent; + rectGroupParentText.x += gapSize_; +@@ -1166,6 +1219,10 @@ return _("Relative path"); case ItemPathFormat::full: return _("Full path"); -- cgit