diff options
author | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-07-22 12:53:53 (GMT) |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-07-22 12:53:53 (GMT) |
commit | d15e6a32aeced893a5b5b790f3235cc7b3e0b9af (patch) | |
tree | 31a62ea2e2512e3a67efaec4fafef88110154348 /src/gui/kernel/qwidget_qpa.cpp | |
parent | ec0ce7be116f0c4f854ef1efbb90d22f7c76aa4d (diff) | |
download | Qt-d15e6a32aeced893a5b5b790f3235cc7b3e0b9af.zip Qt-d15e6a32aeced893a5b5b790f3235cc7b3e0b9af.tar.gz Qt-d15e6a32aeced893a5b5b790f3235cc7b3e0b9af.tar.bz2 |
Implement reparenting a created toplevel window
Diffstat (limited to 'src/gui/kernel/qwidget_qpa.cpp')
-rw-r--r-- | src/gui/kernel/qwidget_qpa.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/gui/kernel/qwidget_qpa.cpp b/src/gui/kernel/qwidget_qpa.cpp index 4229a05..ac868eb 100644 --- a/src/gui/kernel/qwidget_qpa.cpp +++ b/src/gui/kernel/qwidget_qpa.cpp @@ -60,7 +60,7 @@ void setParentForChildrenOfWidget(QPlatformWindow *window, const QWidget *widget for (int i = 0; i < children.size(); i++) { if (children.at(i)->isWidgetType()) { const QWidget *childWidget = qobject_cast<const QWidget *>(children.at(i)); - if (childWidget) { // should not be nessesary + if (childWidget) { // should not be necessary if (childWidget->platformWindow()) { childWidget->platformWindow()->setParent(window); } else { @@ -179,6 +179,12 @@ 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 + if (!(f&Qt::Window) && (oldFlags&Qt::Window)) { + //qDebug() << "setParent_sys() change from toplevel"; + q->destroy(); + } data.window_flags = f; q->setAttribute(Qt::WA_WState_Created, false); @@ -190,12 +196,11 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f) if (QPlatformWindow *window = q->platformWindow()) data.window_flags = window->setWindowFlags(data.window_flags); } - // XXX Reparenting child to toplevel or vice versa ### + + // Reparenting child to toplevel if ((f&Qt::Window) && !(oldFlags&Qt::Window)) { //qDebug() << "setParent_sys() change to toplevel"; - q->create(); //### this cannot be right - } else if ((f&Qt::Window) && !(oldFlags&Qt::Window)) { - qDebug() << "######## setParent_sys() change from toplevel not implemented ########"; + q->create(); //### too early: this ought to happen at show() time } |