summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwindow.cpp
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2011-05-16 17:28:56 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-05-16 17:28:56 +0200
commit10a3b10726d2f46b2a284ecb7533bb9226f8c7c8 (patch)
treeee180a5d21a15d0b26b1bb14c10ca1890b675192 /src/gui/kernel/qwindow.cpp
parent25f70314e0e2aa5cb913aba108d2e9c16117004a (diff)
Re-implement transient window support in XCB backend.
If a QWindow has a parent but is top-level the corresponding QPlatformWindow should not be re-parented but instead be made transient for the parent window if possible.
Diffstat (limited to 'src/gui/kernel/qwindow.cpp')
-rw-r--r--src/gui/kernel/qwindow.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index 5d4fd763b8..3b01a0d352 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -97,7 +97,7 @@ void QWindow::create()
QObject *object = childObjects.at(i);
if(object->isWindowType()) {
QWindow *window = static_cast<QWindow *>(object);
- if (window->d_func()->platformWindow)
+ if (window->d_func()->platformWindow && !window->isTopLevel())
window->d_func()->platformWindow->setParent(d->platformWindow);
}
}
@@ -133,9 +133,9 @@ void QWindow::setParent(QWindow *parent)
QObject::setParent(parent);
if (d->platformWindow) {
- if (parent && parent->d_func()->platformWindow) {
+ if (parent && parent->d_func()->platformWindow && !isTopLevel()) {
d->platformWindow->setParent(parent->d_func()->platformWindow);
- } else if (!parent) {
+ } else {
d->platformWindow->setParent(0);
}
}
@@ -144,12 +144,12 @@ void QWindow::setParent(QWindow *parent)
}
/*!
- Returns whether the window is top level, i.e. parent-less.
+ Returns whether the window is top level.
*/
bool QWindow::isTopLevel() const
{
Q_D(const QWindow);
- return d->parentWindow == 0;
+ return d->windowFlags & Qt::Window;
}
void QWindow::setWindowFormat(const QWindowFormat &format)
@@ -196,6 +196,12 @@ Qt::WindowFlags QWindow::windowFlags() const
return d->windowFlags;
}
+Qt::WindowType QWindow::windowType() const
+{
+ Q_D(const QWindow);
+ return static_cast<Qt::WindowType>(int(d->windowFlags & Qt::WindowType_Mask));
+}
+
void QWindow::setWindowTitle(const QString &title)
{
Q_D(QWindow);