Add paintedWidth and paintedHeight properties to WindowThumbnail

REVIEW: 118886
This commit is contained in:
Kai Uwe Broulik 2014-06-23 19:58:15 +02:00
parent ce5d182510
commit 347e073df3
2 changed files with 24 additions and 1 deletions

View File

@ -64,6 +64,7 @@ WindowThumbnail::WindowThumbnail(QQuickItem *parent)
, QAbstractNativeEventFilter() , QAbstractNativeEventFilter()
, m_xcb(false) , m_xcb(false)
, m_winId(0) , m_winId(0)
, m_paintedSize(QSizeF())
, m_damaged(false) , m_damaged(false)
, m_depth(0) , m_depth(0)
#if HAVE_XCB_COMPOSITE #if HAVE_XCB_COMPOSITE
@ -140,6 +141,16 @@ void WindowThumbnail::setWinId(uint32_t winId)
emit winIdChanged(); emit winIdChanged();
} }
qreal WindowThumbnail::paintedWidth() const
{
return m_paintedSize.width();
}
qreal WindowThumbnail::paintedHeight() const
{
return m_paintedSize.height();
}
QSGNode *WindowThumbnail::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData) QSGNode *WindowThumbnail::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData)
{ {
Q_UNUSED(updatePaintNodeData) Q_UNUSED(updatePaintNodeData)
@ -154,7 +165,11 @@ QSGNode *WindowThumbnail::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData
windowToTexture(node); windowToTexture(node);
} }
node->setRect(boundingRect()); node->setRect(boundingRect());
const QSize size(node->texture()->textureSize().scaled(boundingRect().size().toSize(), Qt::KeepAspectRatio)); const QSizeF size(node->texture()->textureSize().scaled(boundingRect().size().toSize(), Qt::KeepAspectRatio));
if (size != m_paintedSize) {
m_paintedSize = size;
emit paintedSizeChanged();
}
const qreal x = boundingRect().x() + (boundingRect().width() - size.width()) / 2; const qreal x = boundingRect().x() + (boundingRect().width() - size.width()) / 2;
const qreal y = boundingRect().y() + (boundingRect().height() - size.height()) / 2; const qreal y = boundingRect().y() + (boundingRect().height() - size.height()) / 2;
node->setRect(QRectF(QPointF(x, y), size)); node->setRect(QRectF(QPointF(x, y), size));

View File

@ -73,6 +73,9 @@ class WindowThumbnail : public QQuickItem, public QAbstractNativeEventFilter
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(uint winId READ winId WRITE setWinId NOTIFY winIdChanged) Q_PROPERTY(uint winId READ winId WRITE setWinId NOTIFY winIdChanged)
Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedSizeChanged)
Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedSizeChanged)
public: public:
WindowThumbnail(QQuickItem *parent = 0); WindowThumbnail(QQuickItem *parent = 0);
virtual ~WindowThumbnail(); virtual ~WindowThumbnail();
@ -82,8 +85,12 @@ public:
uint32_t winId() const; uint32_t winId() const;
void setWinId(uint32_t winId); void setWinId(uint32_t winId);
qreal paintedWidth() const;
qreal paintedHeight() const;
Q_SIGNALS: Q_SIGNALS:
void winIdChanged(); void winIdChanged();
void paintedSizeChanged();
private: private:
void iconToTexture(WindowTextureNode *textureNode); void iconToTexture(WindowTextureNode *textureNode);
@ -94,6 +101,7 @@ private:
void discardPixmap(); void discardPixmap();
bool m_xcb; bool m_xcb;
uint32_t m_winId; uint32_t m_winId;
QSizeF m_paintedSize;
bool m_damaged; bool m_damaged;
int m_depth; int m_depth;
#if HAVE_XCB_COMPOSITE #if HAVE_XCB_COMPOSITE