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