From 7471bf5b106f788cab088d06a163fc86021b681c Mon Sep 17 00:00:00 2001 From: bill-auger Date: Tue, 26 Jan 2021 21:03:47 -0500 Subject: [freefilesync]: upgrade to v11.4 --- pcr/freefilesync/FreeFileSync.desktop | 17 ++- pcr/freefilesync/PKGBUILD | 146 +++++++++++++++----------- pcr/freefilesync/RealTimeSync.desktop | 19 ++-- pcr/freefilesync/disable-autoupdate.patch | 26 +++++ pcr/freefilesync/ffsicon.png | Bin 12078 -> 0 bytes pcr/freefilesync/freefilesync.install | 20 ---- pcr/freefilesync/reversions_11-1.patch | 68 ++++++++++++ pcr/freefilesync/revert_bulk_append.patch | 55 ++++++++++ pcr/freefilesync/revert_linkflags.patch | 35 ++++++ pcr/freefilesync/revert_xdg_config_path.patch | 10 ++ pcr/freefilesync/rtsicon.png | Bin 11335 -> 0 bytes pcr/freefilesync/theme_fixes.patch | 75 +++++++++++++ 12 files changed, 369 insertions(+), 102 deletions(-) create mode 100644 pcr/freefilesync/disable-autoupdate.patch delete mode 100755 pcr/freefilesync/ffsicon.png delete mode 100644 pcr/freefilesync/freefilesync.install create mode 100644 pcr/freefilesync/reversions_11-1.patch create mode 100644 pcr/freefilesync/revert_bulk_append.patch create mode 100644 pcr/freefilesync/revert_linkflags.patch create mode 100644 pcr/freefilesync/revert_xdg_config_path.patch delete mode 100755 pcr/freefilesync/rtsicon.png create mode 100644 pcr/freefilesync/theme_fixes.patch diff --git a/pcr/freefilesync/FreeFileSync.desktop b/pcr/freefilesync/FreeFileSync.desktop index 9acfb0c16..b94e4799d 100644 --- a/pcr/freefilesync/FreeFileSync.desktop +++ b/pcr/freefilesync/FreeFileSync.desktop @@ -1,14 +1,11 @@ [Desktop Entry] +Type=Application Name=FreeFileSync -GenericName=File synchronization -Comment=Backup software to synchronize files and folders -Exec=FreeFileSync +GenericName=Folder Comparison and Synchronization +GenericName[de_DE]=Ordnervergleich und Synchronisation +Exec=FreeFileSync %F +Icon=/usr/share/pixmaps/FreeFileSync.png NoDisplay=false -Terminal=0 -TerminalOptions= -Type=Application -Icon=/usr/share/pixmaps/ffsicon.png -Categories=GTK;Application;Utility; +Terminal=false +Categories=Utility;FileTools; StartupNotify=true -X-KDE-SubstituteUID=false -X-KDE-Username= diff --git a/pcr/freefilesync/PKGBUILD b/pcr/freefilesync/PKGBUILD index d32ee9be9..f62c7a02d 100644 --- a/pcr/freefilesync/PKGBUILD +++ b/pcr/freefilesync/PKGBUILD @@ -1,90 +1,116 @@ - -# Contributor (Arch): chenxing -# Contributor (Arch): Michael Burkhard -# Maintainer (Arch): alexmo82 <25396682 AT live DOT it> +# Contributor (aur): chenxing +# Contributor (aur): Michael Burkhard +# Contributor (aur): alexmo82 <25396682 AT live DOT it> +# Contributor (aur): Simon Brulhart +# Maintainer (aur): jooch # Maintainer: Omar Vega Ramos +# Contributor: bill-auger + +# NOTE: this PKGBUILD requires 'wget' to be available to the build host +# the upstream file server is wonky - very inconsistent results with curl pkgname=freefilesync -pkgver=10.2 +pkgver=11.4 pkgrel=1 pkgdesc="Backup software to synchronize files and folders" -arch=('i686' 'x86_64' 'armv7h') -url="http://www.freefilesync.org/" -license=('GPLv3') -depends=(wxgtk webkit2gtk boost-libs) -makedepends=(boost) +arch=('i686' 'x86_64') +arch+=('armv7h') +url="https://freefilesync.org" +license=('GPL3') +depends=(wxgtk2 curl lsb-release) +makedepends=(unzip) source=( - "FreeFileSync_${pkgver}_Source.zip::https://www.freefilesync.org/download_redirect.php?file=FreeFileSync_${pkgver}_Source.zip" #ffs + https://freefilesync.org/download/FreeFileSync_${pkgver}_Source.zip + reversions_11-1.patch + theme_fixes.patch + revert_xdg_config_path.patch + revert_bulk_append.patch + revert_linkflags.patch FreeFileSync.desktop - ffsicon.png RealTimeSync.desktop - rtsicon.png - ) - -sha256sums=( - 'b7b072f6239529d0030d845b4b62463edf37910dda3e75cd9dd64f01da81b5b9' #ffs source - 'b381bb9dbda25c3c08a67f18072a2761abe34339ddf3318e1758eb7c349f1a3b' #FreeFileSync.desktop - '31df3fa1f1310de14bbd379f891d4f8ed2df5b0d68913eb52c88b3be682933fb' #ffsicon.png - '1502efdbf1638856a18ab9916e0431bf6a53471792cb2daa380345bac33f67c4' #RealTimeSync.desktop - 'f28042587dbe99cf5d6bef2c1be4b026488e418e4ba8332b3016d246b7053a4e' #rtsicon.png - ) - -DLAGENTS=('https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -A Mozilla -o %o %u') +) +source+=(disable-autoupdate.patch) +sha256sums=('d0c20c1388024460944bb0871e91ce6dc9ac5c02be45a095f288db169eb844b4' + '6c2d7f24e4edc52bc1af95d3f48ef67456cde0b952b81a702901acfb36545999' + '4f2b1d46c0b754c668be7ec675a2bb09f72b3bd0e20987b4db61575b5ca1bf46' + '0f9a9a6b2c3c460bbde7425bd62273c925259db1cc9dc18c6013aae99fb15cd8' + '17e7db683662809882db6d6b3d855eb4372ca1bd05e15c4c490970a0b4b127c0' + 'c83475ef3ac8bd534d637062d516c9eeea54ac18c775be55e1adef413ac73063' + '590d87707240529ca893199f852143f5d7c7266cb050e37e615900b013ac3d51' + '82439b4b81b0a72652befad9b9db52ffbc0180f307c92205aa5ab344f9f82830') +sha256sums+=(8dab1089d582058ccbbc8409961b73e5b4d5defe9c6526ee1880a5697449c53f) + +DLAGENTS=('https::/usr/bin/wget %u') prepare() { -# wxgtk < 3.1.0 - sed -i 's/m_listBoxHistory->GetTopItem()/0/g' FreeFileSync/Source/ui/main_dlg.cpp + # wxgtk < 3.1.0 + # Revert to classic config path + patch -p1 -i revert_xdg_config_path.patch -# gcc 6.3.1 - sed -i 's!static_assert!//static_assert!' zen/scope_guard.h + # Avoid uses of wxItemContainer::Append(const std::vector& items) + patch -p1 -i revert_bulk_append.patch -# warn_static(string) - sed -i 's!-O3 -DN!-D"warn_static(arg)= " -O3 -DN!' FreeFileSync/Source/Makefile - sed -i 's!-O3 -DN!-D"warn_static(arg)= " -O3 -DN!' FreeFileSync/Source/RealTimeSync/Makefile + # edit lines to remove functions that require wxgtk 3.1.x + sed -e 's:m_textCtrlOfflineActivationKey->ForceUpper:// &:g' -i 'FreeFileSync/Source/ui/small_dlgs.cpp' + sed -e 's:const double scrollSpeed =:& 6; //:g' -i 'wx+/grid.cpp' -# linker error - sed -i 's#inline##g' FreeFileSync/Source/ui/version_check_impl.h + patch -p1 -i reversions_11-1.patch + grep -RiIl 'wxASCII_STR' | xargs sed -e 's/wxASCII_STR/wxString::FromAscii/g' -i + grep -RiIl 'wxDD_SHOW_HIDDEN' | xargs sed -e 's/, wxDD_DEFAULT_STYLE | wxDD_SHOW_HIDDEN//g' -i -# install error - cp ${srcdir}/Changelog.txt ${srcdir}/FreeFileSync/Build + # undo zenju hacks + sed -e '71,77d' -i 'wx+/dc.h' + sed -e '73d' -i 'wx+/no_flicker.h' -# edit lines to remove functions that require wxgtk 3.1.x - sed -e 's:m_textCtrlOfflineActivationKey->ForceUpper:// &:g' -i 'FreeFileSync/Source/ui/small_dlgs.cpp' - sed -e 's:const double scrollSpeed =:& 6; //:g' -i 'wx+/grid.cpp' + # GUI theme fixes (for improved color compatibility) + patch -p1 -i theme_fixes.patch + + # add LINKFLAGS that were removed but that we still need in our case + patch -p1 -i revert_linkflags.patch + + # inlining of constants not present in libssh2's distributed headers + sed -i 's/MAX_SFTP_READ_SIZE/30000/g' FreeFileSync/Source/afs/sftp.cpp + sed -i 's/MAX_SFTP_OUTGOING_SIZE/30000/g' FreeFileSync/Source/afs/sftp.cpp -# add '-lz' back into LINKFLAGS - sed -i '/pie/ s/-pthread/-lz -pthread/' FreeFileSync/Source/Makefile - sed -i '/pie/ s/-pthread/-lz -pthread/' FreeFileSync/Source/RealTimeSync/Makefile + echo "applying disable-autoupdate.patch" + cd "${srcdir}"/FreeFileSync/ + patch -p1 -i "${srcdir}"/disable-autoupdate.patch } build() { -### speed up compile on multithread machines + ### speed up compile on multithread machines MAKEFLAGS="-j$(nproc)" -### just in case of compile errors + ### just in case of compile errors VER=`g++ -dumpversion` MAC=`g++ -dumpmachine` echo "compiler g++ $VER $MAC" -### FFS - cd ${srcdir}/FreeFileSync/Source - make + ### FFS + cd "${srcdir}/FreeFileSync/Source" + make exeName=FreeFileSync tmpPath="${srcdir}/FreeFileSync/tmp_ffs" -### RTS - cd RealTimeSync - make + ### RTS + cd "${srcdir}/FreeFileSync/Source/RealTimeSync" + make exeName=RealTimeSync tmpPath="${srcdir}/FreeFileSync/tmp_rts" } package() { - cd ${srcdir}/FreeFileSync/Source - make DESTDIR=${pkgdir} install - - cd RealTimeSync - make DESTDIR=${pkgdir} install - - cd ${srcdir} - install -Dm644 FreeFileSync.desktop $pkgdir/usr/share/applications/FreeFileSync.desktop - install -Dm644 ffsicon.png $pkgdir/usr/share/pixmaps/ffsicon.png - install -Dm644 RealTimeSync.desktop $pkgdir/usr/share/applications/RealTimeSync.desktop - install -Dm644 rtsicon.png $pkgdir/usr/share/pixmaps/rtsicon.png + bindir="${pkgdir}/usr/bin" + appdir="${pkgdir}/opt/FreeFileSync" + appdocdir="${pkgdir}/usr/share/doc/FreeFileSync" + + cd "${srcdir}/FreeFileSync/Build" + install -t "${appdir}/Bin" -Dm755 Bin/* + mkdir -p "${bindir}" + ln -s /opt/FreeFileSync/Bin/{FreeFileSync,RealTimeSync} "${bindir}" + + cp -rT Resources "${appdir}/Resources" + find "${appdir}/Resources" -type f -print0 | xargs -0 chmod 644 + install -t "${pkgdir}/usr/share/pixmaps" -Dm644 Resources/FreeFileSync.png Resources/RealTimeSync.png + + cd "${srcdir}" + install -d "${appdocdir}" + gzip < Changelog.txt > "${appdocdir}/CHANGELOG.gz" + install -Dm644 -t "${pkgdir}/usr/share/applications" FreeFileSync.desktop RealTimeSync.desktop } diff --git a/pcr/freefilesync/RealTimeSync.desktop b/pcr/freefilesync/RealTimeSync.desktop index ae02f6ad9..dfd533ffd 100644 --- a/pcr/freefilesync/RealTimeSync.desktop +++ b/pcr/freefilesync/RealTimeSync.desktop @@ -1,16 +1,11 @@ [Desktop Entry] -Name=RealtimeSync +Type=Application +Name=RealTimeSync GenericName=Automated Synchronization -Comment=Real time synchronization -Exec=RealTimeSync +GenericName[de_DE]=Automatisierte Synchronisation +Exec=RealTimeSync %f +Icon=/usr/share/pixmaps/RealTimeSync.png NoDisplay=false -Terminal=0 -TerminalOptions= -Icon=/usr/share/pixmaps/rtsicon.png -Categories=GTK;Application;Utility; +Terminal=false +Categories=Utility;FileTools; StartupNotify=true -Type=Application -X-KDE-SubstituteUID=false -X-KDE-Username= - -Name[it_IT.utf8]=RealTimeSync diff --git a/pcr/freefilesync/disable-autoupdate.patch b/pcr/freefilesync/disable-autoupdate.patch new file mode 100644 index 000000000..d4fd36122 --- /dev/null +++ b/pcr/freefilesync/disable-autoupdate.patch @@ -0,0 +1,26 @@ +diff --git a/Source/ui/version_check.cpp b/Source/ui/version_check.cpp +index d19d05e..e30cf85 100644 +--- a/Source/ui/version_check.cpp ++++ b/Source/ui/version_check.cpp +@@ -220,9 +220,12 @@ void fff::disableUpdateCheck(time_t& lastUpdateCheck) + lastUpdateCheck = getVersionCheckInactiveId(); + } + +- + void fff::checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion) + { ++ showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg(). ++ setTitle(_("FreeFileSync (Parabola GNU/Linux Edition)")). ++ setMainInstructions(_("Automatic updates disabled."))); ++ + try + { + const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError +@@ -325,6 +328,7 @@ void fff::automaticUpdateCheckEval(wxWindow* parent, time_t& lastUpdateCheck, st + { + assert(runningOnMainThread()); + ++ return ; + + const UpdateCheckResult& result = *asyncResult; + diff --git a/pcr/freefilesync/ffsicon.png b/pcr/freefilesync/ffsicon.png deleted file mode 100755 index 7fbc97509..000000000 Binary files a/pcr/freefilesync/ffsicon.png and /dev/null differ diff --git a/pcr/freefilesync/freefilesync.install b/pcr/freefilesync/freefilesync.install deleted file mode 100644 index a2b7306a1..000000000 --- a/pcr/freefilesync/freefilesync.install +++ /dev/null @@ -1,20 +0,0 @@ -#function to tell user to run shell script to reinstall wxgtk and extract libwx*3.1.so* items from wxgtk-dev packages after installation/upgrade of freefilesync -reinstall_and_extract_message() { - echo -e "\n\n$(tput bold)$(tput setaf 7)$(tput setab 1)Run 'sudo sh /usr/bin/wxgtk_fix.sh' after this finishes"'!'"$(tput sgr 0)\n\n" -} - -# send message after installation of freefilesync -post_install() { - reinstall_and_extract_message -} - -# send message after upgrade of freefilesync -post_upgrade() { - reinstall_and_extract_message -} - -# remove the libwx*3.1.so* files from /usr/lib/ and wxgtk_fix.sh from /usr/bin after removal of freefilesync -post_remove() { - rm /usr/lib/libwx*3.1.so* - rm /usr/bin/wxgtk_fix.sh -} \ No newline at end of file diff --git a/pcr/freefilesync/reversions_11-1.patch b/pcr/freefilesync/reversions_11-1.patch new file mode 100644 index 000000000..c503a4f2b --- /dev/null +++ b/pcr/freefilesync/reversions_11-1.patch @@ -0,0 +1,68 @@ +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 +index 3cb6aaaa..9484af2c 100644 +--- a/FreeFileSync/Source/ui/gui_status_handler.cpp ++++ b/FreeFileSync/Source/ui/gui_status_handler.cpp +@@ -43,8 +43,8 @@ StatusHandlerTemporaryPanel::StatusHandlerTemporaryPanel(MainDialog& dlg, + mainDlg_.Update(); //don't wait until idle event! + + //register keys +- mainDlg_. Bind(wxEVT_CHAR_HOOK, &StatusHandlerTemporaryPanel::onLocalKeyEvent, this); +- mainDlg_.m_buttonCancel->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &StatusHandlerTemporaryPanel::onAbortCompare, this); ++ mainDlg_.Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this); ++ mainDlg_.m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this); + } + + +@@ -128,9 +128,8 @@ StatusHandlerTemporaryPanel::~StatusHandlerTemporaryPanel() + mainDlg_.auiMgr_.Update(); + + //unregister keys +- [[maybe_unused]] bool ubOk1 = mainDlg_. Unbind(wxEVT_CHAR_HOOK, &StatusHandlerTemporaryPanel::onLocalKeyEvent, this); +- [[maybe_unused]] bool ubOk2 = mainDlg_.m_buttonCancel->Unbind(wxEVT_COMMAND_BUTTON_CLICKED, &StatusHandlerTemporaryPanel::onAbortCompare, this); +- assert(ubOk1 && ubOk2); ++ mainDlg_.Disconnect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this); ++ mainDlg_.m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this); + + mainDlg_.compareStatus_->teardown(); + +@@ -314,20 +313,20 @@ void StatusHandlerTemporaryPanel::forceUiUpdateNoThrow() + } + + +-void StatusHandlerTemporaryPanel::onLocalKeyEvent(wxKeyEvent& event) ++void StatusHandlerTemporaryPanel::OnKeyPressed(wxKeyEvent& event) + { + const int keyCode = event.GetKeyCode(); + if (keyCode == WXK_ESCAPE) + { + wxCommandEvent dummy; +- onAbortCompare(dummy); ++ OnAbortCompare(dummy); + } + + event.Skip(); + } + + +-void StatusHandlerTemporaryPanel::onAbortCompare(wxCommandEvent& event) ++void StatusHandlerTemporaryPanel::OnAbortCompare(wxCommandEvent& event) + { + 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: + Result reportResults(); //noexcept!! + + private: +- void onLocalKeyEvent(wxKeyEvent& event); +- void onAbortCompare(wxCommandEvent& event); //handle abort button click ++ void OnKeyPressed(wxKeyEvent& event); ++ void OnAbortCompare(wxCommandEvent& event); //handle abort button click + void showStatsPanel(); + + MainDialog& mainDlg_; diff --git a/pcr/freefilesync/revert_bulk_append.patch b/pcr/freefilesync/revert_bulk_append.patch new file mode 100644 index 000000000..9782134ec --- /dev/null +++ b/pcr/freefilesync/revert_bulk_append.patch @@ -0,0 +1,55 @@ +diff -r -u a/FreeFileSync/Source/ui/command_box.cpp b/FreeFileSync/Source/ui/command_box.cpp +--- a/FreeFileSync/Source/ui/command_box.cpp 2020-06-18 19:16:52.000000000 +0200 ++++ b/FreeFileSync/Source/ui/command_box.cpp 2020-06-21 10:45:23.265579023 +0200 +@@ -120,7 +120,8 @@ + + //this->Clear(); -> NO! emits yet another wxEVT_COMMAND_TEXT_UPDATED!!! + wxItemContainer::Clear(); //suffices to clear the selection items only! +- this->Append(items); //expensive as fuck! => only call when absolutely needed! ++ for (const wxString& item : items) ++ this->Append(item); + + //this->SetSelection(wxNOT_FOUND); //don't select anything + ChangeValue(value); //preserve main text! +diff -r -u a/FreeFileSync/Source/ui/folder_history_box.cpp b/FreeFileSync/Source/ui/folder_history_box.cpp +--- a/FreeFileSync/Source/ui/folder_history_box.cpp 2020-06-18 19:16:52.000000000 +0200 ++++ b/FreeFileSync/Source/ui/folder_history_box.cpp 2020-06-21 10:45:23.265579023 +0200 +@@ -90,7 +90,8 @@ + + //this->Clear(); -> NO! emits yet another wxEVT_COMMAND_TEXT_UPDATED!!! + wxItemContainer::Clear(); //suffices to clear the selection items only! +- this->Append(items); //expensive as fuck! => only call when absolutely needed! ++ for (const wxString& item : items) ++ this->Append(item); + + //this->SetSelection(wxNOT_FOUND); //don't select anything + ChangeValue(folderPathPhrase); //preserve main text! +diff -r -u a/FreeFileSync/Source/ui/small_dlgs.cpp b/FreeFileSync/Source/ui/small_dlgs.cpp +--- a/FreeFileSync/Source/ui/small_dlgs.cpp 2020-06-18 19:16:52.000000000 +0200 ++++ b/FreeFileSync/Source/ui/small_dlgs.cpp 2020-06-21 11:35:53.494412284 +0200 +@@ -293,7 +293,9 @@ + { + showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(e.toString())); + } +- m_listBoxGdriveUsers->Append(gdriveAccounts); ++ for (auto const& account: gdriveAccounts) { ++ m_listBoxGdriveUsers->Append(account); ++ } + + //set default values for Google Drive: use first item of m_listBoxGdriveUsers + if (!gdriveAccounts.empty() && !acceptsItemPathPhraseGdrive(folderPathPhrase)) +diff -r -u a/wx+/choice_enum.h b/wx+/choice_enum.h +--- a/wx+/choice_enum.h 2020-06-18 19:16:51.000000000 +0200 ++++ b/wx+/choice_enum.h 2020-06-21 10:45:23.268912329 +0200 +@@ -79,7 +79,10 @@ + + if (items != itemsSetLast) + { +- ctrl.Set(items); //expensive as fuck! => only call when absolutely needed! ++ ctrl.Clear(); ++ for (auto item : items) { ++ ctrl.Append(item); ++ } + itemsSetLast = std::move(items); + } + //----------------------------------------------------------------- \ No newline at end of file diff --git a/pcr/freefilesync/revert_linkflags.patch b/pcr/freefilesync/revert_linkflags.patch new file mode 100644 index 000000000..323924a00 --- /dev/null +++ b/pcr/freefilesync/revert_linkflags.patch @@ -0,0 +1,35 @@ +diff -r -u a/FreeFileSync/Source/Makefile b/FreeFileSync/Source/Makefile +--- a/FreeFileSync/Source/Makefile ++++ b/FreeFileSync/Source/Makefile +@@ -4,7 +4,7 @@ + -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ + -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread + +-linkFlags = -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread ++linkFlags = -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -lz -pthread + + + cxxFlags += `pkg-config --cflags openssl` +@@ -17,6 +17,7 @@ + linkFlags += `pkg-config --libs libssh2` + + cxxFlags += `pkg-config --cflags gtk+-2.0` ++linkFlags += `pkg-config --libs gtk+-2.0` + #treat as system headers so that warnings are hidden: + cxxFlags += -isystem/usr/include/gtk-2.0 + +diff -r -u a/FreeFileSync/Source/RealTimeSync/Makefile b/FreeFileSync/Source/RealTimeSync/Makefile +--- a/FreeFileSync/Source/RealTimeSync/Makefile ++++ b/FreeFileSync/Source/RealTimeSync/Makefile +@@ -4,10 +4,11 @@ + -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ + -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread + +-linkFlags = -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread ++linkFlags = -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -lz -pthread + + #Gtk - support "no button border" + cxxFlags += `pkg-config --cflags gtk+-2.0` ++linkFlags += `pkg-config --libs gtk+-2.0` + #treat as system headers so that warnings are hidden: + cxxFlags += -isystem/usr/include/gtk-2.0 diff --git a/pcr/freefilesync/revert_xdg_config_path.patch b/pcr/freefilesync/revert_xdg_config_path.patch new file mode 100644 index 000000000..1802311e6 --- /dev/null +++ b/pcr/freefilesync/revert_xdg_config_path.patch @@ -0,0 +1,10 @@ +--- a/FreeFileSync/Source/ffs_paths.cpp 2019-11-19 23:52:20.000000000 +0100 ++++ b/FreeFileSync/Source/ffs_paths.cpp 2019-11-24 18:14:17.627328553 +0100 +@@ -80,6 +80,4 @@ + +- //OS standard path (XDG layout): ~/.config/FreeFileSync +- //wxBug: wxStandardPaths::GetUserDataDir() does not honor FileLayout_XDG flag +- wxStandardPaths::Get().SetFileLayout(wxStandardPaths::FileLayout_XDG); +- const Zstring cfgFolderPath = appendSeparator(utfTo(wxStandardPaths::Get().GetUserConfigDir())) + "FreeFileSync"; ++ //OS standard path (classic layout): ~/.FreeFileSync ++ Zstring cfgFolderPath = utfTo(wxStandardPaths::Get().GetUserDataDir()); diff --git a/pcr/freefilesync/rtsicon.png b/pcr/freefilesync/rtsicon.png deleted file mode 100755 index f76e74503..000000000 Binary files a/pcr/freefilesync/rtsicon.png and /dev/null differ diff --git a/pcr/freefilesync/theme_fixes.patch b/pcr/freefilesync/theme_fixes.patch new file mode 100644 index 000000000..e87464db7 --- /dev/null +++ b/pcr/freefilesync/theme_fixes.patch @@ -0,0 +1,75 @@ +diff -r -u a/wx+/grid.cpp b/wx+/grid.cpp +--- a/wx+/grid.cpp 2020-12-05 14:38:39.000000000 +0100 ++++ b/wx+/grid.cpp 2020-12-22 06:36:21.000000000 +0100 +@@ -36,10 +36,10 @@ + { + //------------------------------ Grid Parameters -------------------------------- + inline wxColor getColorLabelText(bool enabled) { return wxSystemSettings::GetColour(enabled ? wxSYS_COLOUR_WINDOWTEXT : wxSYS_COLOUR_GRAYTEXT); } +-inline wxColor getColorGridLine() { return { 192, 192, 192 }; } //light grey ++inline wxColor getColorGridLine() { return wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW); } //light grey + + inline wxColor getColorLabelGradientFrom() { return wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); } +-inline wxColor getColorLabelGradientTo () { return { 200, 200, 200 }; } //light grey ++inline wxColor getColorLabelGradientTo () { return wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE); } //light grey + + inline wxColor getColorLabelGradientFocusFrom() { return getColorLabelGradientFrom(); } + inline wxColor getColorLabelGradientFocusTo () { return GridData::getColorSelectionGradientFrom(); } +@@ -227,7 +227,7 @@ + { + //left border + { +- wxDCPenChanger dummy(dc, wxPen(*wxWHITE, fastFromDIP(1))); ++ wxDCPenChanger dummy(dc, wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW), fastFromDIP(1))); + dc.DrawLine(rect.GetTopLeft(), rect.GetBottomLeft()); + } + //bottom, right border +@@ -444,7 +444,7 @@ + + wxRect rectShrinked = clientRect; + rectShrinked.Deflate(fastFromDIP(1)); +- dc.SetPen(wxPen(*wxWHITE, fastFromDIP(1))); ++ dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW), fastFromDIP(1))); + + //dc.DrawLine(clientRect.GetTopLeft(), clientRect.GetTopRight() + wxPoint(1, 0)); + dc.DrawLine(rectShrinked.GetTopLeft(), rectShrinked.GetBottomLeft() + wxPoint(0, 1)); +@@ -545,7 +545,7 @@ + + //border lines + { +- wxDCPenChanger dummy(dc, wxPen(*wxWHITE, fastFromDIP(1))); ++ wxDCPenChanger dummy(dc, wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW), fastFromDIP(1))); + dc.DrawLine(rect.GetTopLeft(), rect.GetTopRight()); + } + { +diff -r -u a/FreeFileSync/Source/ui/file_grid.cpp b/FreeFileSync/Source/ui/file_grid.cpp +--- a/FreeFileSync/Source/ui/file_grid.cpp 2020-12-05 14:38:39.000000000 +0100 ++++ b/FreeFileSync/Source/ui/file_grid.cpp 2020-12-22 06:05:29.000000000 +0100 +@@ -46,7 +46,7 @@ + inline wxColor getColorInactiveBack(bool faint) { if (faint) return { 0xf6, 0xf6, 0xf6}; return { 0xe4, 0xe4, 0xe4 }; } //light grey + inline wxColor getColorInactiveText() { return { 0x40, 0x40, 0x40 }; } //dark grey + +-inline wxColor getColorGridLine() { return { 192, 192, 192 }; } //light grey ++inline wxColor getColorGridLine() { return wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW); } //light grey + + const int FILE_GRID_GAP_SIZE_DIP = 2; + const int FILE_GRID_GAP_SIZE_WIDE_DIP = 6; +diff -r -u a/FreeFileSync/Source/ui/triple_splitter.cpp b/FreeFileSync/Source/ui/triple_splitter.cpp +--- a/FreeFileSync/Source/ui/triple_splitter.cpp 2020-12-05 14:38:39.000000000 +0100 ++++ b/FreeFileSync/Source/ui/triple_splitter.cpp 2020-12-22 05:37:32.000000000 +0100 +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + + using namespace zen; + using namespace fff; +@@ -24,8 +25,8 @@ + const int CHILD_WINDOW_MIN_SIZE_DIP = 50; //min. size of managed windows + + //let's NOT create wxWidgets objects statically: +-inline wxColor getColorSashGradientFrom() { return { 192, 192, 192 }; } //light grey +-inline wxColor getColorSashGradientTo () { return *wxWHITE; } ++inline wxColor getColorSashGradientFrom() { return wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW); } //light grey ++inline wxColor getColorSashGradientTo () { return wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE); } + } -- cgit v1.2.2