summaryrefslogtreecommitdiff
path: root/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch')
-rw-r--r--freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch261
1 files changed, 261 insertions, 0 deletions
diff --git a/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch b/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch
new file mode 100644
index 0000000..578b2db
--- /dev/null
+++ b/freefilesync/debian/patches/revert_buggy_gtk3_change_in_12.1.patch
@@ -0,0 +1,261 @@
+Description: Revert change that provokes freeze when opening dialogs
+ With upstream's 12.1 version, there started to be a freeze when opening
+ some dialogs. Upstream author identified this might come from a given change
+ detailed in https://freefilesync.org/forum/viewtopic.php?t=10103
+ .
+ Until the problem is fixed upstream, this patch reverts that change.
+Author: Fab Stz <fabstz-it@yahoo.fr>
+Origin: self
+Bug: https://freefilesync.org/forum/viewtopic.php?t=10103
+Forwarded: https://freefilesync.org/forum/viewtopic.php?t=10103
+Last-Update: 2023-03-19
+
+--- a/FreeFileSync/Source/ui/abstract_folder_picker.cpp
++++ b/FreeFileSync/Source/ui/abstract_folder_picker.cpp
+@@ -127,10 +127,7 @@ AbstractFolderPickerDlg::AbstractFolderP
+
+ //----------------------------------------------------------------------
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //dialog-specific local key events
+--- a/FreeFileSync/Source/ui/batch_config.cpp
++++ b/FreeFileSync/Source/ui/batch_config.cpp
+@@ -82,10 +82,7 @@ BatchDialog::BatchDialog(wxWindow* paren
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_buttonSaveAs->SetFocus();
+--- a/FreeFileSync/Source/ui/progress_indicator.cpp
++++ b/FreeFileSync/Source/ui/progress_indicator.cpp
+@@ -218,10 +218,7 @@ CompareProgressPanel::Impl::Impl(wxFrame
+ m_panelTimeStats->Layout();
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ }
+
+
+@@ -884,10 +881,6 @@ syncStat_(&syncStat)
+ //make sure that standard height matches ProcessPhase::comparingContent statistics layout (== largest)
+
+ 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?)
+-#endif
+ pnl_.Layout();
+ this->Center(); //call *after* dialog layout update and *before* wxWindow::Show()!
+
+--- a/FreeFileSync/Source/ui/small_dlgs.cpp
++++ b/FreeFileSync/Source/ui/small_dlgs.cpp
+@@ -145,10 +145,6 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+ //--------------------------------------------------------------------------
+ //have animal + text match *final* dialog width
+ 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?)
+-#endif
+
+ {
+ const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 - 5 /* grey border*/) / 2;
+@@ -164,10 +160,7 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_buttonClose->SetFocus(); //on GTK ESC is only associated with wxID_OK correctly if we set at least *any* focus at all!!!
+@@ -404,11 +397,7 @@ CloudSetupDlg::CloudSetupDlg(wxWindow* p
+ m_checkBoxPasswordPrompt->Hide();
+
+ GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
+- //=> 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
+@@ -976,10 +965,7 @@ CopyToDialog::CopyToDialog(wxWindow* par
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_buttonOK->SetFocus();
+@@ -1094,10 +1080,7 @@ DeleteDialog::DeleteDialog(wxWindow* par
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_buttonOK->SetFocus();
+@@ -1237,10 +1220,7 @@ SyncConfirmationDlg::SyncConfirmationDlg
+ setIntValue(*m_staticTextDeleteRight, st.deleteCount<SelectSide::right>(), *m_bitmapDeleteRight, "so_delete_right_sicon");
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_buttonStartSync->SetFocus();
+@@ -1504,10 +1484,7 @@ OptionsDlg::OptionsDlg(wxWindow* parent,
+ updateGui();
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ //restore actual value:
+@@ -1827,10 +1804,7 @@ SelectTimespanDlg::SelectTimespanDlg(wxW
+ Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& event) { onLocalKeyEvent(event); }); //enable dialog-specific key events
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_buttonOkay->SetFocus();
+@@ -1926,10 +1900,7 @@ PasswordPromptDlg::PasswordPromptDlg(wxW
+ m_textCtrlPasswordVisible->Hide();
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ updateGui(); //*after* SetSizeHints when standard dialog height has been calculated
+@@ -2012,10 +1983,7 @@ CfgHighlightDlg::CfgHighlightDlg(wxWindo
+ m_spinCtrlOverdueDays->SetValue(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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_spinCtrlOverdueDays->SetFocus();
+@@ -2081,10 +2049,7 @@ ActivationDlg::ActivationDlg(wxWindow* p
+ m_textCtrlOfflineActivationKey->ChangeValue(manualActivationKey);
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ m_buttonActivateOnline->SetFocus();
+@@ -2189,12 +2154,8 @@ DownloadProgressWindow::Impl::Impl(wxWin
+ updateGui();
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+-
+ Show();
+
+ //clear gui flicker: window must be visible to make this work!
+--- a/FreeFileSync/Source/ui/sync_cfg.cpp
++++ b/FreeFileSync/Source/ui/sync_cfg.cpp
+@@ -696,10 +696,7 @@ globalLogFolderPhrase_(globalLogFolderPh
+ selectFolderPairConfig(-1);
+
+ 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?)
+-#endif
++ //=> works like a charm for GTK2 with window resizing problems and title bar corruption; e.g. Debian!!!
+ Center(); //needs to be re-applied after a dialog size change!
+
+ //keep stable sizer height: "two way" description is smaller than grid of sync directions
+--- a/wx+/popup_dlg.cpp
++++ b/wx+/popup_dlg.cpp
+@@ -287,13 +287,8 @@ 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?)
+-#endif
+ Center(); //needs to be re-applied after a dialog size change!
+
+-
+ Raise(); //[!] popup may be triggered by ffs_batch job running in the background!
+
+ if (m_buttonAccept->IsEnabled())
+--- a/wx+/tooltip.cpp
++++ b/wx+/tooltip.cpp
+@@ -79,12 +79,11 @@ void Tooltip::show(const wxString& text,
+ }
+
+ if (imgChanged || txtChanged)
++ {
+ //tipWindow_->Layout(); -> apparently not needed!?
+ tipWindow_->GetSizer()->SetSizeHints(tipWindow_); //~=Fit() + SetMinSize()
+-#ifdef __WXGTK3__
+- //GTK3 size calculation requires visible window: https://github.com/wxWidgets/wxWidgets/issues/16088
+- //=> call wxWindow::Show() to "execute"
+-#endif
++ //Linux: Fit() seems to be broken => call EVERY time inside show, not only if text or bmp change -> still true?!?
++ }
+
+ const wxPoint newPos = wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft ?
+ mousePos - wxPoint(fastFromDIP(TIP_WINDOW_OFFSET_DIP) + tipWindow_->GetSize().GetWidth(), 0) :
bgstack15