From fea33b284e79723a89185548b000ebedab8c94d5 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 21 Feb 2021 21:55:36 +0100 Subject: [PATCH] Qt4 compatibility. --- src/lay/lay/layMacroEditorDialog.cc | 2 +- src/lay/lay/layMacroEditorPage.cc | 1 - src/laybasic/laybasic/layQtTools.cc | 16 ++++++++++++++++ src/laybasic/laybasic/layQtTools.h | 22 ++++++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/lay/lay/layMacroEditorDialog.cc b/src/lay/lay/layMacroEditorDialog.cc index 7573154e0..ac46f6402 100644 --- a/src/lay/lay/layMacroEditorDialog.cc +++ b/src/lay/lay/layMacroEditorDialog.cc @@ -1890,7 +1890,7 @@ MacroEditorDialog::set_editor_focus () return; } - QSignalBlocker signal_blocker (searchEditBox); + lay::SignalBlocker signal_blocker (searchEditBox); page->set_editor_focus (); } diff --git a/src/lay/lay/layMacroEditorPage.cc b/src/lay/lay/layMacroEditorPage.cc index 0eb04be59..3cdd98a78 100644 --- a/src/lay/lay/layMacroEditorPage.cc +++ b/src/lay/lay/layMacroEditorPage.cc @@ -43,7 +43,6 @@ #include #include #include -#include #include #include diff --git a/src/laybasic/laybasic/layQtTools.cc b/src/laybasic/laybasic/layQtTools.cc index bc7a1e537..a769a07be 100644 --- a/src/laybasic/laybasic/layQtTools.cc +++ b/src/laybasic/laybasic/layQtTools.cc @@ -189,5 +189,21 @@ indicate_error (QWidget *le, bool f) le->setPalette (pl); } +#if QT_VERSION < 0x050000 + +SignalBlocker::SignalBlocker (QWidget *w) + : mp_widget (w) +{ + m_state = mp_widget->blockSignals (true); +} + +SignalBlocker::~SignalBlocker () +{ + mp_widget->blockSignals (m_state); +} + +#endif + + } diff --git a/src/laybasic/laybasic/layQtTools.h b/src/laybasic/laybasic/layQtTools.h index fc11d89ee..36a02b368 100644 --- a/src/laybasic/laybasic/layQtTools.h +++ b/src/laybasic/laybasic/layQtTools.h @@ -31,6 +31,7 @@ class QLabel; class QWidget; class QObject; +class QSignalBlocker; namespace tl { @@ -81,6 +82,27 @@ LAYBASIC_PUBLIC void indicate_error (QWidget *le, const tl::Exception *ex); */ LAYBASIC_PUBLIC void indicate_error (QWidget *le, bool error); +#if QT_VERSION < 0x050000 + +// Provide missing QSignalBlocker for Qt4 + +class SignalBlocker +{ +public: + SignalBlocker (QWidget *w); + ~SignalBlocker (); + +private: + QWidget *mp_widget; + bool m_state; +}; + +#else + +typedef QSignalBlocker SignalBlocker; + +#endif + } // namespace lay #endif