summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt10
-rw-r--r--FreeFileSync/Source/base/comparison.cpp20
-rw-r--r--FreeFileSync/Source/base/structures.cpp30
-rw-r--r--FreeFileSync/Source/ui/abstract_folder_picker.cpp2
-rw-r--r--FreeFileSync/Source/ui/batch_config.cpp2
-rw-r--r--FreeFileSync/Source/ui/file_grid.cpp6
-rw-r--r--FreeFileSync/Source/ui/file_view.h2
-rw-r--r--FreeFileSync/Source/ui/progress_indicator.cpp6
-rw-r--r--FreeFileSync/Source/ui/rename_dlg.cpp2
-rw-r--r--FreeFileSync/Source/ui/small_dlgs.cpp28
-rw-r--r--FreeFileSync/Source/ui/sync_cfg.cpp2
-rw-r--r--FreeFileSync/Source/ui/version_check.cpp2
-rw-r--r--FreeFileSync/Source/version/version.h2
-rw-r--r--libcurl/curl_wrap.cpp3
-rw-r--r--wx+/popup_dlg.cpp2
15 files changed, 66 insertions, 53 deletions
diff --git a/Changelog.txt b/Changelog.txt
index 834c4a6a..a03ca67d 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,3 +1,12 @@
+FreeFileSync 13.4 [2024-02-16]
+------------------------------
+Ignore leading/trailing space when matching file names
+Work around wxWidgets system logger clearing error code
+Fixed registration info not found after App Translocation (macOS)
+Avoid modal dialog hang on KDE when compiling with GTK3
+Change app location without losing Donation Edition status (macOS)
+
+
FreeFileSync 13.3 [2024-01-07]
------------------------------
Completed CASA security assessment for Google Drive
@@ -5,6 +14,7 @@ Use system temp folder for auto-updating
Ignore errors when setting directory attributes is unsupported
Save GUI sync log file even when cancelled
Fixed Business Edition install over existing installation
+Updated code signing certificates (Windows)
FreeFileSync 13.2 [2023-11-23]
diff --git a/FreeFileSync/Source/base/comparison.cpp b/FreeFileSync/Source/base/comparison.cpp
index 974664ae..3d448f39 100644
--- a/FreeFileSync/Source/base/comparison.cpp
+++ b/FreeFileSync/Source/base/comparison.cpp
@@ -776,19 +776,21 @@ void matchFolders(const MapType& mapLeft, const MapType& mapRight, ProcessLeftOn
{
struct FileRef
{
- //perf: buffer ZstringNoCase instead of compareNoCase()/equalNoCase()? => makes no (significant) difference!
+ Zstring canonicalName; //perf: buffer instead of compareNoCase()/equalNoCase()? => makes no (significant) difference!
const typename MapType::value_type* ref;
SelectSide side;
};
std::vector<FileRef> fileList;
fileList.reserve(mapLeft.size() + mapRight.size()); //perf: ~5% shorter runtime
- for (const auto& item : mapLeft ) fileList.push_back({&item, SelectSide::left});
- for (const auto& item : mapRight) fileList.push_back({&item, SelectSide::right});
+ auto getCanonicalName = [](const Zstring& name){ return trimCpy(getUpperCase(name)); };
+
+ for (const auto& item : mapLeft ) fileList.push_back({getCanonicalName(item.first), &item, SelectSide::left});
+ for (const auto& item : mapRight) fileList.push_back({getCanonicalName(item.first), &item, SelectSide::right});
- //primary sort: ignore Unicode normal form and upper/lower case
+ //primary sort: ignore upper/lower case, leading/trailing space, Unicode normal form
//bonus: natural default sequence on UI file grid
- std::sort(fileList.begin(), fileList.end(), [](const FileRef& lhs, const FileRef& rhs) { return compareNoCase(lhs.ref->first /*item name*/, rhs.ref->first) < 0; });
+ std::sort(fileList.begin(), fileList.end(), [](const FileRef& lhs, const FileRef& rhs) { return lhs.canonicalName < rhs.canonicalName; });
using ItType = typename std::vector<FileRef>::iterator;
auto tryMatchRange = [&](ItType it, ItType itLast) //auto parameters? compiler error on VS 17.2...
@@ -814,16 +816,16 @@ void matchFolders(const MapType& mapLeft, const MapType& mapRight, ProcessLeftOn
for (auto it = fileList.begin(); it != fileList.end();)
{
- //find equal range: ignore case, ignore Unicode normalization
- auto itEndEq = std::find_if(it + 1, fileList.end(), [&](const FileRef& fr) { return !equalNoCase(fr.ref->first, it->ref->first); });
+ //find equal range: ignore upper/lower case, leading/trailing space, Unicode normal form
+ auto itEndEq = std::find_if(it + 1, fileList.end(), [&](const FileRef& fr) { return fr.canonicalName != it->canonicalName; });
if (!tryMatchRange(it, itEndEq))
{
- //secondary sort: respect case, ignore unicode normal forms
+ //secondary sort: respect case, ignore Unicode normal forms
std::sort(it, itEndEq, [](const FileRef& lhs, const FileRef& rhs) { return getUnicodeNormalForm(lhs.ref->first) < getUnicodeNormalForm(rhs.ref->first); });
for (auto itCase = it; itCase != itEndEq;)
{
- //find equal range: respect case, ignore Unicode normalization
+ //find equal range: respect case, ignore Unicode normal forms
auto itEndCase = std::find_if(itCase + 1, itEndEq, [&](const FileRef& fr) { return getUnicodeNormalForm(fr.ref->first) != getUnicodeNormalForm(itCase->ref->first); });
if (!tryMatchRange(itCase, itEndCase))
{
diff --git a/FreeFileSync/Source/base/structures.cpp b/FreeFileSync/Source/base/structures.cpp
index c1da1bf5..b92dc8ee 100644
--- a/FreeFileSync/Source/base/structures.cpp
+++ b/FreeFileSync/Source/base/structures.cpp
@@ -231,7 +231,7 @@ std::wstring fff::getSymbol(CompareFileResult cmpRes)
switch (cmpRes)
{
//*INDENT-OFF*
- case FILE_EQUAL: return L"'=="; //added quotation mark to avoid error in Excel cell when exporting to *.cvs
+ case FILE_EQUAL: return L"'="; //added quotation mark to avoid error in Excel cell when exporting to *.cvs
case FILE_RENAMED: return L"renamed";
case FILE_LEFT_ONLY: return L"only <-";
case FILE_RIGHT_ONLY: return L"only ->";
@@ -252,20 +252,20 @@ std::wstring fff::getSymbol(SyncOperation op)
switch (op)
{
//*INDENT-OFF*
- case SO_CREATE_LEFT: return L"create <-";
- case SO_CREATE_RIGHT: return L"create ->";
- case SO_DELETE_LEFT: return L"delete <-";
- case SO_DELETE_RIGHT: return L"delete ->";
- case SO_MOVE_LEFT_FROM: return L"move from <-";
- case SO_MOVE_LEFT_TO: return L"move to <-";
- case SO_MOVE_RIGHT_FROM: return L"move from ->";
- case SO_MOVE_RIGHT_TO: return L"move to ->";
- case SO_OVERWRITE_LEFT: return L"update <-";
- case SO_OVERWRITE_RIGHT: return L"update ->";
- case SO_RENAME_LEFT: return L"rename <-";
- case SO_RENAME_RIGHT: return L"rename ->";
- case SO_DO_NOTHING: return L" -";
- case SO_EQUAL: return L"'=="; //added quotation mark to avoid error in Excel cell when exporting to *.cvs
+ case SO_CREATE_LEFT: return L"create <-";
+ case SO_CREATE_RIGHT: return L"create ->";
+ case SO_DELETE_LEFT: return L"delete <-";
+ case SO_DELETE_RIGHT: return L"delete ->";
+ case SO_MOVE_LEFT_FROM: return L"move from <-";
+ case SO_MOVE_LEFT_TO: return L"move to <-";
+ case SO_MOVE_RIGHT_FROM: return L"move from ->";
+ case SO_MOVE_RIGHT_TO: return L"move to ->";
+ case SO_OVERWRITE_LEFT: return L"update <-";
+ case SO_OVERWRITE_RIGHT: return L"update ->";
+ case SO_RENAME_LEFT: return L"rename <-";
+ case SO_RENAME_RIGHT: return L"rename ->";
+ case SO_DO_NOTHING: return L" -";
+ case SO_EQUAL: return L"'="; //added quotation mark to avoid error in Excel cell when exporting to *.cvs
case SO_UNRESOLVED_CONFLICT: return L"conflict"; //portable Unicode symbol: ⚡
//*INDENT-ON*
};
diff --git a/FreeFileSync/Source/ui/abstract_folder_picker.cpp b/FreeFileSync/Source/ui/abstract_folder_picker.cpp
index 0d971f32..16132c87 100644
--- a/FreeFileSync/Source/ui/abstract_folder_picker.cpp
+++ b/FreeFileSync/Source/ui/abstract_folder_picker.cpp
@@ -129,7 +129,7 @@ AbstractFolderPickerDlg::AbstractFolderPickerDlg(wxWindow* parent, AbstractPath&
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
diff --git a/FreeFileSync/Source/ui/batch_config.cpp b/FreeFileSync/Source/ui/batch_config.cpp
index bbc59171..b5f6c226 100644
--- a/FreeFileSync/Source/ui/batch_config.cpp
+++ b/FreeFileSync/Source/ui/batch_config.cpp
@@ -83,7 +83,7 @@ BatchDialog::BatchDialog(wxWindow* parent, BatchDialogConfig& dlgCfg) :
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
diff --git a/FreeFileSync/Source/ui/file_grid.cpp b/FreeFileSync/Source/ui/file_grid.cpp
index 5041b5d5..9c8293fe 100644
--- a/FreeFileSync/Source/ui/file_grid.cpp
+++ b/FreeFileSync/Source/ui/file_grid.cpp
@@ -1585,14 +1585,14 @@ private:
case ColumnTypeCenter::checkbox:
break;
case ColumnTypeCenter::difference:
- return _("Difference") + L" (F11)";
+ return _("Difference");
case ColumnTypeCenter::action:
- return _("Action") + L" (F11)";
+ return _("Action");
}
return std::wstring();
}
- std::wstring getToolTip(ColumnType colType) const override { return getColumnLabel(colType); }
+ std::wstring getToolTip(ColumnType colType) const override { return getColumnLabel(colType) + L" (F11)"; }
void renderColumnLabel(wxDC& dc, const wxRect& rect, ColumnType colType, bool enabled, bool highlighted) override
{
diff --git a/FreeFileSync/Source/ui/file_view.h b/FreeFileSync/Source/ui/file_view.h
index 9891f9e9..6d5b3261 100644
--- a/FreeFileSync/Source/ui/file_view.h
+++ b/FreeFileSync/Source/ui/file_view.h
@@ -22,7 +22,7 @@ class FileView //grid view of FolderComparison
{
public:
FileView() {}
- explicit FileView(FolderComparison& folderCmp); //takes (shared) ownership
+ explicit FileView(FolderComparison& folderCmp); //takes weak (non-owning) references
size_t rowsOnView() const { return viewRef_ .size(); } //only visible elements
size_t rowsTotal () const { return sortedRef_.size(); } //total rows available
diff --git a/FreeFileSync/Source/ui/progress_indicator.cpp b/FreeFileSync/Source/ui/progress_indicator.cpp
index 47d196ae..78f715bc 100644
--- a/FreeFileSync/Source/ui/progress_indicator.cpp
+++ b/FreeFileSync/Source/ui/progress_indicator.cpp
@@ -219,8 +219,8 @@ CompareProgressPanel::Impl::Impl(wxFrame& parentWindow) :
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
- Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
}
@@ -924,7 +924,7 @@ syncStat_(&syncStat)
this->GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
this->Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- this->Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
pnl_.Layout();
this->Center(); //call *after* dialog layout update and *before* wxWindow::Show()!
diff --git a/FreeFileSync/Source/ui/rename_dlg.cpp b/FreeFileSync/Source/ui/rename_dlg.cpp
index 42f133ba..aa6ec646 100644
--- a/FreeFileSync/Source/ui/rename_dlg.cpp
+++ b/FreeFileSync/Source/ui/rename_dlg.cpp
@@ -365,7 +365,7 @@ RenameDialog::RenameDialog(wxWindow* parent,
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
diff --git a/FreeFileSync/Source/ui/small_dlgs.cpp b/FreeFileSync/Source/ui/small_dlgs.cpp
index ca90fde2..7f035f2a 100644
--- a/FreeFileSync/Source/ui/small_dlgs.cpp
+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
@@ -149,7 +149,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : AboutDlgGenerated(parent)
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
{
@@ -168,7 +168,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : AboutDlgGenerated(parent)
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -406,7 +406,7 @@ CloudSetupDlg::CloudSetupDlg(wxWindow* parent, Zstring& folderPathPhrase, Zstrin
//=> works like a charm for GTK with window resizing problems and title bar corruption; e.g. Debian!!!
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -973,7 +973,7 @@ CopyToDialog::CopyToDialog(wxWindow* parent,
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -1090,7 +1090,7 @@ DeleteDialog::DeleteDialog(wxWindow* parent,
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -1233,7 +1233,7 @@ SyncConfirmationDlg::SyncConfirmationDlg(wxWindow* parent,
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -1500,7 +1500,7 @@ OptionsDlg::OptionsDlg(wxWindow* parent, XmlGlobalSettings& globalCfg) :
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -1823,7 +1823,7 @@ SelectTimespanDlg::SelectTimespanDlg(wxWindow* parent, time_t& timeFrom, time_t&
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -1922,7 +1922,7 @@ PasswordPromptDlg::PasswordPromptDlg(wxWindow* parent, const std::wstring& msg,
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -2008,7 +2008,7 @@ CfgHighlightDlg::CfgHighlightDlg(wxWindow* parent, int& cfgHistSyncOverdueDays)
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -2064,8 +2064,8 @@ ActivationDlg::ActivationDlg(wxWindow* parent,
//setMainInstructionFont(*m_staticTextMain);
- m_richTextLastError ->SetMinSize({-1, m_richTextLastError ->GetCharHeight() * 8});
- m_richTextManualActivationUrl->SetMinSize({-1, m_richTextManualActivationUrl->GetCharHeight() * 4});
+ m_richTextLastError ->SetMinSize({-1, m_richTextLastError ->GetCharHeight() * 8});
+ m_richTextManualActivationUrl ->SetMinSize({-1, m_richTextManualActivationUrl->GetCharHeight() * 4});
m_textCtrlOfflineActivationKey->SetMinSize({dipToWxsize(260), -1});
setImage(*m_bitmapActivation, loadImage("internet"));
@@ -2079,7 +2079,7 @@ ActivationDlg::ActivationDlg(wxWindow* parent,
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
@@ -2187,7 +2187,7 @@ DownloadProgressWindow::Impl::Impl(wxWindow* parent, int64_t fileSizeTotal) :
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
diff --git a/FreeFileSync/Source/ui/sync_cfg.cpp b/FreeFileSync/Source/ui/sync_cfg.cpp
index d699abe9..0ece4445 100644
--- a/FreeFileSync/Source/ui/sync_cfg.cpp
+++ b/FreeFileSync/Source/ui/sync_cfg.cpp
@@ -709,7 +709,7 @@ globalLogFolderPhrase_(globalLogFolderPhrase)
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
diff --git a/FreeFileSync/Source/ui/version_check.cpp b/FreeFileSync/Source/ui/version_check.cpp
index 1750e007..29f899be 100644
--- a/FreeFileSync/Source/ui/version_check.cpp
+++ b/FreeFileSync/Source/ui/version_check.cpp
@@ -312,7 +312,7 @@ void fff::automaticUpdateCheckEval(wxWindow& parent, time_t& lastUpdateCheck, st
{
lastUpdateCheck = getVersionCheckCurrentTime();
- if (lastOnlineVersion != result.onlineVersion) //show new version popup only *once*
+ if (lastOnlineVersion != result.onlineVersion) //show new version popup only *once* per new release
{
lastOnlineVersion = result.onlineVersion;
diff --git a/FreeFileSync/Source/version/version.h b/FreeFileSync/Source/version/version.h
index 5f566458..4fb89a75 100644
--- a/FreeFileSync/Source/version/version.h
+++ b/FreeFileSync/Source/version/version.h
@@ -3,7 +3,7 @@
namespace fff
{
-const char ffsVersion[] = "13.3"; //internal linkage!
+const char ffsVersion[] = "13.4"; //internal linkage!
const char FFS_VERSION_SEPARATOR = '.';
}
diff --git a/libcurl/curl_wrap.cpp b/libcurl/curl_wrap.cpp
index 11ac9dd4..93edd44e 100644
--- a/libcurl/curl_wrap.cpp
+++ b/libcurl/curl_wrap.cpp
@@ -401,9 +401,10 @@ std::wstring zen::formatCurlStatusCode(CURLcode sc)
ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PROXY);
ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CLIENTCERT);
ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNRECOVERABLE_POLL);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TOO_LARGE);
ZEN_CHECK_CASE_FOR_CONSTANT(CURL_LAST);
}
- static_assert(CURL_LAST == CURLE_UNRECOVERABLE_POLL + 1);
+ static_assert(CURL_LAST == CURLE_TOO_LARGE + 1);
return replaceCpy<std::wstring>(L"Curl status %x", L"%x", numberTo<std::wstring>(static_cast<int>(sc)));
}
diff --git a/wx+/popup_dlg.cpp b/wx+/popup_dlg.cpp
index c48bf592..5ab17564 100644
--- a/wx+/popup_dlg.cpp
+++ b/wx+/popup_dlg.cpp
@@ -289,7 +289,7 @@ public:
GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
#ifdef __WXGTK3__
Show(); //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
- Hide(); //avoid old position flash when Center() moves window (asynchronously?)
+ //Hide(); -> avoids old position flash before Center() on GNOME but causes hang on KDE? https://freefilesync.org/forum/viewtopic.php?t=10103#p42404
#endif
Center(); //needs to be re-applied after a dialog size change!
bgstack15