diff options
-rw-r--r-- | freefilesync/01_no_check_updates.patch | 10 | ||||
-rw-r--r-- | freefilesync/03_sftp.patch | 24 | ||||
-rw-r--r-- | freefilesync/04_revert_zenju_aggressive_upstreamisms.patch | 191 | ||||
-rw-r--r-- | freefilesync/debian/changelog | 17 | ||||
-rw-r--r-- | freefilesync/debian/freefilesync+devuan.dsc | 2 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_devuan.patch | 19 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_no_check_updates.patch | 10 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_sftp.patch | 24 | ||||
-rw-r--r-- | freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch | 191 |
9 files changed, 269 insertions, 219 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/debian/changelog b/freefilesync/debian/changelog index 95f9be8..1cc6d48 100644 --- a/freefilesync/debian/changelog +++ b/freefilesync/debian/changelog @@ -1,3 +1,20 @@ +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) + + -- 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/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc index aa2ca30..c7f1603 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.25-1+devuan +Version: 11.26-1+devuan Maintainer: B. Stack <bgstack15@gmail.com> Homepage: https://freefilesync.org/ Standards-Version: 4.1.4 diff --git a/freefilesync/debian/patches/ffs_devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch index fce3138..d51f2fc 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) @@ -32,7 +32,7 @@ Message: Main patch to compile on Devuan. 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 +41,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 +54,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 +79,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_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch index 956b476..d37005d 100644 --- a/freefilesync/debian/patches/ffs_no_check_updates.patch +++ b/freefilesync/debian/patches/ffs_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/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 |