summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--freefilesync/README-freefilesync.md25
-rw-r--r--freefilesync/README.md30
-rw-r--r--freefilesync/debian/changelog8
-rw-r--r--freefilesync/debian/freefilesync+devuan.dsc2
-rw-r--r--freefilesync/debian/patches/ffs_traditional_view.patch144
-rw-r--r--freefilesync/ffs_traditional_view.patch144
-rw-r--r--freefilesync/freefilesync.spec5
-rwxr-xr-xublock-origin-combined/build-orig-tarball.sh94
-rw-r--r--ublock-origin-combined/debian/changelog6
-rwxr-xr-xublock-origin-combined/deploy-to-obs.sh34
-rw-r--r--ublock-origin-combined/ublock-origin-combined.spec5
12 files changed, 437 insertions, 61 deletions
diff --git a/.gitignore b/.gitignore
index 8fbac72..2e31b61 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
/*.t?z
/*.sig
/*.asc
+*.tar.?z
diff --git a/freefilesync/README-freefilesync.md b/freefilesync/README-freefilesync.md
deleted file mode 100644
index 02d0505..0000000
--- a/freefilesync/README-freefilesync.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Summary for CentOS 7 compilation of freefilesync
-
-### Dependencies to build FreeFileSync on CentOS 7
-All of the packages in the next section, and also
-* devtoolset-7 [Software Collections (SCL)][3]
-* custom patches provided in this repo.
-
-### Sources of the bgstack15/FreeFileSync copr packages
-Custom packages:
-* openssl: [bgstack15][1]
-* libssh2: [city-fan][2]
-* curl: city-fan
-* libmetalink: city-fan
-* libpsl: city-fan
-
-# Credits
-This package, freefilesync, is made possible by the concerted efforts of many people and groups
-* Zenju, author of the upstream project [FreeFileSync](http://freefilesync.org)
-* [PhantomX](https://github.com/PhantomX/)/chinforpms [freefilesync spec](https://github.com/PhantomX/chinforpms/tree/master/freefilesync)
-* My [original freefilesync spec](https://gitlab.com/bgstack15/freefilesync-rpm/)
-
-# References
-[1][https://bgstack15.wordpress.com]
-[2][http://www.city-fan.org/ftp/contrib/yum-repo/]
-[3][https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/]
diff --git a/freefilesync/README.md b/freefilesync/README.md
index 1e0b276..4075b91 100644
--- a/freefilesync/README.md
+++ b/freefilesync/README.md
@@ -10,7 +10,7 @@ Fedora, CentOS, and Devuan do not package FreeFileSync. I maintained a separate
## Alternatives
* rsync traditional cli sync utility
-* grsync gtk frotend for rsync
+* grsync gtk frontend for rsync
* duplicati sync with cloud storage offerings
* rclone another cloud storage sync utility
@@ -26,6 +26,34 @@ Devuan Ceres | 11.3 | 3
## Additional info
Upstream officially still [uses gtk2](https://freefilesync.org/forum/viewtopic.php?t=7660&p=26079#p26063) but the code supports gtk3 starting around version 10.25. With version 10.25, only stdc++=20 is supported, so el7 cannot go any higher: I was unable to find g++-10 for el7.
+On the rpm platforms, where gtk2 is still supported as a primary environment, I compile FreeFileSync against gtk2. On Devuan where gtk2 has been obsoleted, I compile against gtk3.
+
+
+## CentOS compilation of freefilesync
+
+### Dependencies to build FreeFileSync on CentOS 7
+All of the packages in the next section, and also
+* devtoolset-7 [Software Collections (SCL)][3]
+* custom patches provided in this repo.
+
+### Sources of the bgstack15/FreeFileSync copr packages
+Custom packages:
+* openssl: [bgstack15][1]
+* libssh2: [city-fan][2]
+* curl: city-fan
+* libmetalink: city-fan
+* libpsl: city-fan
+
+### Credits
+This package, freefilesync, is made possible by the concerted efforts of many people and groups
+* Zenju, author of the upstream project [FreeFileSync](http://freefilesync.org)
+* [PhantomX](https://github.com/PhantomX/)/chinforpms [freefilesync spec](https://github.com/PhantomX/chinforpms/tree/master/freefilesync)
+* My [original freefilesync spec](https://gitlab.com/bgstack15/freefilesync-rpm/)
+
+### References
+[1][https://bgstack15.wordpress.com]
+[2][http://www.city-fan.org/ftp/contrib/yum-repo/]
+[3][https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/]
## Differences from upstream
None
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 2e40831..dfbe0e2 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,11 @@
+freefilesync (11.3-2+devuan) obs; urgency=medium
+
+ * [bgstack15] completely fix traditional view patch
+ - remove all small gridlines
+ - fix Trad. Rel view with valid relative path names
+
+ -- Ben Stack <bgstack15@gmail.com> Thu, 05 Nov 2020 13:09:27 -0500
+
freefilesync (11.3-1+devuan) obs; urgency=low
* Upstream updates
diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc
index 347d8d8..ede807f 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.3-1+devuan
+Version: 11.3-2+devuan
Maintainer: B Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
diff --git a/freefilesync/debian/patches/ffs_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch
index ff78325..f627a0a 100644
--- a/freefilesync/debian/patches/ffs_traditional_view.patch
+++ b/freefilesync/debian/patches/ffs_traditional_view.patch
@@ -1,10 +1,11 @@
Version: 11.3
-Date: 2020-11-01
+Date: 2020-11-05
Author: bgstack15@gmail.com
Message: restore a traditional view to FreeFileSync
+The Nov 5 patch removes the lines between groups, and also fixes the relative paths in "Trad. Rel" view.
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
+--- 11.3-1/FreeFileSync/Source/ui/file_grid.cpp 2020-11-02 11:38:14.806496077 -0500
++++ 11.3-2/FreeFileSync/Source/ui/file_grid.cpp 2020-11-05 11:11:46.146360956 -0500
@@ -493,8 +493,10 @@
case ItemPathFormat::name:
return utfTo<std::wstring>(fsObj->getItemName<side>());
@@ -16,7 +17,22 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return AFS::getDisplayPath(fsObj->getAbstractPath<side>());
}
assert(false);
-@@ -654,6 +656,27 @@
+@@ -547,8 +549,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));
+ }
+@@ -654,6 +661,26 @@
else //=> BaseFolderPair
groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>());
break;
@@ -35,16 +51,27 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
+ case ItemPathFormat::tradrel:
+ if (pdi.folderGroupObj)
+ {
-+ groupName = utfTo<std::wstring>(pdi.folderGroupObj ->template getItemName <side>());
-+ groupParentFolder = utfTo<std::wstring>(pdi.folderGroupObj->parent().template getRelativePath<side>()) + \
-+ utfTo<std::wstring>(pdi.folderGroupObj ->template getItemName<side>());
++ 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!
-@@ -684,6 +707,31 @@
+@@ -679,11 +706,42 @@
+ 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;
@@ -76,7 +103,7 @@ 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)
-@@ -693,10 +741,6 @@
+@@ -693,10 +751,6 @@
//1. render group components on two rows
stackedGroupRender = true;
@@ -87,7 +114,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/
!endsWith(groupParentFolder, L'\\')) /*e.g. C:\ */
groupParentFolder += groupParentSep;
-@@ -755,6 +799,11 @@
+@@ -755,6 +809,11 @@
}
}
}
@@ -99,7 +126,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return
{
-@@ -873,6 +922,9 @@
+@@ -873,6 +932,9 @@
rectGroup = rectGroupParent = rectGroupName = rectTmp;
rectGroupParent.width = groupParentWidth;
@@ -109,15 +136,40 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
rectGroupName .width = groupNameWidth;
if (stackedGroupRender)
-@@ -922,6 +974,7 @@
+@@ -896,6 +958,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()
+@@ -906,8 +973,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!
+@@ -922,7 +989,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 -= fastFromDIP(1);
++ rectNav.height -= lineWidth;
wxColor backCol = *wxWHITE;
-@@ -930,7 +983,7 @@
+ dc.GetPixel(rectNav.GetTopRight(), &backCol); //e.g. selected row!
+@@ -930,11 +998,11 @@
dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST);
}
@@ -126,7 +178,12 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
{
wxRect rectGroupNameBack = rectGroupName;
rectGroupNameBack.width += 2 * gapSize_; //include gap left of vline
-@@ -972,10 +1025,10 @@
+- rectGroupNameBack.height -= fastFromDIP(1); //harmonize with item separation lines
++ rectGroupNameBack.height -= lineWidth; //harmonize with item separation lines
+
+ //mouse highlight: group name
+ wxDCTextColourChanger textColorGroupName(dc);
+@@ -972,10 +1040,10 @@
drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName));
}
@@ -139,7 +196,42 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
{
wxRect rectGroupParentText = rectGroupParent;
rectGroupParentText.x += gapSize_;
-@@ -1166,6 +1219,10 @@
+@@ -994,16 +1062,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!
+
+ //mouse highlight: item name
+ wxDCTextColourChanger textColorGroupItems(dc);
+@@ -1134,7 +1202,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 :
+@@ -1166,6 +1239,10 @@
return _("Relative path");
case ItemPathFormat::full:
return _("Full path");
@@ -150,6 +242,26 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
}
assert(false);
break;
+@@ -1423,7 +1500,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));
+ }
+@@ -1447,7 +1525,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
diff --git a/freefilesync/ffs_traditional_view.patch b/freefilesync/ffs_traditional_view.patch
index ff78325..f627a0a 100644
--- a/freefilesync/ffs_traditional_view.patch
+++ b/freefilesync/ffs_traditional_view.patch
@@ -1,10 +1,11 @@
Version: 11.3
-Date: 2020-11-01
+Date: 2020-11-05
Author: bgstack15@gmail.com
Message: restore a traditional view to FreeFileSync
+The Nov 5 patch removes the lines between groups, and also fixes the relative paths in "Trad. Rel" view.
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
+--- 11.3-1/FreeFileSync/Source/ui/file_grid.cpp 2020-11-02 11:38:14.806496077 -0500
++++ 11.3-2/FreeFileSync/Source/ui/file_grid.cpp 2020-11-05 11:11:46.146360956 -0500
@@ -493,8 +493,10 @@
case ItemPathFormat::name:
return utfTo<std::wstring>(fsObj->getItemName<side>());
@@ -16,7 +17,22 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return AFS::getDisplayPath(fsObj->getAbstractPath<side>());
}
assert(false);
-@@ -654,6 +656,27 @@
+@@ -547,8 +549,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));
+ }
+@@ -654,6 +661,26 @@
else //=> BaseFolderPair
groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>());
break;
@@ -35,16 +51,27 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
+ case ItemPathFormat::tradrel:
+ if (pdi.folderGroupObj)
+ {
-+ groupName = utfTo<std::wstring>(pdi.folderGroupObj ->template getItemName <side>());
-+ groupParentFolder = utfTo<std::wstring>(pdi.folderGroupObj->parent().template getRelativePath<side>()) + \
-+ utfTo<std::wstring>(pdi.folderGroupObj ->template getItemName<side>());
++ 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!
-@@ -684,6 +707,31 @@
+@@ -679,11 +706,42 @@
+ 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;
@@ -76,7 +103,7 @@ 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)
-@@ -693,10 +741,6 @@
+@@ -693,10 +751,6 @@
//1. render group components on two rows
stackedGroupRender = true;
@@ -87,7 +114,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/
!endsWith(groupParentFolder, L'\\')) /*e.g. C:\ */
groupParentFolder += groupParentSep;
-@@ -755,6 +799,11 @@
+@@ -755,6 +809,11 @@
}
}
}
@@ -99,7 +126,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
return
{
-@@ -873,6 +922,9 @@
+@@ -873,6 +932,9 @@
rectGroup = rectGroupParent = rectGroupName = rectTmp;
rectGroupParent.width = groupParentWidth;
@@ -109,15 +136,40 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
rectGroupName .width = groupNameWidth;
if (stackedGroupRender)
-@@ -922,6 +974,7 @@
+@@ -896,6 +958,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()
+@@ -906,8 +973,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!
+@@ -922,7 +989,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 -= fastFromDIP(1);
++ rectNav.height -= lineWidth;
wxColor backCol = *wxWHITE;
-@@ -930,7 +983,7 @@
+ dc.GetPixel(rectNav.GetTopRight(), &backCol); //e.g. selected row!
+@@ -930,11 +998,11 @@
dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST);
}
@@ -126,7 +178,12 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
{
wxRect rectGroupNameBack = rectGroupName;
rectGroupNameBack.width += 2 * gapSize_; //include gap left of vline
-@@ -972,10 +1025,10 @@
+- rectGroupNameBack.height -= fastFromDIP(1); //harmonize with item separation lines
++ rectGroupNameBack.height -= lineWidth; //harmonize with item separation lines
+
+ //mouse highlight: group name
+ wxDCTextColourChanger textColorGroupName(dc);
+@@ -972,10 +1040,10 @@
drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName));
}
@@ -139,7 +196,42 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
{
wxRect rectGroupParentText = rectGroupParent;
rectGroupParentText.x += gapSize_;
-@@ -1166,6 +1219,10 @@
+@@ -994,16 +1062,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!
+
+ //mouse highlight: item name
+ wxDCTextColourChanger textColorGroupItems(dc);
+@@ -1134,7 +1202,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 :
+@@ -1166,6 +1239,10 @@
return _("Relative path");
case ItemPathFormat::full:
return _("Full path");
@@ -150,6 +242,26 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.
}
assert(false);
break;
+@@ -1423,7 +1500,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));
+ }
+@@ -1447,7 +1525,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
diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec
index c5bc731..b7e58b1 100644
--- a/freefilesync/freefilesync.spec
+++ b/freefilesync/freefilesync.spec
@@ -20,7 +20,7 @@
%endif
Name: freefilesync
Version: 11.3
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A file synchronization utility
Group: Applications/File
@@ -207,6 +207,9 @@ update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & :
%ghost %config %attr(666, -, -) %{_datadir}/%{name}/GlobalSettings.xml
%changelog
+* Thu Nov 05 2020 B Stack <bgstack15@gmail.com> - 11.3-2
+- fully fix the trad patch
+
* Mon Nov 02 2020 B Stack <bgstack15@gmail.com> - 11.3-1
- version bump
diff --git a/ublock-origin-combined/build-orig-tarball.sh b/ublock-origin-combined/build-orig-tarball.sh
new file mode 100755
index 0000000..e804468
--- /dev/null
+++ b/ublock-origin-combined/build-orig-tarball.sh
@@ -0,0 +1,94 @@
+#!/bin/sh
+# Package: libreoffice-tango-iconset
+# Startdate: 2020-11-04 14:05
+# References:
+# libreoffice-tango-iconset/build-orig-tarball.sh
+# Dependencies:
+# sudo apt-get install wget curl sed awk
+
+currdir="${PWD}"
+tmpfile1="$( mktemp )"
+#frontpageurl="https://extensions.libreoffice.org/en/extensions/show/tango-icon-theme-for-libreoffice"
+#domain="$( echo "${frontpageurl}" | awk -F'/' 'BEGIN{OFS="/"} {print $1,$2,$3}' )"
+package_name="ublock-origin-combined"
+
+# FUNCTIONS
+ferror() {
+ printf "%s\n" "$@" 1>&2
+}
+
+get() {
+ # get "https://example.com/example.zip"
+ # get "https://example.com/example.zip" "outputname.zip"
+ ___get_url="${1}"
+ ___get_outfile="${2}"
+ ___wget_options=""
+ test -n "${___get_outfile}" && ___wget_options="-O ${___get_outfile}"
+
+ test -n "${DEBUG}" && ferror "wget --quiet --content-disposition \"${___get_url}\" ${___wget_options}"
+ test -z "${DRYRUN}" && wget --quiet --content-disposition "${___get_url}" ${___wget_options}
+}
+
+to_filename() {
+ # call: to_filename "https://example.com/filename.ext"
+ # returns: "filename.ext"
+ printf "${1##*/}"
+}
+
+show_latest_tarball_for_github_repo() {
+ # call: show_latest_tarball_for_github_repo "https://github.com/gorhill/uBlock-for-firefox-legacy"
+ # returns: "https://github.com/gorhill/uBlock-for-firefox-legacy/archive/firefox-legacy-1.16.4.26.tar.gz"
+ # Improve: accept archive type, such as .tar.gz or .zip, to return
+ # And yes, I know this parses html with awk. Get over it.
+ # Works, but unused as of 2020-11-04
+ ___repo="${1}"
+ _page="$( curl -s "${___repo}/tags" )"
+ # tail grabs the highest number, so most recent available tarball from the page
+ echo "${_page}" | grep -oE "href=[\"'][^\"']+archive[^\"']+tar\.gz\"" | sed -r -e 's/^href=.//;' -e 's/"$//;' | sort -n | uniq | tail -n1 | sed -r -e "s/^/https:\/\/github.com/;"
+}
+
+show_xpi_for_latest_tag() {
+ # call: fetch_xpi_for_latest_tag "https://github.com/gorhill/uBlock-for-firefox-legacy"
+ # returns: "https://github.com/gorhill/uBlock-for-firefox-legacy/releases/download/firefox-legacy-1.16.4.26/uBlock0_1.16.4.26.firefox-legacy.xpi"
+ # How it works:
+ # 1. visit list of tags
+ # 2. visit highest sorted tag (can only see page one of github results)
+ # 3. visit that tag page, and find assets section and then find .xpi file. So this is hard-coded for exactly one xpi file.
+ ___repo="${1}"
+ _page1="$( curl -s "${___repo}/tags" )"
+ _url2="https://github.com$( echo "${_page1}" | grep -oE 'href=[^>]+\/tag\/[^>]+' | sort -n | tail -n1 | sed -r -e "s/^href=[\"']?//;" -e 's/"$//;' )"
+ _page2="$( curl -s "${_url2}" )"
+ #echo "${_page2}"
+ _asset="https://github.com$( echo "${_page2}" | sed -n '/Assets/,$p' ~/foo2 | grep -oE "href=.*\.xpi" | sed -r -e "s/^href=[\"']?//;" )"
+ echo "${_asset}"
+}
+
+### Flow
+
+# check dependencies
+#which jq 1>/dev/null 2>&1 || { echo "Please install jq! Aborted." ; exit 1; }
+
+## 1. learn latest version file
+#url_contents="$( curl -s "${frontpageurl}" )"
+#latest_file="$( echo "${url_contents}" | awk -F'[=>]' '/class="btn".*>Download</{print $4}' | sed -r -e 's/^"//g;' -e 's/"$//g;' | head -n1 )"
+latest_file="$( show_xpi_for_latest_tag "https://github.com/gorhill/uBlock-origin-for-firefox-legacy" )"
+latest_version="$( basename "${latest_file}" | grep -oE '_[0-9\.]+' | sed -r -e 's/^_//;' -e 's/\.$//;' )"
+
+## 2. dl it
+get "${latest_file}" "uBlock0.firefox-legacy.xpi"
+
+## 5. assemble orig tarball
+test -n "${DEBUG}" && ferror "mkdir -p \"${package_name}-${latest_version}\""
+test -z "${DRYRUN}" && { mkdir -p "${package_name}-${latest_version}" ; cd "${package_name}-${latest_version}" ; }
+
+test -n "${DEBUG}" && ferror "mv ../\"uBlock0.firefox-legacy.xpi\" ."
+test -z "${DRYRUN}" && mv ../"uBlock0.firefox-legacy.xpi" .
+
+test -n "${DEBUG}" && ferror "cd .."
+test -z "${DRYRUN}" && cd ..
+
+test -n "${DEBUG}" && ferror "tar -zcf \"${package_name}_${latest_version}.orig.tar.gz\" \"${package_name}-${latest_version}\""
+test -z "${DRYRUN}" && tar -zcf "${package_name}_${latest_version}.orig.tar.gz" "${package_name}-${latest_version}"
+
+# CLEAN UP
+rm -rf "${package_name}-${latest_version}/" "${tmpfile1}"
diff --git a/ublock-origin-combined/debian/changelog b/ublock-origin-combined/debian/changelog
index 483fcf9..9067709 100644
--- a/ublock-origin-combined/debian/changelog
+++ b/ublock-origin-combined/debian/changelog
@@ -1,3 +1,9 @@
+ublock-origin-combined (1.16.4.26-1+devuan) obs; urgency=medium
+
+ * Update
+
+ -- B Stack <bgstack15@gmail.com> Wed, 04 Nov 2020 13:34:43 -0500
+
ublock-origin-combined (1.16.4.25-1+devuan) obs; urgency=medium
* Combined package for all Mozilla-based browsers.
diff --git a/ublock-origin-combined/deploy-to-obs.sh b/ublock-origin-combined/deploy-to-obs.sh
new file mode 100755
index 0000000..a2913b0
--- /dev/null
+++ b/ublock-origin-combined/deploy-to-obs.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Startdate: 2020-11-04 15:06
+# Purpose: make it a oneliner to get into the OBS
+# Dependencies:
+# osc
+
+devdir=~/dev
+gitdir="${devdir}/stackrpms/ublock-origin-combined"
+obsdir="${devdir}/osc/home:bgstack15/ublock-origin-combined"
+
+# Flow
+cd "${devdir}"
+"${gitdir}/build-orig-tarball.sh"
+echo "DONE WITH build-orig-tarball"
+tf="$( find . -maxdepth 1 -name 'ublock*orig*z' -printf '%T@ %f\n' | sort -n -k1 | awk '{print $NF}' | tail -n1 )"
+tar -zxf "${tf}"
+cd "$( tar -zvtf "${tf}" | awk '/^d/{print $NF}' | head -n1 )"
+cp -pr "${gitdir}/debian" .
+debuild -us -uc # depends on dpkg-dev=1.19.7 and not 1.20.5 which is still broken in Ceres as of 2020-11-04
+test $? -eq 0 || { "debuild failed. Cannot continue. Aborted." ; exit 1 ; }
+cd "${devdir}"
+dsc_file="$( find . -maxdepth 1 -name 'ublock*dsc' -printf '%T@ %f\n' | sort -n -k1 | awk '{print $NF}' | tail -n1 | cut -d' ' -f2 )"
+debian_tar_file="$( find . -maxdepth 1 -name 'ublock*debian*z' -printf '%T@ %f\n' | sort -n -k1 | awk '{print $NF}' | tail -n1 | cut -d' ' -f2 )"
+
+# prep obs
+cd "${obsdir}"
+osc up
+osc rm *
+cd "${devdir}"
+cp -p "${dsc_file}" "${debian_tar_file}" "${tf}" "${obsdir}/"
+cd "${obsdir}"
+#find . -mindepth 1 -maxdepth 1 ! -name "${dsc_file}" ! -name "${debian_tar_file}" ! -name "${tf}" -delete
+osc add *
+osc commit # will prompt for commit name
diff --git a/ublock-origin-combined/ublock-origin-combined.spec b/ublock-origin-combined/ublock-origin-combined.spec
index 5b8eca6..8367d80 100644
--- a/ublock-origin-combined/ublock-origin-combined.spec
+++ b/ublock-origin-combined/ublock-origin-combined.spec
@@ -7,7 +7,7 @@
%global app_id \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
Name: ublock-origin-combined
-Version: 1.16.4.25
+Version: 1.16.4.26
Release: 1
Summary: uBlock Origin installed to the system Mozilla-based extensions directories
@@ -68,6 +68,9 @@ rm -rf %{buildroot}
# something gets weird because of the curly braces in the expanded variable, but using the ../* syntax changes the evaluated string so it does not have to try to use curly braces in the owned filepath.
%changelog
+* Wed Nov 04 2020 B Stack <bgstack15@gmail.com> - 1.16.4.26-1
+- Update
+
* Tue Oct 20 2020 B Stack <bgstack15@gmail.com> - 1.16.4.25-1
- Forked from palemoon-ublock-origin
bgstack15