summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Authoring/Studio/Application/FilterVariantsDlg.cpp11
-rw-r--r--src/Authoring/Studio/Application/FilterVariantsDlg.h4
-rw-r--r--src/Authoring/Studio/MainFrm.cpp3
3 files changed, 13 insertions, 5 deletions
diff --git a/src/Authoring/Studio/Application/FilterVariantsDlg.cpp b/src/Authoring/Studio/Application/FilterVariantsDlg.cpp
index d6a47b6d..8a451e9a 100644
--- a/src/Authoring/Studio/Application/FilterVariantsDlg.cpp
+++ b/src/Authoring/Studio/Application/FilterVariantsDlg.cpp
@@ -34,11 +34,13 @@
#include <QtCore/qtimer.h>
#include <QtQml/qqmlcontext.h>
-FilterVariantsDlg::FilterVariantsDlg(QWidget *parent, QAction *action, int actionSize)
+FilterVariantsDlg::FilterVariantsDlg(QWidget *parent, QAction *action, int actionSize,
+ QWidget *actionWidget)
: QQuickWidget(parent)
, m_model(new FilterVariantsModel(m_variantsFilter, this))
, m_action(action)
, m_actionSize(actionSize)
+ , m_actionWidget(actionWidget)
{
setWindowTitle(tr("Filter variants"));
QTimer::singleShot(0, this, &FilterVariantsDlg::initialize);
@@ -90,8 +92,11 @@ void FilterVariantsDlg::showEvent(QShowEvent *event)
void FilterVariantsDlg::focusOutEvent(QFocusEvent *e)
{
QQuickWidget::focusOutEvent(e);
- m_action->setChecked(false);
- QTimer::singleShot(0, this, &QQuickWidget::close);
+
+ if (!m_actionWidget->underMouse()) {
+ m_action->setChecked(false);
+ QTimer::singleShot(0, this, &QQuickWidget::close);
+ }
}
void FilterVariantsDlg::keyPressEvent(QKeyEvent *e)
diff --git a/src/Authoring/Studio/Application/FilterVariantsDlg.h b/src/Authoring/Studio/Application/FilterVariantsDlg.h
index 3de1c294..cc7eab1e 100644
--- a/src/Authoring/Studio/Application/FilterVariantsDlg.h
+++ b/src/Authoring/Studio/Application/FilterVariantsDlg.h
@@ -40,7 +40,8 @@ class FilterVariantsDlg : public QQuickWidget
Q_OBJECT
public:
- explicit FilterVariantsDlg(QWidget *parent, QAction *action, int actionSize);
+ explicit FilterVariantsDlg(QWidget *parent, QAction *action, int actionSize,
+ QWidget *actionWidget);
Q_INVOKABLE int actionSize() const;
@@ -61,6 +62,7 @@ private:
FilterVariantsModel *m_model = nullptr;
QAction *m_action = nullptr;
int m_actionSize = 0; // width/height of the action icon
+ QWidget *m_actionWidget = nullptr;
};
#endif // FILTER_VARIANTS_DLG_H
diff --git a/src/Authoring/Studio/MainFrm.cpp b/src/Authoring/Studio/MainFrm.cpp
index 2e76d9d7..348cd351 100644
--- a/src/Authoring/Studio/MainFrm.cpp
+++ b/src/Authoring/Studio/MainFrm.cpp
@@ -340,8 +340,9 @@ void CMainFrame::OnCreate()
// correctly
QTimer::singleShot(0, this, [&] {
QRect actionGeom = m_ui->m_PlaybackToolbar->actionGeometry(m_ui->actionFilterVariants);
+ auto *actionWidget = m_ui->m_PlaybackToolbar->widgetForAction(m_ui->actionFilterVariants);
m_filterVariantsDlg.reset(new FilterVariantsDlg(this, m_ui->actionFilterVariants,
- actionGeom.width()));
+ actionGeom.width(), actionWidget));
});
// Create the view manager