Add a client property to ThumbnailItem

Makes it a little bit easier to use a ThumbnailItem for a Client. E.g.
ThumbnailItem {
    client: model.client
}

instead of mapping the windowIds, which is rather uncomfty.
This commit is contained in:
Martin Gräßlin 2013-03-26 14:43:36 +01:00
parent 15b84c54f8
commit 6351472d28
2 changed files with 36 additions and 0 deletions

View file

@ -36,6 +36,7 @@ namespace KWin
ThumbnailItem::ThumbnailItem(QDeclarativeItem* parent) ThumbnailItem::ThumbnailItem(QDeclarativeItem* parent)
: QDeclarativeItem(parent) : QDeclarativeItem(parent)
, m_wId(0) , m_wId(0)
, m_client(NULL)
, m_clip(true) , m_clip(true)
, m_parent(QWeakPointer<EffectWindowImpl>()) , m_parent(QWeakPointer<EffectWindowImpl>())
, m_parentWindow(0) , m_parentWindow(0)
@ -108,10 +109,33 @@ void ThumbnailItem::findParentEffectWindow()
void ThumbnailItem::setWId(qulonglong wId) void ThumbnailItem::setWId(qulonglong wId)
{ {
if (m_wId == wId) {
return;
}
m_wId = wId; m_wId = wId;
if (m_wId != 0) {
setClient(Workspace::self()->findClient(WindowMatchPredicate(m_wId)));
} else if (m_client) {
m_client = NULL;
emit clientChanged();
}
emit wIdChanged(wId); emit wIdChanged(wId);
} }
void ThumbnailItem::setClient(Client *client)
{
if (m_client == client) {
return;
}
m_client = client;
if (m_client) {
setWId(m_client->window());
} else {
setWId(0);
}
emit clientChanged();
}
void ThumbnailItem::setClip(bool clip) void ThumbnailItem::setClip(bool clip)
{ {
m_clip = clip; m_clip = clip;

View file

@ -27,6 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
namespace KWin namespace KWin
{ {
class Client;
class EffectWindow; class EffectWindow;
class EffectWindowImpl; class EffectWindowImpl;
@ -38,6 +39,7 @@ class ThumbnailItem : public QDeclarativeItem
Q_PROPERTY(qulonglong parentWindow READ parentWindow WRITE setParentWindow) Q_PROPERTY(qulonglong parentWindow READ parentWindow WRITE setParentWindow)
Q_PROPERTY(qreal brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged) Q_PROPERTY(qreal brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged)
Q_PROPERTY(qreal saturation READ saturation WRITE setSaturation NOTIFY saturationChanged) Q_PROPERTY(qreal saturation READ saturation WRITE setSaturation NOTIFY saturationChanged)
Q_PROPERTY(KWin::Client *client READ client WRITE setClient NOTIFY clientChanged)
public: public:
explicit ThumbnailItem(QDeclarativeItem *parent = 0); explicit ThumbnailItem(QDeclarativeItem *parent = 0);
virtual ~ThumbnailItem(); virtual ~ThumbnailItem();
@ -57,6 +59,8 @@ public:
void setParentWindow(qulonglong parentWindow); void setParentWindow(qulonglong parentWindow);
qreal brightness() const; qreal brightness() const;
qreal saturation() const; qreal saturation() const;
Client *client() const;
void setClient(Client *client);
public Q_SLOTS: public Q_SLOTS:
void setBrightness(qreal brightness); void setBrightness(qreal brightness);
@ -67,6 +71,7 @@ Q_SIGNALS:
void clipChanged(bool clipped); void clipChanged(bool clipped);
void brightnessChanged(); void brightnessChanged();
void saturationChanged(); void saturationChanged();
void clientChanged();
private Q_SLOTS: private Q_SLOTS:
void init(); void init();
void effectWindowAdded(); void effectWindowAdded();
@ -75,6 +80,7 @@ private Q_SLOTS:
private: private:
void findParentEffectWindow(); void findParentEffectWindow();
qulonglong m_wId; qulonglong m_wId;
Client *m_client;
bool m_clip; bool m_clip;
QWeakPointer<EffectWindowImpl> m_parent; QWeakPointer<EffectWindowImpl> m_parent;
qulonglong m_parentWindow; qulonglong m_parentWindow;
@ -94,6 +100,12 @@ qreal ThumbnailItem::saturation() const
return m_saturation; return m_saturation;
} }
inline
Client *ThumbnailItem::client() const
{
return m_client;
}
} // KWin } // KWin
#endif // KWIN_THUMBNAILITEM_H #endif // KWIN_THUMBNAILITEM_H