summaryrefslogtreecommitdiff
path: root/freefilesync/05_traditional_view.patch
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync/05_traditional_view.patch')
-rw-r--r--freefilesync/05_traditional_view.patch328
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);
+ }
+
+
bgstack15