src/gui/widgets/qdockwidget.cpp
branchGCC_SURGE
changeset 31 5daf16870df6
parent 30 5dc02b23752f
--- a/src/gui/widgets/qdockwidget.cpp	Mon Jun 21 22:38:13 2010 +0100
+++ b/src/gui/widgets/qdockwidget.cpp	Thu Jul 22 16:41:55 2010 +0100
@@ -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
     }
 }