summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@nokia.com>2010-07-22 12:53:53 (GMT)
committerPaul Olav Tvete <paul.tvete@nokia.com>2010-07-22 12:53:53 (GMT)
commitd15e6a32aeced893a5b5b790f3235cc7b3e0b9af (patch)
tree31a62ea2e2512e3a67efaec4fafef88110154348 /src/gui/kernel
parentec0ce7be116f0c4f854ef1efbb90d22f7c76aa4d (diff)
downloadQt-d15e6a32aeced893a5b5b790f3235cc7b3e0b9af.zip
Qt-d15e6a32aeced893a5b5b790f3235cc7b3e0b9af.tar.gz
Qt-d15e6a32aeced893a5b5b790f3235cc7b3e0b9af.tar.bz2
Implement reparenting a created toplevel window
Diffstat (limited to 'src/gui/kernel')
-rw-r--r--src/gui/kernel/qwidget_qpa.cpp15
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
}