summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2011-05-27 15:49:20 +0200
committerLaszlo Agocs <laszlo.p.agocs@nokia.com>2011-05-27 15:49:20 +0200
commit09796553a5c3253d8507600f31d24589b52aa080 (patch)
treedf2b4b3b9fea16ff85e3820dfaf37396889e8135 /src/widgets
parentbb2986f165a51b0aee254c3e7217c3912c29e3f3 (diff)
Revert "Have subwindows parented properly."
This reverts commit bb2986f165a51b0aee254c3e7217c3912c29e3f3.
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp32
1 files changed, 10 insertions, 22 deletions
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp
index ae634edeb8..c2b60d0387 100644
--- a/src/widgets/kernel/qwidget_qpa.cpp
+++ b/src/widgets/kernel/qwidget_qpa.cpp
@@ -96,12 +96,6 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
QWindowSurface *surface = q->windowSurface();
QWindow *win = topData()->window;
- // topData() ensures the extra is created but does not ensure 'window' is non-null
- // in case the extra was already valid.
- if (!win) {
- createTLSysExtra();
- win = topData()->window;
- }
win->setWindowFlags(data.window_flags);
win->setGeometry(q->geometry());
@@ -114,7 +108,7 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
if (QWidget *nativeParent = q->nativeParentWidget()) {
if (nativeParent->windowHandle()) {
- if (flags.testFlag(Qt::Window) && !flags.testFlag(Qt::SubWindow)) {
+ if (flags & Qt::Window) {
win->setTransientParent(nativeParent->windowHandle());
win->setParent(0);
} else {
@@ -196,16 +190,14 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
newparent = 0;
}
- bool subWinChange = f.testFlag(Qt::SubWindow) != oldFlags.testFlag(Qt::SubWindow);
- if (parent != newparent || subWinChange) {
+ if (parent != newparent) {
QObjectPrivate::setParent_helper(newparent); //### why does this have to be done in the _sys function???
- createTLExtra();
if (q->windowHandle()) {
q->windowHandle()->setWindowFlags(f);
QWidget *parentWithWindow =
newparent ? (newparent->windowHandle() ? newparent : newparent->nativeParentWidget()) : 0;
if (parentWithWindow) {
- if (f.testFlag(Qt::Window) && !f.testFlag(Qt::SubWindow)) {
+ if (f & Qt::Window) {
q->windowHandle()->setTransientParent(parentWithWindow->windowHandle());
q->windowHandle()->setParent(0);
} else {
@@ -230,9 +222,7 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
bool explicitlyHidden = q->testAttribute(Qt::WA_WState_Hidden) && q->testAttribute(Qt::WA_WState_ExplicitShowHide);
// Reparenting toplevel to child
- bool changedFromWin = !f.testFlag(Qt::Window) && oldFlags.testFlag(Qt::Window);
- bool changedToSubWin = subWinChange && f.testFlag(Qt::SubWindow);
- if ((changedFromWin || changedToSubWin) && !q->testAttribute(Qt::WA_NativeWindow)) {
+ if (!(f&Qt::Window) && (oldFlags&Qt::Window) && !q->testAttribute(Qt::WA_NativeWindow)) {
//qDebug() << "setParent_sys() change from toplevel";
q->destroy();
}
@@ -260,26 +250,24 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
QPoint QWidget::mapToGlobal(const QPoint &pos) const
{
- int x = pos.x();
- int y = pos.y();
- const QWidget *w = this;
+ int x=pos.x(), y=pos.y();
+ const QWidget* w = this;
while (w) {
x += w->data->crect.x();
y += w->data->crect.y();
- w = w->parentWidget();
+ w = w->isWindow() ? 0 : w->parentWidget();
}
return QPoint(x, y);
}
QPoint QWidget::mapFromGlobal(const QPoint &pos) const
{
- int x = pos.x();
- int y = pos.y();
- const QWidget *w = this;
+ int x=pos.x(), y=pos.y();
+ const QWidget* w = this;
while (w) {
x -= w->data->crect.x();
y -= w->data->crect.y();
- w = w->parentWidget();
+ w = w->isWindow() ? 0 : w->parentWidget();
}
return QPoint(x, y);
}