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
parent
686dcce5fb
commit
fe6add818e
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue