diff options
Diffstat (limited to 'freefilesync/05_traditional_view.patch')
-rw-r--r-- | freefilesync/05_traditional_view.patch | 328 |
1 files changed, 328 insertions, 0 deletions
diff --git a/freefilesync/05_traditional_view.patch b/freefilesync/05_traditional_view.patch new file mode 100644 index 0000000..2c7ab23 --- /dev/null +++ b/freefilesync/05_traditional_view.patch @@ -0,0 +1,328 @@ +Version: 11.22 +Date: 2022-06-26 +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 @@ + case ItemPathFormat::name: + return utfTo<std::wstring>(fsObj->getItemName<side>()); + case ItemPathFormat::relative: ++ case ItemPathFormat::tradrel: + return utfTo<std::wstring>(fsObj->getRelativePath<side>()); + case ItemPathFormat::full: ++ case ItemPathFormat::traditional: + return AFS::getDisplayPath(fsObj->getAbstractPath<side>()); + } + assert(false); +@@ -529,8 +531,13 @@ + 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) } ; ++ 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); + clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? + getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); + } +@@ -636,6 +643,26 @@ + else //=> BaseFolderPair + groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>()); + break; ++ ++ case ItemPathFormat::traditional: ++ if (auto groupFolder = dynamic_cast<const FolderPair*>(pdi.folderGroupObj)) ++ { ++ groupName = utfTo<std::wstring>(groupFolder->template getItemName<side>()); ++ groupParentFolder = AFS::getDisplayPath(groupFolder->parent().template getAbstractPath<side>()) + \ ++ FILE_NAME_SEPARATOR + utfTo<std::wstring>(groupFolder->template getItemName<side>()); ++ } ++ else //=> BaseFolderPair ++ groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>()); ++ break; ++ ++ case ItemPathFormat::tradrel: ++ if (pdi.folderGroupObj) ++ { ++ groupName = utfTo<std::wstring>(pdi.folderGroupObj->template getItemName <side>()); ++ groupParentFolder = utfTo<std::wstring>(pdi.folderGroupObj->template getRelativePath<side>()); ++ } ++ break; ++ + } + + //path components should follow the app layout direction and are NOT a single piece of text! +@@ -661,11 +688,38 @@ + 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)); ++ // trad patch section for removing lines around items in grid ++ // code duplication because this is a different scope! ++ int lineWidth { fastFromDIP(1) } ; ++ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel) ++ lineWidth = 0; ++ ++ const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + lineWidth); + + int groupItemsWidth = groupSepWidth + (drawFileIcons ? gapSize_ + iconSize : 0) + gapSize_ + groupItemNamesWidth; + const int groupItemsMinWidth = groupSepWidth + (drawFileIcons ? gapSize_ + iconSize : 0) + gapSize_ + ellipsisWidth; + ++ // start trad patch ++ ++ // rearrange this one section ++ switch (itemPathFormat_) ++ { ++ case ItemPathFormat::traditional: ++ case ItemPathFormat::tradrel: ++ groupParentWidth -= groupNameWidth - getTextExtentBuffered(dc, utfTo<std::wstring>(FILE_NAME_SEPARATOR)).x; ++ if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/ ++ !endsWith(groupParentFolder, L'\\') && /*e.g. C:\ */ ++ groupParentFolder.size() > 0 ) ++ groupParentFolder += contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); ++ break; ++ case ItemPathFormat::name: ++ case ItemPathFormat::relative: ++ case ItemPathFormat::full: ++ default: ++ // the insane logic of the new views ++ // but preserve the original tabbing, to make the patch easier. ++ // but with the "add slashes" paragraph 1 moved to above this switch statement! ++ + //not enough space? => collapse + if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth; + excessWidth > 0) +@@ -731,6 +785,11 @@ + } + } + } ++ ++ // end of original section, and back to the trad patch! ++ break; ++ } ++ // and end the addition for trad patch + + return + { +@@ -851,6 +910,9 @@ + rectGroup = rectGroupParent = rectGroupName = rectTmp; + + 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 += groupNameWidth; + rectGroupName .width = groupNameWidth; + + if (stackedGroupRender) +@@ -874,6 +936,11 @@ + rectGroupItems.width = 0; + } + ++ // trad patch section for removing lines around items in grid ++ int lineWidth { fastFromDIP(1) } ; ++ if (itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel) ++ lineWidth = 0; ++ + //------------------------------------------------------------------------- + { + //clear background below parent path => harmonize with renderRowBackgound() +@@ -884,8 +951,8 @@ + 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! ++ 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; + + 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 (!groupName.empty() && row == groupFirstRow) ++ if (!(itemPathFormat_ == ItemPathFormat::traditional || itemPathFormat_ == ItemPathFormat::tradrel) && !groupName.empty() && 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() +@@ -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<side>())) //don't show for missing folders + { + wxRect rectGroupParentText = rectGroupParent; +@@ -969,16 +1037,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)); //draws half-open range! + +- 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()); + +@@ -1105,7 +1173,12 @@ + groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth); + assert(!stackedGroupRender); + +- const int groupSepWidth = (groupParentFolder.empty() && groupName.empty()) ? 0 : (2 * gapSize_ + fastFromDIP(1)); ++ // trad patch section for removing lines around items in grid ++ int lineWidth { fastFromDIP(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 ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x; + const int itemWidth = itemName.empty() ? 0 : +@@ -1137,6 +1210,10 @@ + return _("Relative path"); + case ItemPathFormat::full: + return _("Full path"); ++ case ItemPathFormat::traditional: ++ return _("Traditional"); ++ case ItemPathFormat::tradrel: ++ return _("Trad. relative"); + } + assert(false); + break; +@@ -1393,7 +1470,8 @@ + 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); + clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? + getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); + } +@@ -1417,7 +1495,8 @@ + { + 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; + + 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 @@ + name, + relative, + full, ++ traditional, ++ tradrel, + }; + + 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 @@ + addFormatEntry(_("Item name" ), ItemPathFormat::name); + addFormatEntry(_("Relative path"), ItemPathFormat::relative); + addFormatEntry(_("Full path" ), ItemPathFormat::full); ++ addFormatEntry(_("Traditional" ), ItemPathFormat::traditional); ++ addFormatEntry(_("Trad. relative"),ItemPathFormat::tradrel); + + //---------------------------------------------------------------------------------------------- + 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 @@ + case ItemPathFormat::full: + output = "Full"; + break; ++ case ItemPathFormat::traditional: ++ output = "Traditional"; ++ break; ++ case ItemPathFormat::tradrel: ++ output = "Trad. relative"; ++ break; + } + } + +@@ -541,6 +547,10 @@ + value = ItemPathFormat::relative; + else if (tmp == "Full") + value = ItemPathFormat::full; ++ else if (tmp == "Traditional") ++ value = ItemPathFormat::traditional; ++ else if (tmp == "Trad. relative") ++ value = ItemPathFormat::tradrel; + 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 @@ + break; + + case ItemPathFormat::relative: ++ case ItemPathFormat::tradrel: + if ( ascending) std::sort(sortedRef_.begin(), sortedRef_.end(), LessRelativeFolder<true >(folderPairs_)); + else if (!ascending) std::sort(sortedRef_.begin(), sortedRef_.end(), LessRelativeFolder<false>(folderPairs_)); + break; + + case ItemPathFormat::full: ++ case ItemPathFormat::traditional: + if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::left>(folderPairs_)); + else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::right>(folderPairs_)); + else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<false, SelectSide::left>(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); + } + + |