summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-08-02 11:08:16 +0300
committerQt by Nokia <qt-info@nokia.com>2012-08-07 16:40:07 +0200
commit6292c5130658af66b55b91c55e8458a3a2f4060f (patch)
tree483ef4ff7db91e2fc82e5bb230a719f64b475526 /src/plugins
parente361a3f178b3efcb676fb5216e019f37691b171e (diff)
Properly manage window geometry in kms
If QWindow::setGeometry() is called before QWindow::create(), QKmsWindow::setGeometry() is not called at all. This is wrong because there is some special size restricting happening there which must never be skipped. Change-Id: I321632d4fdb327b0a75e6791c019b3f4c2793888 Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com> Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/kms/qkmswindow.cpp11
-rw-r--r--src/plugins/platforms/kms/qkmswindow.h2
2 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/platforms/kms/qkmswindow.cpp b/src/plugins/platforms/kms/qkmswindow.cpp
index 691d9a832c..f016d9d621 100644
--- a/src/plugins/platforms/kms/qkmswindow.cpp
+++ b/src/plugins/platforms/kms/qkmswindow.cpp
@@ -43,22 +43,25 @@
#include "qkmsscreen.h"
#include <qpa/qwindowsysteminterface.h>
+#include <qpa/qplatformwindow_p.h>
+
QT_BEGIN_NAMESPACE
QKmsWindow::QKmsWindow(QWindow *window)
: QPlatformWindow(window)
{
+ Q_D(QPlatformWindow);
m_screen = QPlatformScreen::platformScreenForWindow(window);
-
static_cast<QKmsScreen *>(m_screen)->initializeWithFormat(window->requestedFormat());
+ setGeometry(d->rect); // rect is set to window->geometry() in base ctor
}
void QKmsWindow::setGeometry(const QRect &rect)
{
- Q_UNUSED(rect)
- //All Windows must be fullscreen
+ // All windows must be fullscreen
QRect fullscreenRect = m_screen->availableGeometry();
- QWindowSystemInterface::handleGeometryChange(window(), fullscreenRect);
+ if (rect != fullscreenRect)
+ QWindowSystemInterface::handleGeometryChange(window(), fullscreenRect);
QPlatformWindow::setGeometry(fullscreenRect);
}
diff --git a/src/plugins/platforms/kms/qkmswindow.h b/src/plugins/platforms/kms/qkmswindow.h
index c9b3c2692f..ba76b2beac 100644
--- a/src/plugins/platforms/kms/qkmswindow.h
+++ b/src/plugins/platforms/kms/qkmswindow.h
@@ -48,6 +48,8 @@ QT_BEGIN_NAMESPACE
class QKmsWindow : public QPlatformWindow
{
+ Q_DECLARE_PRIVATE(QPlatformWindow)
+
public:
QKmsWindow(QWindow *window);