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;