summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidgetwindow.cpp
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@digia.com>2013-01-22 10:19:49 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-01-24 09:08:59 +0100
commitfc663b5f9aae16fe6a03160e3eb148a5f742ac58 (patch)
treecdc95023da9a6f7c5068e31f07cdf0dbfb47fa13 /src/widgets/kernel/qwidgetwindow.cpp
parenta5fa0cf98cdedd6dc3488b590499b0b4387747dc (diff)
Fix focus handling of native child widgets in xcb.
Change-Id: If4d596195624011142bff6853849a23064e478df Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src/widgets/kernel/qwidgetwindow.cpp')
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index 462ebc605b..50b61beb05 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
+#include "private/qwindow_p.h"
#include "qwidgetwindow_qpa_p.h"
#include "private/qwidget_p.h"
@@ -60,8 +61,23 @@ extern int openPopupCount;
bool qt_replay_popup_mouse_event = false;
extern bool qt_try_modal(QWidget *widget, QEvent::Type type);
+class QWidgetWindowPrivate : public QWindowPrivate
+{
+ Q_DECLARE_PUBLIC(QWidgetWindow)
+public:
+ QWindow *eventReceiver() {
+ Q_Q(QWidgetWindow);
+ QWindow *w = q;
+ while (w->parent() && qobject_cast<QWidgetWindow *>(w) && qobject_cast<QWidgetWindow *>(w->parent())) {
+ w = w->parent();
+ }
+ return w;
+ }
+};
+
QWidgetWindow::QWidgetWindow(QWidget *widget)
- : m_widget(widget)
+ : QWindow(*new QWidgetWindowPrivate(), 0)
+ , m_widget(widget)
{
updateObjectName();
connect(m_widget, &QObject::objectNameChanged, this, &QWidgetWindow::updateObjectName);