Enablers in fbconvenience for Android port

Additions to make the convenience classes work for the
Qt for Android port.

Change-Id: I25ba0faf93c7e09ab04a3fa0784e04631e5ab036
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
bb10
Eskil Abrahamsen Blomfeldt 2013-02-04 17:03:38 +01:00 committed by The Qt Project
parent 686dcce5fb
commit fe6add818e
4 changed files with 51 additions and 11 deletions

View File

@ -45,6 +45,7 @@
#include "qfbbackingstore_p.h"
#include <QtGui/QPainter>
#include <qpa/qwindowsysteminterface.h>
QT_BEGIN_NAMESPACE
@ -72,6 +73,9 @@ void QFbScreen::addWindow(QFbWindow *window)
mWindowStack.prepend(window);
invalidateRectCache();
setDirty(window->geometry());
QWindow *w = topWindow();
QWindowSystemInterface::handleWindowActivated(w);
topWindowChanged(w);
}
void QFbScreen::removeWindow(QFbWindow *window)
@ -79,6 +83,9 @@ void QFbScreen::removeWindow(QFbWindow *window)
mWindowStack.removeOne(window);
invalidateRectCache();
setDirty(window->geometry());
QWindow *w = topWindow();
QWindowSystemInterface::handleWindowActivated(w);
topWindowChanged(w);
}
void QFbScreen::raise(QFbWindow *window)
@ -89,6 +96,9 @@ void QFbScreen::raise(QFbWindow *window)
mWindowStack.move(index, 0);
invalidateRectCache();
setDirty(window->geometry());
QWindow *w = topWindow();
QWindowSystemInterface::handleWindowActivated(w);
topWindowChanged(w);
}
void QFbScreen::lower(QFbWindow *window)
@ -99,20 +109,25 @@ void QFbScreen::lower(QFbWindow *window)
mWindowStack.move(index, mWindowStack.size() - 1);
invalidateRectCache();
setDirty(window->geometry());
QWindow *w = topWindow();
QWindowSystemInterface::handleWindowActivated(w);
topWindowChanged(w);
}
QWindow *QFbScreen::topWindow()
{
foreach (QFbWindow *fbw, mWindowStack)
if (fbw->window()->type() == Qt::Window || fbw->window()->type() == Qt::Dialog)
return fbw->window();
return 0;
}
QWindow *QFbScreen::topLevelAt(const QPoint & p) const
{
Q_UNUSED(p);
#if 0
for (int i = 0; i < mWindowStack.size(); i++) {
if (mWindowStack[i]->geometry().contains(p, false) &&
mWindowStack[i]->visible() &&
!mWindowStack[i]->widget()->isMinimized()) {
return mWindowStack[i]->widget();
}
foreach (QFbWindow *fbw, mWindowStack) {
if (fbw->geometry().contains(p, false) && fbw->window()->isVisible())
return fbw->window();
}
#endif
return 0;
}
@ -126,6 +141,24 @@ void QFbScreen::setDirty(const QRect &rect)
}
}
void QFbScreen::setPhysicalSize(const QSize &size)
{
mPhysicalSize = size;
}
void QFbScreen::setGeometry(const QRect &rect)
{
delete mCompositePainter;
mCompositePainter = 0;
delete mScreenImage;
mGeometry = rect;
mScreenImage = new QImage(mGeometry.size(), mFormat);
invalidateRectCache();
QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), geometry());
QWindowSystemInterface::handleScreenAvailableGeometryChange(QPlatformScreen::screen(), availableGeometry());
resizeMaximizedWindows();
}
void QFbScreen::generateRects()
{
mCachedRects.clear();

View File

@ -64,6 +64,7 @@ public:
virtual QImage::Format format() const { return mFormat; }
virtual QSizeF physicalSize() const { return mPhysicalSize; }
QWindow *topWindow();
virtual QWindow *topLevelAt(const QPoint & p) const;
// compositor api
@ -71,7 +72,12 @@ public:
virtual void removeWindow(QFbWindow *window);
virtual void raise(QFbWindow *window);
virtual void lower(QFbWindow *window);
virtual void topWindowChanged(QWindow *){}
public slots:
virtual void setDirty(const QRect &rect);
void setPhysicalSize(const QSize &size);
void setGeometry(const QRect &rect);
protected slots:
virtual QRegion doRedraw();

View File

@ -43,6 +43,7 @@
#include "qfbscreen_p.h"
#include <QtGui/QScreen>
#include <qpa/qwindowsysteminterface.h>
QT_BEGIN_NAMESPACE
@ -71,7 +72,7 @@ void QFbWindow::setGeometry(const QRect &rect)
mOldGeometry = geometry();
platformScreen()->invalidateRectCache();
//### QWindowSystemInterface::handleGeometryChange(window(), rect);
QWindowSystemInterface::handleGeometryChange(window(), rect);
QPlatformWindow::setGeometry(rect);
}

View File

@ -58,7 +58,7 @@ public:
virtual void raise();
virtual void lower();
void setGeometry(const QRect &rect);
virtual void setGeometry(const QRect &rect);
virtual void setWindowFlags(Qt::WindowFlags type);
virtual Qt::WindowFlags windowFlags() const;