From fe212ce82a6ae5d425e63dc9c7267050bfab2b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8D=9A=E6=96=87?= Date: Mon, 5 Sep 2016 14:33:57 +0800 Subject: [PATCH] get focus when show Change-Id: I00ed2816bb9a90eb1e815f4be29418257654b98d --- frame/util/dockpopupwindow.cpp | 12 ++++++++++++ frame/util/dockpopupwindow.h | 1 + 2 files changed, 13 insertions(+) diff --git a/frame/util/dockpopupwindow.cpp b/frame/util/dockpopupwindow.cpp index f2483cb4c..3452d3f12 100644 --- a/frame/util/dockpopupwindow.cpp +++ b/frame/util/dockpopupwindow.cpp @@ -70,11 +70,23 @@ void DockPopupWindow::hide() DArrowRectangle::hide(); } +void DockPopupWindow::showEvent(QShowEvent *e) +{ + DArrowRectangle::showEvent(e); + + QTimer::singleShot(1, this, [&] { + raise(); + activateWindow(); + setFocus(Qt::ActiveWindowFocusReason); + }); +} + void DockPopupWindow::enterEvent(QEvent *e) { DArrowRectangle::enterEvent(e); raise(); + activateWindow(); setFocus(Qt::ActiveWindowFocusReason); } diff --git a/frame/util/dockpopupwindow.h b/frame/util/dockpopupwindow.h index 7d2b3f580..ee45236f4 100644 --- a/frame/util/dockpopupwindow.h +++ b/frame/util/dockpopupwindow.h @@ -26,6 +26,7 @@ signals: void accept() const; protected: + void showEvent(QShowEvent *e); void enterEvent(QEvent *e); void mousePressEvent(QMouseEvent *e); bool eventFilter(QObject *o, QEvent *e);