summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--freefilesync/01_no_check_updates.patch10
-rw-r--r--freefilesync/03_sftp.patch24
-rw-r--r--freefilesync/04_revert_zenju_aggressive_upstreamisms.patch191
-rw-r--r--freefilesync/06_icon_loader.patch30
-rw-r--r--freefilesync/debian/_service2
-rw-r--r--freefilesync/debian/changelog34
-rw-r--r--freefilesync/debian/control7
-rw-r--r--freefilesync/debian/freefilesync+devuan.dsc4
-rw-r--r--freefilesync/debian/patches/ffs_devuan.patch24
-rw-r--r--freefilesync/debian/patches/ffs_devuan_gtk3.patch6
-rw-r--r--freefilesync/debian/patches/ffs_icon_loader.patch30
-rw-r--r--freefilesync/debian/patches/ffs_no_check_updates.patch88
-rw-r--r--freefilesync/debian/patches/ffs_sftp.patch24
-rw-r--r--freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch191
-rw-r--r--freefilesync/debian/patches/series4
15 files changed, 371 insertions, 298 deletions
diff --git a/freefilesync/01_no_check_updates.patch b/freefilesync/01_no_check_updates.patch
index 956b476..d37005d 100644
--- a/freefilesync/01_no_check_updates.patch
+++ b/freefilesync/01_no_check_updates.patch
@@ -181,22 +181,22 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
if (lastUpdateCheck == getVersionCheckInactiveId())
return false;
-@@ -168,8 +170,7 @@
+@@ -175,8 +174,7 @@
std::wstring updateDetailsMsg;
try
{
- updateDetailsMsg = utfTo<std::wstring>(sendHttpGet(utfTo<Zstring>("https://api.freefilesync.org/latest_changes?" + xWwwFormUrlEncode({{"since", ffsVersion}})),
-- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/, nullptr /*notifyUnbufferedIO*/).readAll()); //throw SysError
+- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/).readAll(nullptr /*notifyUnbufferedIO*/)); //throw SysError
+ updateDetailsMsg = utfTo<std::wstring>("");
}
catch (const SysError& e) { updateDetailsMsg = _("Failed to retrieve update information.") + + L"\n\n" + e.toString(); }
-@@ -191,8 +192,8 @@
+@@ -198,8 +196,8 @@
std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError
{
-- const std::string response = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams,
-- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/, nullptr /*notifyUnbufferedIO*/).readAll(); //throw SysError
+- const std::string response = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams, nullptr /*notifyUnbufferedIO*/,
+- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/).readAll(nullptr /*notifyUnbufferedIO*/); //throw SysError
+ const std::string response = "";
+ return trimCpy(response);
diff --git a/freefilesync/03_sftp.patch b/freefilesync/03_sftp.patch
index a51acc8..969042d 100644
--- a/freefilesync/03_sftp.patch
+++ b/freefilesync/03_sftp.patch
@@ -1,25 +1,21 @@
Source: <none>
Author: B Stack
Message: The upstream author observed that some of the values he uses are not in the libssh2 public headers. I don't know where he uses them from, but I had to replace them here to get this to compile.
-Date: 2021-02-02T18:08:53Z
-Version: 11.6
+Date: 2022-10-11T15:34Z
+Version: 11.26
https://github.com/libssh2/libssh2/issues/90
diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/FreeFileSync/Source/afs/sftp.cpp 11.6-1/FreeFileSync/Source/afs/sftp.cpp
---- 11.6-0/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 11:37:38.589717171 -0500
-+++ 11.6-1/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 13:06:45.782113785 -0500
-@@ -66,10 +66,10 @@
- LIBSSH2_SFTP_S_IRWXO;
+--- 11.26-0/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 11:37:38.589717171 -0500
++++ 11.26-1/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 13:06:45.782113785 -0500
+@@ -65,9 +65,8 @@
//attention: if operation fails due to time out, e.g. file copy, the cleanup code may hang, too => total delay = 2 x time out interval
--
--const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 8 * MAX_SFTP_READ_SIZE; //https://github.com/libssh2/libssh2/issues/90
--const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 8 * MAX_SFTP_OUTGOING_SIZE; //
+
+-const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 16 * MAX_SFTP_READ_SIZE; //https://github.com/libssh2/libssh2/issues/90
+-const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 16 * MAX_SFTP_OUTGOING_SIZE; //need large buffer to mitigate libssh2 stupidly waiting on "acks": https://www.libssh2.org/libssh2_sftp_write.html
-static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!");
-+// these values are all manually derived from https://github.com/libssh2/libssh2/blob/master/src/sftp.h which for some weak reason are not included in the libssh2-devel headers.
-+const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 8 * 30000; //https://github.com/libssh2/libssh2/issues/90
-+const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 8 * 30000; //
-+//static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!");
++const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 16 * 30000; //https://github.com/libssh2/libssh2/issues/90
++const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 16 * 30000; //need large buffer to mitigate libssh2 stupidly waiting on "acks": https://www.libssh2.org/libssh2_sftp_write.html
/* Perf Test, Sourceforge frs, SFTP upload, compressed 25 MB test file:
-
diff --git a/freefilesync/04_revert_zenju_aggressive_upstreamisms.patch b/freefilesync/04_revert_zenju_aggressive_upstreamisms.patch
index afa3b72..20ccedb 100644
--- a/freefilesync/04_revert_zenju_aggressive_upstreamisms.patch
+++ b/freefilesync/04_revert_zenju_aggressive_upstreamisms.patch
@@ -1,10 +1,14 @@
-Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
+Description: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
+ Had to revert gui_status_handler.cpp and .h entirely to version 11.0 to avoid the wx 3.1.4-isms here.
+ .
+ Now have to revert wxWidgets 3.1.4 upstreamisms
+ cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxASCII_STR' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxASCII_STR' ) ; )
+ cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) ; )
Date: 2022-09-07
-Version: 11.25
+Version: 11.26
Author: bgstack15
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h
---- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400
-+++ 10.24-1/wx+/choice_enum.h 2020-05-17 18:53:59.893685507 -0400
+--- a/wx+/choice_enum.h
++++ b/wx+/choice_enum.h
@@ -7,7 +7,6 @@
#ifndef CHOICE_ENUM_H_132413545345687
#define CHOICE_ENUM_H_132413545345687
@@ -13,7 +17,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
#include <vector>
#include <wx/choice.h>
-@@ -47,8 +46,6 @@
+@@ -47,8 +46,6 @@ struct EnumDescrList
using DescrList = std::vector<std::pair<Enum, std::pair<wxString, wxString>>>;
DescrList descrList;
@@ -22,7 +26,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
};
template <class Enum> void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value);
template <class Enum> Enum getEnumVal(const EnumDescrList<Enum>& mapping, const wxChoice& ctrl);
-@@ -71,32 +68,24 @@
+@@ -71,32 +68,24 @@ template <class Enum> void updateTooltip
template <class Enum>
void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
{
@@ -69,7 +73,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
}
template <class Enum>
-@@ -115,17 +103,11 @@
+@@ -115,17 +104,11 @@ Enum getEnumVal(const EnumDescrList<Enum
template <class Enum> void updateTooltipEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl)
{
@@ -91,13 +95,9 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
}
}
-Message: Now have to revert wxWidgets 3.1.4 upstreamisms
-cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxASCII_STR' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxASCII_STR' ) ; )
-cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) ; )
-diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp 11.2-1/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
---- 11.2-0/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp 2020-10-02 14:39:05.273463072 -0400
-+++ 11.2-1/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp 2020-10-02 15:06:56.670070620 -0400
-@@ -158,7 +158,7 @@
+--- a/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
++++ b/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
+@@ -165,7 +165,7 @@ void FolderSelector2::onSelectDir(wxComm
}
Zstring newFolderPath;
@@ -106,10 +106,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/RealTimeSync/folder_
if (folderSelector.ShowModal() != wxID_OK)
return;
newFolderPath = utfTo<Zstring>(folderSelector.GetPath());
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/command_box.h 11.1-2/FreeFileSync/Source/ui/command_box.h
---- 11.1-1/FreeFileSync/Source/ui/command_box.h 2020-09-01 19:07:43.719122215 -0400
-+++ 11.1-2/FreeFileSync/Source/ui/command_box.h 2020-09-01 20:09:56.840929352 -0400
-@@ -30,7 +30,7 @@
+--- a/FreeFileSync/Source/ui/command_box.h
++++ b/FreeFileSync/Source/ui/command_box.h
+@@ -28,7 +28,7 @@ public:
const wxString choices[] = nullptr,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -118,10 +117,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/command_box.h 11.
void setHistory(const std::vector<Zstring>& history, size_t historyMax) { history_ = history; historyMax_ = historyMax; }
std::vector<Zstring> getHistory() const { return history_; }
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/folder_history_box.h 11.1-2/FreeFileSync/Source/ui/folder_history_box.h
---- 11.1-1/FreeFileSync/Source/ui/folder_history_box.h 2020-09-01 19:07:43.719122215 -0400
-+++ 11.1-2/FreeFileSync/Source/ui/folder_history_box.h 2020-09-01 20:09:50.624849989 -0400
-@@ -68,7 +68,7 @@
+--- a/FreeFileSync/Source/ui/folder_history_box.h
++++ b/FreeFileSync/Source/ui/folder_history_box.h
+@@ -68,7 +68,7 @@ public:
const wxString choices[] = nullptr,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -130,10 +128,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/folder_history_bo
void setHistory(std::shared_ptr<HistoryList> sharedHistory) { sharedHistory_ = std::move(sharedHistory); }
std::shared_ptr<HistoryList> getHistory() { return sharedHistory_; }
-diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/ui/folder_selector.cpp 11.2-1/FreeFileSync/Source/ui/folder_selector.cpp
---- 11.2-0/FreeFileSync/Source/ui/folder_selector.cpp 2020-10-02 14:39:05.297463367 -0400
-+++ 11.2-1/FreeFileSync/Source/ui/folder_selector.cpp 2020-10-02 15:08:07.066935749 -0400
-@@ -232,7 +232,7 @@
+--- a/FreeFileSync/Source/ui/folder_selector.cpp
++++ b/FreeFileSync/Source/ui/folder_selector.cpp
+@@ -239,7 +239,7 @@ void FolderSelector::onSelectFolder(wxCo
Zstring shellItemPath;
//default size? Windows: not implemented, Linux(GTK2): not implemented, macOS: not implemented => wxWidgets, what is this shit!?
@@ -142,10 +139,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/ui/folder_selector.c
//GTK2: "Show hidden" is also available as a context menu option in the folder picker!
//It looks like wxDD_SHOW_HIDDEN only sets the default when opening for the first time!?
if (folderSelector.ShowModal() != wxID_OK)
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_button.h
---- 11.22-0/wx+/bitmap_button.h 2022-06-26 12:01:15.638291465 -0400
-+++ 11.22-1/wx+/bitmap_button.h 2022-06-26 12:51:34.527830821 -0400
-@@ -28,7 +28,7 @@
+--- a/wx+/bitmap_button.h
++++ b/wx+/bitmap_button.h
+@@ -28,7 +28,7 @@ public:
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -154,7 +150,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name)
{
SetLabel(label);
-@@ -104,7 +104,6 @@
+@@ -104,7 +104,6 @@ inline
wxBitmap renderSelectedButton(const wxSize& sz)
{
wxBitmap bmp(sz); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
@@ -162,7 +158,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
{
wxMemoryDC dc(bmp);
-@@ -120,7 +119,6 @@
+@@ -120,7 +119,6 @@ inline
wxBitmap renderPressedButton(const wxSize& sz)
{
wxBitmap bmp(sz); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
@@ -170,9 +166,8 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
{
//draw rectangle border with gradient
const wxColor colFrom = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
-diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/wx+/dc.h
---- 11.23-0/wx+/dc.h 2022-08-03 08:55:32.140102989 -0400
-+++ 11.23-1/wx+/dc.h 2022-08-03 09:27:55.367666939 -0400
+--- a/wx+/dc.h
++++ b/wx+/dc.h
@@ -12,7 +12,7 @@
#include <zen/basic_math.h>
#include <wx/dcbuffer.h> //for macro: wxALWAYS_NATIVE_DOUBLE_BUFFER
@@ -182,7 +177,7 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
#include <gtk/gtk.h>
-@@ -92,9 +92,6 @@
+@@ -92,9 +92,6 @@ constexpr int defaultDpi = 96; //on Wind
inline
int getDPI()
{
@@ -192,7 +187,7 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
//GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114
//=> requires general fix at wxWidgets-level
-@@ -130,7 +127,6 @@
+@@ -130,7 +127,6 @@ wxBitmap toScaledBitmap(const wxImage& i
{
//wxBitmap(const wxImage& image, int depth = -1, double WXUNUSED(scale) = 1.0) => wxWidgets just ignores scale parameter! WTF!
wxBitmap bmpScaled(img);
@@ -200,10 +195,9 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
return bmpScaled; //when testing use 175% scaling: wxWidgets' scaling logic doesn't kick in for 150% only
}
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/graph.h 11.1-2/wx+/graph.h
---- 11.1-1/wx+/graph.h 2020-09-01 19:07:43.731122359 -0400
-+++ 11.1-2/wx+/graph.h 2020-09-01 20:10:36.541429649 -0400
-@@ -153,7 +153,7 @@
+--- a/wx+/graph.h
++++ b/wx+/graph.h
+@@ -192,7 +192,7 @@ public:
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
@@ -212,10 +206,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/graph.h 11.1-2/wx+/graph.h
class CurveAttributes
{
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.cpp 11.1-2/wx+/grid.cpp
---- 11.1-1/wx+/grid.cpp 2020-09-01 20:07:24.418981662 -0400
-+++ 11.1-2/wx+/grid.cpp 2020-09-01 20:10:23.745268393 -0400
-@@ -268,7 +268,7 @@
+--- a/wx+/grid.cpp
++++ b/wx+/grid.cpp
+@@ -263,7 +263,7 @@ class Grid::SubWindow : public wxWindow
{
public:
SubWindow(Grid& parent) :
@@ -224,10 +217,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.cpp 11.1-2/wx+/grid.cpp
parent_(parent)
{
Bind(wxEVT_PAINT, [this](wxPaintEvent& event) { onPaintEvent(event); });
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.h 11.1-2/wx+/grid.h
---- 11.1-1/wx+/grid.h 2020-09-01 19:07:43.731122359 -0400
-+++ 11.1-2/wx+/grid.h 2020-09-01 20:10:48.817584344 -0400
-@@ -149,7 +149,7 @@
+--- a/wx+/grid.h
++++ b/wx+/grid.h
+@@ -149,7 +149,7 @@ public:
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
@@ -236,10 +228,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.h 11.1-2/wx+/grid.h
size_t getRowCount() const;
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/toggle_button.h 11.1-2/wx+/toggle_button.h
---- 11.1-1/wx+/toggle_button.h 2020-09-01 19:07:43.731122359 -0400
-+++ 11.1-2/wx+/toggle_button.h 2020-09-01 20:10:44.629531569 -0400
-@@ -24,7 +24,7 @@
+--- a/wx+/toggle_button.h
++++ b/wx+/toggle_button.h
+@@ -24,7 +24,7 @@ public:
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -248,7 +239,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/toggle_button.h 11.1-2/wx+/toggle_bu
wxBitmapButton(parent, id, bitmap, pos, size, style, validator, name) {}
//wxButton constructor
-@@ -35,7 +35,7 @@
+@@ -35,7 +35,7 @@ public:
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -257,12 +248,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/toggle_button.h 11.1-2/wx+/toggle_bu
wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name)
{
SetLabel(label);
-Version: 11.1
-Message: Had to revert gui_status_handler.cpp and .h entirely to version 11.0 to avoid the wx 3.1.4-isms here.
-diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source/ui/gui_status_handler.cpp
---- 11.25-0/FreeFileSync/Source/ui/gui_status_handler.cpp 2022-09-07 14:54:31.552630085 -0400
-+++ 11.25-1/FreeFileSync/Source/ui/gui_status_handler.cpp 2022-09-07 16:32:17.114749584 -0400
-@@ -44,8 +44,8 @@
+--- a/FreeFileSync/Source/ui/gui_status_handler.cpp
++++ b/FreeFileSync/Source/ui/gui_status_handler.cpp
+@@ -44,8 +44,8 @@ StatusHandlerTemporaryPanel::StatusHandl
mainDlg_.Update(); //don't wait until idle event!
//register keys
@@ -273,7 +261,7 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
}
-@@ -129,9 +129,8 @@
+@@ -129,9 +129,8 @@ StatusHandlerTemporaryPanel::~StatusHand
mainDlg_.auiMgr_.Update();
//unregister keys
@@ -285,7 +273,7 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
mainDlg_.compareStatus_->teardown();
-@@ -324,7 +323,7 @@
+@@ -336,7 +335,7 @@ void StatusHandlerTemporaryPanel::forceU
}
@@ -294,7 +282,7 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
{
const int keyCode = event.GetKeyCode();
if (keyCode == WXK_ESCAPE)
-@@ -334,7 +333,7 @@
+@@ -346,7 +345,7 @@ void StatusHandlerTemporaryPanel::onLoca
}
@@ -303,11 +291,9 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
{
userRequestAbort();
}
-diff --git a/FreeFileSync/Source/ui/gui_status_handler.h b/FreeFileSync/Source/ui/gui_status_handler.h
-index e8ed01e4..2a9e00d2 100644
--- a/FreeFileSync/Source/ui/gui_status_handler.h
+++ b/FreeFileSync/Source/ui/gui_status_handler.h
-@@ -41,8 +41,8 @@ public:
+@@ -46,8 +46,8 @@ public:
Result reportResults(); //noexcept!!
private:
@@ -318,10 +304,9 @@ index e8ed01e4..2a9e00d2 100644
void showStatsPanel();
MainDialog& mainDlg_;
-diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+/no_flicker.h
---- 11.4-1/wx+/no_flicker.h 2020-12-08 08:15:29.436156549 -0500
-+++ 11.4-2/wx+/no_flicker.h 2020-12-08 20:11:25.066820270 -0500
-@@ -70,7 +70,7 @@
+--- a/wx+/no_flicker.h
++++ b/wx+/no_flicker.h
+@@ -72,7 +72,7 @@ void setTextWithUrls(wxRichTextCtrl& ric
ZEN_ON_SCOPE_EXIT(richCtrl.EndSuppressUndo());
//fix mouse scroll speed: why the FUCK is this even necessary!
@@ -330,9 +315,9 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+
//get rid of margins and space between text blocks/"paragraphs"
richCtrl.SetMargins({0, 0});
---- 11.20-0/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 09:49:31.917386558 -0400
-+++ 11.20-1/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 11:02:10.988781908 -0400
-@@ -878,12 +881,10 @@
+--- a/FreeFileSync/Source/ui/progress_indicator.cpp
++++ b/FreeFileSync/Source/ui/progress_indicator.cpp
+@@ -878,12 +878,10 @@ dlgSizeBuf_(dlgSize)
auto generateSquareBitmap = [&](const wxColor& fillCol, const wxColor& borderCol)
{
wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
@@ -345,9 +330,9 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+
return bmpSquare;
};
pnl_.m_bitmapGraphKeyBytes->SetBitmap(generateSquareBitmap(getColorBytes(), getColorBytesRim()));
---- 11.25-0/wx+/rtl.h 2022-09-07 14:54:31.712631887 -0400
-+++ 11.25-1/wx+/rtl.h 2022-09-07 15:57:01.638891035 -0400
-@@ -70,8 +70,6 @@
+--- a/wx+/rtl.h
++++ b/wx+/rtl.h
+@@ -70,8 +70,6 @@ void drawBitmapRtlMirror(wxDC& dc, const
if (!buffer || buffer->GetSize() != rect.GetSize()) //[!] since we do a mirror, width needs to match exactly!
buffer.emplace(rect.GetSize());
@@ -356,19 +341,55 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+
wxMemoryDC memDc(*buffer); //copies scale factor from wxBitmap
memDc.Blit(wxPoint(0, 0), rect.GetSize(), &dc, rect.GetTopLeft()); //blit in: background is mirrored due to memDc, dc having different layout direction!
---- 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 14:44:38.556188935 -0400
-@@ -3595,7 +3590,6 @@
- };
-
+--- a/FreeFileSync/Source/ui/main_dlg.cpp
++++ b/FreeFileSync/Source/ui/main_dlg.cpp
+@@ -3586,7 +3586,6 @@ void MainDialog::onCfgGridContext(GridCo
+ auto addColorOption = [&](const wxColor& col, const wxString& name)
+ {
wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
- bmpSquare.SetScaleFactor(getDisplayScaleFactor());
{
wxMemoryDC dc(bmpSquare);
const wxColor borderCol(0xdd, 0xdd, 0xdd); //light grey
---- 11.22-0/wx+/image_tools.cpp 2022-06-26 16:29:25.668035003 -0400
-+++ 11.22-1/wx+/image_tools.cpp 2022-06-27 09:06:04.999244263 -0400
-@@ -188,7 +188,6 @@
+@@ -3619,7 +3618,6 @@ void MainDialog::onCfgGridContext(GridCo
+
+ //show color picker
+ wxBitmap bmpColorPicker(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
+- bmpColorPicker.SetScaleFactor(getDisplayScaleFactor());
+ {
+ wxMemoryDC dc(bmpColorPicker);
+ const wxColor borderCol(0xdd, 0xdd, 0xdd); //light grey
+@@ -3633,7 +3631,6 @@ void MainDialog::onCfgGridContext(GridCo
+ {
+ wxColourData colCfg;
+ colCfg.SetChooseFull(true);
+- colCfg.SetChooseAlpha(false);
+ colCfg.SetColour(defaultColors[1].first); //tentative
+
+ if (const ConfigView::Details* cfg = cfggrid::getDataView(*m_gridCfgHistory).getItem(selectedRows[0]))
+@@ -3650,19 +3647,6 @@ void MainDialog::onCfgGridContext(GridCo
+ assert(col.Alpha() == 255);
+ return col;
+ };
+- wxColourDialog dlg(this, &colCfg);
+- dlg.Center();
+-
+- dlg.Bind(wxEVT_COLOUR_CHANGED, [&](wxColourDialogEvent& event2)
+- {
+- //show preview during color selection (Windows-only atm)
+- cfggrid::getDataView(*m_gridCfgHistory).setBackColor(cfgFilePaths, fixColorPickerColor(event2.GetColour()), true /*previewOnly*/);
+- m_gridCfgHistory->Refresh();
+- });
+-
+- if (dlg.ShowModal() == wxID_OK)
+- applyBackColor(fixColorPickerColor(dlg.GetColourData().GetColour()));
+- else //shut off color preview
+ {
+ cfggrid::getDataView(*m_gridCfgHistory).setBackColor(cfgFilePaths, wxNullColour, true /*previewOnly*/);
+ m_gridCfgHistory->Refresh();
+--- a/wx+/image_tools.cpp
++++ b/wx+/image_tools.cpp
+@@ -188,7 +188,6 @@ wxImage zen::createImageFromText(const w
return wxNullImage;
wxBitmap newBitmap(maxWidth, lineHeight * lineInfo.size()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
diff --git a/freefilesync/06_icon_loader.patch b/freefilesync/06_icon_loader.patch
index 14035d5..60814de 100644
--- a/freefilesync/06_icon_loader.patch
+++ b/freefilesync/06_icon_loader.patch
@@ -1,21 +1,25 @@
Summary: Solve libglib2.0 problem in sketchy manner
-Date: 2022-05-24
-Version: 11.21
-Author: bgstack15
-Message:
-Warning! I have absolutely no idea what I am doing. Check https://freefilesync.org/forum/viewtopic.php?t=8780 for future developments.
-In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
-Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
-$ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
-Zenju tried addressing this for me, but it still does not compile, even with g++-12. So I still have to omit this macro call.
---- 11.21-0/FreeFileSync/Source/base/icon_loader.cpp 2022-05-22 17:09:32.234809499 -0400
-+++ 11.21-1/FreeFileSync/Source/base/icon_loader.cpp 2022-05-24 08:59:15.433965993 -0400
-@@ -216,7 +216,7 @@
+Date: 2022-10-11
+Version: 11.26
+Author: Fab Stz
+Source: https://freefilesync.org/forum/viewtopic.php?t=8780
+Description:
+ Solution provided by daviank on FFS forum or bastif or Fab Stz at Debian salsa
+ In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
+ Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
+ $ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
+--- a/FreeFileSync/Source/base/icon_loader.cpp
++++ b/FreeFileSync/Source/base/icon_loader.cpp
+@@ -227,7 +227,11 @@ FileIconHolder fff::getFileIcon(const Zs
//the remaining icon types won't block!
assert(GDK_IS_PIXBUF(gicon) || G_IS_THEMED_ICON(gicon) || G_IS_EMBLEMED_ICON(gicon));
- ::g_object_ref(gicon); //pass ownership
-+ //::g_object_ref(gicon); //pass ownership
++#if (GLIB_CHECK_VERSION (2, 67, 0))
++ g_object_ref(gicon); //pass ownership
++#else
++ ::g_object_ref(gicon); //pass ownership
++#endif
return FileIconHolder(gicon, maxSize); //
}
diff --git a/freefilesync/debian/_service b/freefilesync/debian/_service
index baf2e98..7730365 100644
--- a/freefilesync/debian/_service
+++ b/freefilesync/debian/_service
@@ -14,7 +14,7 @@
<service name="tar_scm">
<param name="scm">git</param>
<param name="url">https://gitlab.com/opensource-tracking/FreeFileSync.git</param>
- <param name="revision">11.25</param>
+ <param name="revision">11.27</param>
<param name="version">_none_</param>
</service>
<service name="recompress">
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 95f9be8..5caffbd 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,37 @@
+freefilesync (11.27-1+devuan) obs; urgency=low
+
+ * Upstream updates
+ * Fixed "Some files will be synchronized as part of multiple base
+ folders" false-negative
+ * Fixed "Unexpected size of data stream" for Google Drive
+ * Fixed crash when downloading empty file from Google Drive
+ * RealTimeSync: fixed ffs_batch not accepted as valid configuration
+ * Fixed top buttons vertical GUI layout
+ * Fixed progress dialog font on Ubuntu MATE
+ * Support cut/copy/paste for filter settings
+ * Fixed free disk space calculation if target folder not yet created
+
+ -- B. Stack <bgstack15@gmail.com> Wed, 19 Oct 2022 10:56:17 -0400
+
+freefilesync (11.26-1+devuan) obs; urgency=low
+
+ * Upstream updates
+ * Faster file copy for SSD-based hard drives (Linux, macOS)
+ * Don't fill the OS file cache during file copy (macOS)
+ * Removed redundant memory buffering during file copy
+ * Fixed ERROR_FILE_EXISTS on Samba share when copying files with NTFS
+ extended attributes
+ * Show warning when recycle bin is not available (macOS, Linux)
+ * Customize config item background colors
+ * Fixed macOS menu bar not showing after app start
+ * Fixed normalizing strings with broken UTF encoding
+ * Fixed sound playback not working (Linux)
+ * Don't allow creating file names ending with dot character (Windows)
+ * Dpkg updates
+ * Use wx3.2 now! This has been a huge pain point for a long time.
+
+ -- B. Stack <bgstack15@gmail.com> Tue, 11 Oct 2022 11:06:58 -0400
+
freefilesync (11.25-1+devuan) obs; urgency=medium
* Upstream updates
diff --git a/freefilesync/debian/control b/freefilesync/debian/control
index 9baed3d..627cfb2 100644
--- a/freefilesync/debian/control
+++ b/freefilesync/debian/control
@@ -10,13 +10,10 @@ Build-Depends: debhelper (>=12~),
libglibmm-2.4-dev,
libssh2-1-dev (>=1.10.0-3+b1),
libssl-dev (>=3.0.3-5),
- wx3.0-headers,
+ wx3.2-headers,
unzip,
-# gtk3 version, and these must be removed for gtk2 build
-# install with sudo apt-get install libwxbase3.0-dev=3.0.4+dfsg-15 libwxbase3.0-0v5=3.0.4+dfsg-15 wx3.0-headers=3.0.4+dfsg-15 libgtk-3-dev libwxgtk3.0-gtk3-dev
-# which will remove libwxbase3.0-dev=3.0.4+dfsg-14
libgtk-3-dev,
- libwxgtk3.0-gtk3-dev,
+ libwxgtk3.2-dev,
Standards-Version: 4.1.4
Homepage: https://freefilesync.org/
diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc
index aa2ca30..9035fc6 100644
--- a/freefilesync/debian/freefilesync+devuan.dsc
+++ b/freefilesync/debian/freefilesync+devuan.dsc
@@ -2,11 +2,11 @@ Format: 3.0 (quilt)
Source: freefilesync
Binary: freefilesync
Architecture: any
-Version: 11.25-1+devuan
+Version: 11.27-1+devuan
Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
-Build-Depends: debhelper (>= 12~), g++-12, imagemagick, libbrotli-dev, libcurl4-openssl-dev (>= 7.83.1-1+b1), libglibmm-2.4-dev, libssh2-1-dev (>= 1.10.0-3+b1), libssl-dev (>= 3.0.3-5), wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev
+Build-Depends: debhelper (>= 12~), g++-12, imagemagick, libbrotli-dev, libcurl4-openssl-dev (>= 7.83.1-1+b1), libglibmm-2.4-dev, libssh2-1-dev (>= 1.10.0-3+b1), libssl-dev (>= 3.0.3-5), wx3.2-headers, unzip, libgtk-3-dev, libwxgtk3.2-dev, libfontconfig-dev
Package-List:
freefilesync deb utils optional arch=any
Files:
diff --git a/freefilesync/debian/patches/ffs_devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch
index fce3138..6db7b9d 100644
--- a/freefilesync/debian/patches/ffs_devuan.patch
+++ b/freefilesync/debian/patches/ffs_devuan.patch
@@ -14,8 +14,8 @@ Message: Main patch to compile on Devuan.
}
---- 11.25-0/FreeFileSync/Source/Makefile 2022-09-07 14:54:31.444628869 -0400
-+++ 11.25-1/FreeFileSync/Source/Makefile 2022-09-07 15:15:48.735015001 -0400
+--- a/FreeFileSync/Source/Makefile
++++ b/FreeFileSync/Source/Makefile
@@ -1,11 +1,11 @@
CXX ?= g++
-exeName = FreeFileSync_$(shell arch)
@@ -23,16 +23,17 @@ Message: Main patch to compile on Devuan.
CXXFLAGS += -std=c++2b -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
-Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
+- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
++ -O3 -DNDEBUG `wx-config --version=3.2 --cxxflags --debug=no` -pthread
-LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread
-+LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread -lz
++LDFLAGS += -s -no-pie `wx-config --version=3.2 --libs std, aui, richtext --debug=no` -pthread -lz
CXXFLAGS += `pkg-config --cflags openssl`
--- a/FreeFileSync/Source/ui/small_dlgs.cpp
+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
-@@ -89,6 +89,8 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+@@ -87,6 +87,8 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
build += LTR_MARK; //fix Arabic
build += utfTo<wxString>(cpuArchName);
@@ -41,7 +42,7 @@ Message: Main patch to compile on Devuan.
build += SPACED_BULLET;
build += utfTo<wxString>(formatTime(formatDateTag, getCompileTime()));
-@@ -139,9 +141,9 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+@@ -137,9 +139,9 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
wxImage::AddHandler(new wxJPEGHandler /*ownership passed*/); //activate support for .jpg files
@@ -54,17 +55,17 @@ Message: Main patch to compile on Devuan.
//--------------------------------------------------------------------------
//have animal + text match *final* dialog width
-@@ -151,7 +153,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
- const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 /* grey border*/) / 2;
- const int textWidth = m_panelDonate->GetSize().GetWidth() - 5 - 5 - imageWidth;
+@@ -149,7 +151,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+ const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 /* grey border*/) / 2;
+ const int textWidth = m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 - imageWidth;
- setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/));
+ //setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/));
m_staticTextDonate->Show();
m_staticTextDonate->Wrap(textWidth - 10 /*left gap*/); //wrap *after* changing font size
---- 11.25-0/FreeFileSync/Source/RealTimeSync/Makefile 2022-09-07 14:54:31.524629769 -0400
-+++ 11.25-1/FreeFileSync/Source/RealTimeSync/Makefile 2022-09-07 15:16:18.479350210 -0400
+--- a/FreeFileSync/Source/RealTimeSync/Makefile
++++ b/FreeFileSync/Source/RealTimeSync/Makefile
@@ -1,11 +1,11 @@
CXX ?= g++
-exeName = RealTimeSync_$(shell arch)
@@ -79,4 +80,3 @@ Message: Main patch to compile on Devuan.
#Gtk - support "no button border"
CXXFLAGS += `pkg-config --cflags gtk+-2.0`
-
diff --git a/freefilesync/debian/patches/ffs_devuan_gtk3.patch b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
index 9020da4..c78eb28 100644
--- a/freefilesync/debian/patches/ffs_devuan_gtk3.patch
+++ b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
@@ -1,7 +1,7 @@
-Author: B Stack
+Author: bgstack15
Source: Original research
-Version: 11.25
-Date: 2020-09-07
+Version: 11.26
+Date: 2022-10-11
Message: Main patch to compile on Devuan using GTK3.
--- a/FreeFileSync/Source/Makefile
+++ b/FreeFileSync/Source/Makefile
diff --git a/freefilesync/debian/patches/ffs_icon_loader.patch b/freefilesync/debian/patches/ffs_icon_loader.patch
index 14035d5..60814de 100644
--- a/freefilesync/debian/patches/ffs_icon_loader.patch
+++ b/freefilesync/debian/patches/ffs_icon_loader.patch
@@ -1,21 +1,25 @@
Summary: Solve libglib2.0 problem in sketchy manner
-Date: 2022-05-24
-Version: 11.21
-Author: bgstack15
-Message:
-Warning! I have absolutely no idea what I am doing. Check https://freefilesync.org/forum/viewtopic.php?t=8780 for future developments.
-In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
-Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
-$ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
-Zenju tried addressing this for me, but it still does not compile, even with g++-12. So I still have to omit this macro call.
---- 11.21-0/FreeFileSync/Source/base/icon_loader.cpp 2022-05-22 17:09:32.234809499 -0400
-+++ 11.21-1/FreeFileSync/Source/base/icon_loader.cpp 2022-05-24 08:59:15.433965993 -0400
-@@ -216,7 +216,7 @@
+Date: 2022-10-11
+Version: 11.26
+Author: Fab Stz
+Source: https://freefilesync.org/forum/viewtopic.php?t=8780
+Description:
+ Solution provided by daviank on FFS forum or bastif or Fab Stz at Debian salsa
+ In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
+ Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
+ $ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
+--- a/FreeFileSync/Source/base/icon_loader.cpp
++++ b/FreeFileSync/Source/base/icon_loader.cpp
+@@ -227,7 +227,11 @@ FileIconHolder fff::getFileIcon(const Zs
//the remaining icon types won't block!
assert(GDK_IS_PIXBUF(gicon) || G_IS_THEMED_ICON(gicon) || G_IS_EMBLEMED_ICON(gicon));
- ::g_object_ref(gicon); //pass ownership
-+ //::g_object_ref(gicon); //pass ownership
++#if (GLIB_CHECK_VERSION (2, 67, 0))
++ g_object_ref(gicon); //pass ownership
++#else
++ ::g_object_ref(gicon); //pass ownership
++#endif
return FileIconHolder(gicon, maxSize); //
}
diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch
index 956b476..c540560 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.25
-Date: 2022-09-07
+Version: 11.27
+Date: 2022-10-19
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
+@@ -110,15 +110,6 @@
- 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 );
-@@ -1132,8 +1123,6 @@
- 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_buttonCompare->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this );
+@@ -1129,8 +1120,6 @@
+ 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 @@ protected:
- wxMenuItem* m_menuItemShowOverview;
- wxMenu* m_menuHelp;
- wxMenuItem* m_menuItemHelp;
-- wxMenuItem* m_menuItemCheckVersionNow;
-- wxMenuItem* m_menuItemCheckVersionAuto;
- wxMenuItem* m_menuItemAbout;
- wxBoxSizer* bSizerPanelHolder;
- wxPanel* m_panelTopButtons;
-@@ -232,8 +230,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(); }
+@@ -96,8 +96,6 @@
+ 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 @@
+ 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 @@
@@ -181,22 +181,22 @@ Message: This is a major rewrite of the ffs_no_check_updates patch from before 1
if (lastUpdateCheck == getVersionCheckInactiveId())
return false;
-@@ -168,8 +170,7 @@
+@@ -175,8 +174,7 @@
std::wstring updateDetailsMsg;
try
{
- updateDetailsMsg = utfTo<std::wstring>(sendHttpGet(utfTo<Zstring>("https://api.freefilesync.org/latest_changes?" + xWwwFormUrlEncode({{"since", ffsVersion}})),
-- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/, nullptr /*notifyUnbufferedIO*/).readAll()); //throw SysError
+- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/).readAll(nullptr /*notifyUnbufferedIO*/)); //throw SysError
+ updateDetailsMsg = utfTo<std::wstring>("");
}
catch (const SysError& e) { updateDetailsMsg = _("Failed to retrieve update information.") + + L"\n\n" + e.toString(); }
-@@ -191,8 +192,8 @@
+@@ -198,8 +196,8 @@
std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError
{
-- const std::string response = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams,
-- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/, nullptr /*notifyUnbufferedIO*/).readAll(); //throw SysError
+- const std::string response = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams, nullptr /*notifyUnbufferedIO*/,
+- ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/).readAll(nullptr /*notifyUnbufferedIO*/); //throw SysError
+ const std::string response = "";
+ return trimCpy(response);
diff --git a/freefilesync/debian/patches/ffs_sftp.patch b/freefilesync/debian/patches/ffs_sftp.patch
index a51acc8..969042d 100644
--- a/freefilesync/debian/patches/ffs_sftp.patch
+++ b/freefilesync/debian/patches/ffs_sftp.patch
@@ -1,25 +1,21 @@
Source: <none>
Author: B Stack
Message: The upstream author observed that some of the values he uses are not in the libssh2 public headers. I don't know where he uses them from, but I had to replace them here to get this to compile.
-Date: 2021-02-02T18:08:53Z
-Version: 11.6
+Date: 2022-10-11T15:34Z
+Version: 11.26
https://github.com/libssh2/libssh2/issues/90
diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/FreeFileSync/Source/afs/sftp.cpp 11.6-1/FreeFileSync/Source/afs/sftp.cpp
---- 11.6-0/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 11:37:38.589717171 -0500
-+++ 11.6-1/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 13:06:45.782113785 -0500
-@@ -66,10 +66,10 @@
- LIBSSH2_SFTP_S_IRWXO;
+--- 11.26-0/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 11:37:38.589717171 -0500
++++ 11.26-1/FreeFileSync/Source/afs/sftp.cpp 2021-02-02 13:06:45.782113785 -0500
+@@ -65,9 +65,8 @@
//attention: if operation fails due to time out, e.g. file copy, the cleanup code may hang, too => total delay = 2 x time out interval
--
--const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 8 * MAX_SFTP_READ_SIZE; //https://github.com/libssh2/libssh2/issues/90
--const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 8 * MAX_SFTP_OUTGOING_SIZE; //
+
+-const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 16 * MAX_SFTP_READ_SIZE; //https://github.com/libssh2/libssh2/issues/90
+-const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 16 * MAX_SFTP_OUTGOING_SIZE; //need large buffer to mitigate libssh2 stupidly waiting on "acks": https://www.libssh2.org/libssh2_sftp_write.html
-static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!");
-+// these values are all manually derived from https://github.com/libssh2/libssh2/blob/master/src/sftp.h which for some weak reason are not included in the libssh2-devel headers.
-+const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 8 * 30000; //https://github.com/libssh2/libssh2/issues/90
-+const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 8 * 30000; //
-+//static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!");
++const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 16 * 30000; //https://github.com/libssh2/libssh2/issues/90
++const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 16 * 30000; //need large buffer to mitigate libssh2 stupidly waiting on "acks": https://www.libssh2.org/libssh2_sftp_write.html
/* Perf Test, Sourceforge frs, SFTP upload, compressed 25 MB test file:
-
diff --git a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
index afa3b72..20ccedb 100644
--- a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
+++ b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
@@ -1,10 +1,14 @@
-Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
+Description: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
+ Had to revert gui_status_handler.cpp and .h entirely to version 11.0 to avoid the wx 3.1.4-isms here.
+ .
+ Now have to revert wxWidgets 3.1.4 upstreamisms
+ cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxASCII_STR' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxASCII_STR' ) ; )
+ cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) ; )
Date: 2022-09-07
-Version: 11.25
+Version: 11.26
Author: bgstack15
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h
---- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400
-+++ 10.24-1/wx+/choice_enum.h 2020-05-17 18:53:59.893685507 -0400
+--- a/wx+/choice_enum.h
++++ b/wx+/choice_enum.h
@@ -7,7 +7,6 @@
#ifndef CHOICE_ENUM_H_132413545345687
#define CHOICE_ENUM_H_132413545345687
@@ -13,7 +17,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
#include <vector>
#include <wx/choice.h>
-@@ -47,8 +46,6 @@
+@@ -47,8 +46,6 @@ struct EnumDescrList
using DescrList = std::vector<std::pair<Enum, std::pair<wxString, wxString>>>;
DescrList descrList;
@@ -22,7 +26,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
};
template <class Enum> void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value);
template <class Enum> Enum getEnumVal(const EnumDescrList<Enum>& mapping, const wxChoice& ctrl);
-@@ -71,32 +68,24 @@
+@@ -71,32 +68,24 @@ template <class Enum> void updateTooltip
template <class Enum>
void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
{
@@ -69,7 +73,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
}
template <class Enum>
-@@ -115,17 +103,11 @@
+@@ -115,17 +104,11 @@ Enum getEnumVal(const EnumDescrList<Enum
template <class Enum> void updateTooltipEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl)
{
@@ -91,13 +95,9 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
}
}
-Message: Now have to revert wxWidgets 3.1.4 upstreamisms
-cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxASCII_STR' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxASCII_STR' ) ; )
-cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) ; )
-diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp 11.2-1/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
---- 11.2-0/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp 2020-10-02 14:39:05.273463072 -0400
-+++ 11.2-1/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp 2020-10-02 15:06:56.670070620 -0400
-@@ -158,7 +158,7 @@
+--- a/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
++++ b/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
+@@ -165,7 +165,7 @@ void FolderSelector2::onSelectDir(wxComm
}
Zstring newFolderPath;
@@ -106,10 +106,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/RealTimeSync/folder_
if (folderSelector.ShowModal() != wxID_OK)
return;
newFolderPath = utfTo<Zstring>(folderSelector.GetPath());
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/command_box.h 11.1-2/FreeFileSync/Source/ui/command_box.h
---- 11.1-1/FreeFileSync/Source/ui/command_box.h 2020-09-01 19:07:43.719122215 -0400
-+++ 11.1-2/FreeFileSync/Source/ui/command_box.h 2020-09-01 20:09:56.840929352 -0400
-@@ -30,7 +30,7 @@
+--- a/FreeFileSync/Source/ui/command_box.h
++++ b/FreeFileSync/Source/ui/command_box.h
+@@ -28,7 +28,7 @@ public:
const wxString choices[] = nullptr,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -118,10 +117,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/command_box.h 11.
void setHistory(const std::vector<Zstring>& history, size_t historyMax) { history_ = history; historyMax_ = historyMax; }
std::vector<Zstring> getHistory() const { return history_; }
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/folder_history_box.h 11.1-2/FreeFileSync/Source/ui/folder_history_box.h
---- 11.1-1/FreeFileSync/Source/ui/folder_history_box.h 2020-09-01 19:07:43.719122215 -0400
-+++ 11.1-2/FreeFileSync/Source/ui/folder_history_box.h 2020-09-01 20:09:50.624849989 -0400
-@@ -68,7 +68,7 @@
+--- a/FreeFileSync/Source/ui/folder_history_box.h
++++ b/FreeFileSync/Source/ui/folder_history_box.h
+@@ -68,7 +68,7 @@ public:
const wxString choices[] = nullptr,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -130,10 +128,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/FreeFileSync/Source/ui/folder_history_bo
void setHistory(std::shared_ptr<HistoryList> sharedHistory) { sharedHistory_ = std::move(sharedHistory); }
std::shared_ptr<HistoryList> getHistory() { return sharedHistory_; }
-diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/ui/folder_selector.cpp 11.2-1/FreeFileSync/Source/ui/folder_selector.cpp
---- 11.2-0/FreeFileSync/Source/ui/folder_selector.cpp 2020-10-02 14:39:05.297463367 -0400
-+++ 11.2-1/FreeFileSync/Source/ui/folder_selector.cpp 2020-10-02 15:08:07.066935749 -0400
-@@ -232,7 +232,7 @@
+--- a/FreeFileSync/Source/ui/folder_selector.cpp
++++ b/FreeFileSync/Source/ui/folder_selector.cpp
+@@ -239,7 +239,7 @@ void FolderSelector::onSelectFolder(wxCo
Zstring shellItemPath;
//default size? Windows: not implemented, Linux(GTK2): not implemented, macOS: not implemented => wxWidgets, what is this shit!?
@@ -142,10 +139,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/ui/folder_selector.c
//GTK2: "Show hidden" is also available as a context menu option in the folder picker!
//It looks like wxDD_SHOW_HIDDEN only sets the default when opening for the first time!?
if (folderSelector.ShowModal() != wxID_OK)
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_button.h
---- 11.22-0/wx+/bitmap_button.h 2022-06-26 12:01:15.638291465 -0400
-+++ 11.22-1/wx+/bitmap_button.h 2022-06-26 12:51:34.527830821 -0400
-@@ -28,7 +28,7 @@
+--- a/wx+/bitmap_button.h
++++ b/wx+/bitmap_button.h
+@@ -28,7 +28,7 @@ public:
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -154,7 +150,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name)
{
SetLabel(label);
-@@ -104,7 +104,6 @@
+@@ -104,7 +104,6 @@ inline
wxBitmap renderSelectedButton(const wxSize& sz)
{
wxBitmap bmp(sz); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
@@ -162,7 +158,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
{
wxMemoryDC dc(bmp);
-@@ -120,7 +119,6 @@
+@@ -120,7 +119,6 @@ inline
wxBitmap renderPressedButton(const wxSize& sz)
{
wxBitmap bmp(sz); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
@@ -170,9 +166,8 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu
{
//draw rectangle border with gradient
const wxColor colFrom = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
-diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/wx+/dc.h
---- 11.23-0/wx+/dc.h 2022-08-03 08:55:32.140102989 -0400
-+++ 11.23-1/wx+/dc.h 2022-08-03 09:27:55.367666939 -0400
+--- a/wx+/dc.h
++++ b/wx+/dc.h
@@ -12,7 +12,7 @@
#include <zen/basic_math.h>
#include <wx/dcbuffer.h> //for macro: wxALWAYS_NATIVE_DOUBLE_BUFFER
@@ -182,7 +177,7 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
#include <gtk/gtk.h>
-@@ -92,9 +92,6 @@
+@@ -92,9 +92,6 @@ constexpr int defaultDpi = 96; //on Wind
inline
int getDPI()
{
@@ -192,7 +187,7 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
//GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114
//=> requires general fix at wxWidgets-level
-@@ -130,7 +127,6 @@
+@@ -130,7 +127,6 @@ wxBitmap toScaledBitmap(const wxImage& i
{
//wxBitmap(const wxImage& image, int depth = -1, double WXUNUSED(scale) = 1.0) => wxWidgets just ignores scale parameter! WTF!
wxBitmap bmpScaled(img);
@@ -200,10 +195,9 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/
return bmpScaled; //when testing use 175% scaling: wxWidgets' scaling logic doesn't kick in for 150% only
}
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/graph.h 11.1-2/wx+/graph.h
---- 11.1-1/wx+/graph.h 2020-09-01 19:07:43.731122359 -0400
-+++ 11.1-2/wx+/graph.h 2020-09-01 20:10:36.541429649 -0400
-@@ -153,7 +153,7 @@
+--- a/wx+/graph.h
++++ b/wx+/graph.h
+@@ -192,7 +192,7 @@ public:
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
@@ -212,10 +206,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/graph.h 11.1-2/wx+/graph.h
class CurveAttributes
{
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.cpp 11.1-2/wx+/grid.cpp
---- 11.1-1/wx+/grid.cpp 2020-09-01 20:07:24.418981662 -0400
-+++ 11.1-2/wx+/grid.cpp 2020-09-01 20:10:23.745268393 -0400
-@@ -268,7 +268,7 @@
+--- a/wx+/grid.cpp
++++ b/wx+/grid.cpp
+@@ -263,7 +263,7 @@ class Grid::SubWindow : public wxWindow
{
public:
SubWindow(Grid& parent) :
@@ -224,10 +217,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.cpp 11.1-2/wx+/grid.cpp
parent_(parent)
{
Bind(wxEVT_PAINT, [this](wxPaintEvent& event) { onPaintEvent(event); });
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.h 11.1-2/wx+/grid.h
---- 11.1-1/wx+/grid.h 2020-09-01 19:07:43.731122359 -0400
-+++ 11.1-2/wx+/grid.h 2020-09-01 20:10:48.817584344 -0400
-@@ -149,7 +149,7 @@
+--- a/wx+/grid.h
++++ b/wx+/grid.h
+@@ -149,7 +149,7 @@ public:
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
@@ -236,10 +228,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/grid.h 11.1-2/wx+/grid.h
size_t getRowCount() const;
-diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/toggle_button.h 11.1-2/wx+/toggle_button.h
---- 11.1-1/wx+/toggle_button.h 2020-09-01 19:07:43.731122359 -0400
-+++ 11.1-2/wx+/toggle_button.h 2020-09-01 20:10:44.629531569 -0400
-@@ -24,7 +24,7 @@
+--- a/wx+/toggle_button.h
++++ b/wx+/toggle_button.h
+@@ -24,7 +24,7 @@ public:
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -248,7 +239,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/toggle_button.h 11.1-2/wx+/toggle_bu
wxBitmapButton(parent, id, bitmap, pos, size, style, validator, name) {}
//wxButton constructor
-@@ -35,7 +35,7 @@
+@@ -35,7 +35,7 @@ public:
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
@@ -257,12 +248,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/toggle_button.h 11.1-2/wx+/toggle_bu
wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name)
{
SetLabel(label);
-Version: 11.1
-Message: Had to revert gui_status_handler.cpp and .h entirely to version 11.0 to avoid the wx 3.1.4-isms here.
-diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source/ui/gui_status_handler.cpp
---- 11.25-0/FreeFileSync/Source/ui/gui_status_handler.cpp 2022-09-07 14:54:31.552630085 -0400
-+++ 11.25-1/FreeFileSync/Source/ui/gui_status_handler.cpp 2022-09-07 16:32:17.114749584 -0400
-@@ -44,8 +44,8 @@
+--- a/FreeFileSync/Source/ui/gui_status_handler.cpp
++++ b/FreeFileSync/Source/ui/gui_status_handler.cpp
+@@ -44,8 +44,8 @@ StatusHandlerTemporaryPanel::StatusHandl
mainDlg_.Update(); //don't wait until idle event!
//register keys
@@ -273,7 +261,7 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
}
-@@ -129,9 +129,8 @@
+@@ -129,9 +129,8 @@ StatusHandlerTemporaryPanel::~StatusHand
mainDlg_.auiMgr_.Update();
//unregister keys
@@ -285,7 +273,7 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
mainDlg_.compareStatus_->teardown();
-@@ -324,7 +323,7 @@
+@@ -336,7 +335,7 @@ void StatusHandlerTemporaryPanel::forceU
}
@@ -294,7 +282,7 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
{
const int keyCode = event.GetKeyCode();
if (keyCode == WXK_ESCAPE)
-@@ -334,7 +333,7 @@
+@@ -346,7 +345,7 @@ void StatusHandlerTemporaryPanel::onLoca
}
@@ -303,11 +291,9 @@ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source
{
userRequestAbort();
}
-diff --git a/FreeFileSync/Source/ui/gui_status_handler.h b/FreeFileSync/Source/ui/gui_status_handler.h
-index e8ed01e4..2a9e00d2 100644
--- a/FreeFileSync/Source/ui/gui_status_handler.h
+++ b/FreeFileSync/Source/ui/gui_status_handler.h
-@@ -41,8 +41,8 @@ public:
+@@ -46,8 +46,8 @@ public:
Result reportResults(); //noexcept!!
private:
@@ -318,10 +304,9 @@ index e8ed01e4..2a9e00d2 100644
void showStatsPanel();
MainDialog& mainDlg_;
-diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+/no_flicker.h
---- 11.4-1/wx+/no_flicker.h 2020-12-08 08:15:29.436156549 -0500
-+++ 11.4-2/wx+/no_flicker.h 2020-12-08 20:11:25.066820270 -0500
-@@ -70,7 +70,7 @@
+--- a/wx+/no_flicker.h
++++ b/wx+/no_flicker.h
+@@ -72,7 +72,7 @@ void setTextWithUrls(wxRichTextCtrl& ric
ZEN_ON_SCOPE_EXIT(richCtrl.EndSuppressUndo());
//fix mouse scroll speed: why the FUCK is this even necessary!
@@ -330,9 +315,9 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+
//get rid of margins and space between text blocks/"paragraphs"
richCtrl.SetMargins({0, 0});
---- 11.20-0/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 09:49:31.917386558 -0400
-+++ 11.20-1/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 11:02:10.988781908 -0400
-@@ -878,12 +881,10 @@
+--- a/FreeFileSync/Source/ui/progress_indicator.cpp
++++ b/FreeFileSync/Source/ui/progress_indicator.cpp
+@@ -878,12 +878,10 @@ dlgSizeBuf_(dlgSize)
auto generateSquareBitmap = [&](const wxColor& fillCol, const wxColor& borderCol)
{
wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
@@ -345,9 +330,9 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+
return bmpSquare;
};
pnl_.m_bitmapGraphKeyBytes->SetBitmap(generateSquareBitmap(getColorBytes(), getColorBytesRim()));
---- 11.25-0/wx+/rtl.h 2022-09-07 14:54:31.712631887 -0400
-+++ 11.25-1/wx+/rtl.h 2022-09-07 15:57:01.638891035 -0400
-@@ -70,8 +70,6 @@
+--- a/wx+/rtl.h
++++ b/wx+/rtl.h
+@@ -70,8 +70,6 @@ void drawBitmapRtlMirror(wxDC& dc, const
if (!buffer || buffer->GetSize() != rect.GetSize()) //[!] since we do a mirror, width needs to match exactly!
buffer.emplace(rect.GetSize());
@@ -356,19 +341,55 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+
wxMemoryDC memDc(*buffer); //copies scale factor from wxBitmap
memDc.Blit(wxPoint(0, 0), rect.GetSize(), &dc, rect.GetTopLeft()); //blit in: background is mirrored due to memDc, dc having different layout direction!
---- 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 14:44:38.556188935 -0400
-@@ -3595,7 +3590,6 @@
- };
-
+--- a/FreeFileSync/Source/ui/main_dlg.cpp
++++ b/FreeFileSync/Source/ui/main_dlg.cpp
+@@ -3586,7 +3586,6 @@ void MainDialog::onCfgGridContext(GridCo
+ auto addColorOption = [&](const wxColor& col, const wxString& name)
+ {
wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
- bmpSquare.SetScaleFactor(getDisplayScaleFactor());
{
wxMemoryDC dc(bmpSquare);
const wxColor borderCol(0xdd, 0xdd, 0xdd); //light grey
---- 11.22-0/wx+/image_tools.cpp 2022-06-26 16:29:25.668035003 -0400
-+++ 11.22-1/wx+/image_tools.cpp 2022-06-27 09:06:04.999244263 -0400
-@@ -188,7 +188,6 @@
+@@ -3619,7 +3618,6 @@ void MainDialog::onCfgGridContext(GridCo
+
+ //show color picker
+ wxBitmap bmpColorPicker(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
+- bmpColorPicker.SetScaleFactor(getDisplayScaleFactor());
+ {
+ wxMemoryDC dc(bmpColorPicker);
+ const wxColor borderCol(0xdd, 0xdd, 0xdd); //light grey
+@@ -3633,7 +3631,6 @@ void MainDialog::onCfgGridContext(GridCo
+ {
+ wxColourData colCfg;
+ colCfg.SetChooseFull(true);
+- colCfg.SetChooseAlpha(false);
+ colCfg.SetColour(defaultColors[1].first); //tentative
+
+ if (const ConfigView::Details* cfg = cfggrid::getDataView(*m_gridCfgHistory).getItem(selectedRows[0]))
+@@ -3650,19 +3647,6 @@ void MainDialog::onCfgGridContext(GridCo
+ assert(col.Alpha() == 255);
+ return col;
+ };
+- wxColourDialog dlg(this, &colCfg);
+- dlg.Center();
+-
+- dlg.Bind(wxEVT_COLOUR_CHANGED, [&](wxColourDialogEvent& event2)
+- {
+- //show preview during color selection (Windows-only atm)
+- cfggrid::getDataView(*m_gridCfgHistory).setBackColor(cfgFilePaths, fixColorPickerColor(event2.GetColour()), true /*previewOnly*/);
+- m_gridCfgHistory->Refresh();
+- });
+-
+- if (dlg.ShowModal() == wxID_OK)
+- applyBackColor(fixColorPickerColor(dlg.GetColourData().GetColour()));
+- else //shut off color preview
+ {
+ cfggrid::getDataView(*m_gridCfgHistory).setBackColor(cfgFilePaths, wxNullColour, true /*previewOnly*/);
+ m_gridCfgHistory->Refresh();
+--- a/wx+/image_tools.cpp
++++ b/wx+/image_tools.cpp
+@@ -188,7 +188,6 @@ wxImage zen::createImageFromText(const w
return wxNullImage;
wxBitmap newBitmap(maxWidth, lineHeight * lineInfo.size()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series
index 206af1e..500443c 100644
--- a/freefilesync/debian/patches/series
+++ b/freefilesync/debian/patches/series
@@ -2,11 +2,11 @@ ffs_allow_parallel_ops.patch
ffs_devuan.patch
ffs_devuan_gtk3.patch
ffs_no_check_updates.patch
-ffs_no_wx311.patch
+#ffs_no_wx311.patch
ffs_sftp.patch
ffs_libssh2.patch
#ffs_curl.patch
-revert_zenju_aggressive_upstreamisms.patch
+#revert_zenju_aggressive_upstreamisms.patch
ffs_gcc.patch
ffs_traditional_view.patch
ffs_desktop_notifications.patch
bgstack15