diff --git a/src/gui/SearchHelpWidget.ui b/src/gui/SearchHelpWidget.ui index 4668e409b..d2d8a2339 100644 --- a/src/gui/SearchHelpWidget.ui +++ b/src/gui/SearchHelpWidget.ui @@ -6,8 +6,8 @@ 0 0 - 487 - 326 + 397 + 264 @@ -20,28 +20,10 @@ QFrame::StyledPanel - - 6 - - - QLayout::SetDefaultConstraint - - - 5 - - - 5 - - - 5 - - - 5 - - + 0 0 @@ -63,7 +45,7 @@ - + 0 0 @@ -96,24 +78,6 @@ Modifiers - - 8 - - - 8 - - - 9 - - - 10 - - - 9 - - - 9 - @@ -222,21 +186,6 @@ false - - 15 - - - 10 - - - 15 - - - 8 - - - 5 - @@ -299,12 +248,6 @@ Term Wildcards - - 8 - - - 8 - @@ -404,9 +347,6 @@ Examples - - 8 - diff --git a/src/gui/SearchWidget.cpp b/src/gui/SearchWidget.cpp index 96c52e639..001c3d861 100644 --- a/src/gui/SearchWidget.cpp +++ b/src/gui/SearchWidget.cpp @@ -38,7 +38,6 @@ SearchWidget::SearchWidget(QWidget* parent) setFocusProxy(m_ui->searchEdit); m_helpWidget = new PopupHelpWidget(m_ui->searchEdit); - m_helpWidget->setOffset(QPoint(0, 1)); Ui::SearchHelpWidget helpUi; helpUi.setupUi(m_helpWidget); diff --git a/src/gui/widgets/PopupHelpWidget.cpp b/src/gui/widgets/PopupHelpWidget.cpp index 269c31c5b..2a604dce9 100644 --- a/src/gui/widgets/PopupHelpWidget.cpp +++ b/src/gui/widgets/PopupHelpWidget.cpp @@ -23,27 +23,22 @@ PopupHelpWidget::PopupHelpWidget(QWidget* parent) : QFrame(parent) - , m_parentWindow(parent->window()) , m_appWindow(getMainWindow()) , m_offset({0, 0}) , m_corner(Qt::BottomLeftCorner) { Q_ASSERT(parent); -#ifdef Q_OS_MACOS - setWindowFlags(Qt::FramelessWindowHint | Qt::Drawer); -#else setWindowFlags(Qt::FramelessWindowHint | Qt::Tool); -#endif hide(); m_appWindow->installEventFilter(this); - parent->installEventFilter(this); + parentWidget()->installEventFilter(this); } PopupHelpWidget::~PopupHelpWidget() { - m_parentWindow->removeEventFilter(this); + m_appWindow->removeEventFilter(this); parentWidget()->removeEventFilter(this); } @@ -65,10 +60,10 @@ void PopupHelpWidget::setPosition(Qt::Corner corner) bool PopupHelpWidget::eventFilter(QObject* obj, QEvent* event) { - if (obj == parentWidget() && event->type() == QEvent::FocusOut) { - hide(); - } else if (obj == m_appWindow && (event->type() == QEvent::Move || event->type() == QEvent::Resize)) { - if (isVisible()) { + if (isVisible()) { + if (obj == parentWidget() && event->type() == QEvent::FocusOut && qApp->focusWindow() != windowHandle()) { + hide(); + } else if (obj == m_appWindow && (event->type() == QEvent::Move || event->type() == QEvent::Resize)) { alignWithParent(); } } @@ -83,21 +78,22 @@ void PopupHelpWidget::showEvent(QShowEvent* event) void PopupHelpWidget::alignWithParent() { - QPoint pos; + QPoint pos = m_offset; switch (m_corner) { case Qt::TopLeftCorner: - pos = parentWidget()->geometry().topLeft() + m_offset - QPoint(0, height()); + pos += QPoint(0, -height()); break; case Qt::TopRightCorner: - pos = parentWidget()->geometry().topRight() + m_offset - QPoint(width(), height()); + pos += QPoint(parentWidget()->width(), -height()); break; case Qt::BottomRightCorner: - pos = parentWidget()->geometry().bottomRight() + m_offset - QPoint(width(), 0); + pos += QPoint(parentWidget()->width(), parentWidget()->height()); break; + case Qt::BottomLeftCorner: default: - pos = parentWidget()->geometry().bottomLeft() + m_offset; + pos += QPoint(0, parentWidget()->height()); break; } - move(m_parentWindow->mapToGlobal(pos)); -} \ No newline at end of file + move(parentWidget()->mapToGlobal(pos)); +} diff --git a/src/gui/widgets/PopupHelpWidget.h b/src/gui/widgets/PopupHelpWidget.h index 3c02ccc1a..353121c6a 100644 --- a/src/gui/widgets/PopupHelpWidget.h +++ b/src/gui/widgets/PopupHelpWidget.h @@ -37,7 +37,6 @@ protected: private: void alignWithParent(); - QPointer m_parentWindow; QPointer m_appWindow; QPoint m_offset;