summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwindow.cpp
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2011-05-16 16:39:50 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-05-16 16:40:32 +0200
commit25f70314e0e2aa5cb913aba108d2e9c16117004a (patch)
tree3a7a3a115ade70e24cf3b2a8887cf356da58cfe6 /src/gui/kernel/qwindow.cpp
parent276d60a4d6c9d1b72c4aa7df1f86e7ce9097beeb (diff)
Implement QWindow minimum/maximum/base size hints and size increments.
Diffstat (limited to 'src/gui/kernel/qwindow.cpp')
-rw-r--r--src/gui/kernel/qwindow.cpp76
1 files changed, 66 insertions, 10 deletions
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index 897b370cf5..5d4fd763b8 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -143,6 +143,15 @@ void QWindow::setParent(QWindow *parent)
d->parentWindow = parent;
}
+/*!
+ Returns whether the window is top level, i.e. parent-less.
+ */
+bool QWindow::isTopLevel() const
+{
+ Q_D(const QWindow);
+ return d->parentWindow == 0;
+}
+
void QWindow::setWindowFormat(const QWindowFormat &format)
{
Q_D(QWindow);
@@ -256,26 +265,68 @@ void QWindow::setWindowState(Qt::WindowState state)
QSize QWindow::minimumSize() const
{
- qDebug() << "unimplemented:" << __FILE__ << __LINE__;
- return QSize();
+ Q_D(const QWindow);
+ return d->minimumSize;
}
QSize QWindow::maximumSize() const
{
- qDebug() << "unimplemented:" << __FILE__ << __LINE__;
- return QSize();
+ Q_D(const QWindow);
+ return d->maximumSize;
}
-void QWindow::setMinimumSize(const QSize &size) const
+QSize QWindow::baseSize() const
{
- Q_UNUSED(size);
- qDebug() << "unimplemented:" << __FILE__ << __LINE__;
+ Q_D(const QWindow);
+ return d->baseSize;
}
-void QWindow::setMaximumSize(const QSize &size) const
+QSize QWindow::sizeIncrement() const
{
- Q_UNUSED(size);
- qDebug() << "unimplemented:" << __FILE__ << __LINE__;
+ Q_D(const QWindow);
+ return d->sizeIncrement;
+}
+
+void QWindow::setMinimumSize(const QSize &size)
+{
+ Q_D(QWindow);
+ QSize adjustedSize = QSize(qBound(0, size.width(), QWINDOWSIZE_MAX), qBound(0, size.height(), QWINDOWSIZE_MAX));
+ if (d->minimumSize == adjustedSize)
+ return;
+ d->minimumSize = adjustedSize;
+ if (d->platformWindow && isTopLevel())
+ d->platformWindow->propagateSizeHints();
+}
+
+void QWindow::setMaximumSize(const QSize &size)
+{
+ Q_D(QWindow);
+ QSize adjustedSize = QSize(qBound(0, size.width(), QWINDOWSIZE_MAX), qBound(0, size.height(), QWINDOWSIZE_MAX));
+ if (d->maximumSize == adjustedSize)
+ return;
+ d->maximumSize = adjustedSize;
+ if (d->platformWindow && isTopLevel())
+ d->platformWindow->propagateSizeHints();
+}
+
+void QWindow::setBaseSize(const QSize &size)
+{
+ Q_D(QWindow);
+ if (d->baseSize == size)
+ return;
+ d->baseSize = size;
+ if (d->platformWindow && isTopLevel())
+ d->platformWindow->propagateSizeHints();
+}
+
+void QWindow::setSizeIncrement(const QSize &size)
+{
+ Q_D(QWindow);
+ if (d->sizeIncrement == size)
+ return;
+ d->sizeIncrement = size;
+ if (d->platformWindow && isTopLevel())
+ d->platformWindow->propagateSizeHints();
}
void QWindow::setGeometry(const QRect &rect)
@@ -464,4 +515,9 @@ void QWindow::wheelEvent(QWheelEvent *)
}
#endif //QT_NO_WHEELEVENT
+Q_GUI_EXPORT QWindowPrivate *qt_window_private(QWindow *window)
+{
+ return window->d_func();
+}
+
QT_END_NAMESPACE