src/gui/widgets/qdockwidget.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
--- a/src/gui/widgets/qdockwidget.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/gui/widgets/qdockwidget.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -1010,7 +1010,7 @@
 
     if (!floating && parent) {
         QMainWindowLayout *mwlayout = qobject_cast<QMainWindowLayout *>(q->parentWidget()->layout());
-        if (!mwlayout || mwlayout->dockWidgetArea(q) == Qt::NoDockWidgetArea)
+        if (mwlayout && mwlayout->dockWidgetArea(q) == Qt::NoDockWidgetArea)
             return; // this dockwidget can't be redocked
     }
 
@@ -1269,12 +1269,11 @@
     QRect r = d->undockedGeometry;
 
     d->setWindowState(floating, false, floating ? r : QRect());
+
     if (floating && r.isNull()) {
-        QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(this->layout());
-        QRect titleArea = layout->titleArea();
-        int h = layout->verticalTitleBar ? titleArea.width() : titleArea.height();
-        QPoint p = mapToGlobal(QPoint(h, h));
-        move(p);
+        if (x() < 0 || y() < 0) //may happen if we have been hidden
+            move(QPoint());
+        setAttribute(Qt::WA_Moved, false); //we want it at the default position
     }
 }