16#include "virtualdesktops.h" 
   39    , m_window(windowItem->window())
 
   40    , m_windowItem(windowItem)
 
   45    : d(new Private(this, windowItem))
 
   54    d->managed = d->m_window->isClient();
 
   56    d->m_waylandWindow = qobject_cast<KWin::WaylandWindow *>(d->m_window) != 
nullptr;
 
   57    d->m_x11Window = qobject_cast<KWin::X11Window *>(d->m_window) != 
nullptr;
 
   60        Q_EMIT windowShown(this);
 
   63        Q_EMIT windowHidden(this);
 
   66        const MaximizeMode mode = d->m_window->maximizeMode();
 
   67        Q_EMIT windowMaximizedStateChanged(this, mode & MaximizeHorizontal, mode & MaximizeVertical);
 
   70        Q_EMIT windowMaximizedStateAboutToChange(this, m & MaximizeHorizontal, m & MaximizeVertical);
 
   73        Q_EMIT windowFrameGeometryAboutToChange(this);
 
   76        Q_EMIT windowStartUserMovedResized(this);
 
   79        Q_EMIT windowStepUserMovedResized(this, geometry);
 
   82        Q_EMIT windowFinishUserMovedResized(this);
 
   85        Q_EMIT windowOpacityChanged(this, oldOpacity, window->opacity());
 
   88        Q_EMIT minimizedChanged(this);
 
   91        Q_EMIT windowModalityChanged(this);
 
   94        Q_EMIT windowFrameGeometryChanged(this, oldGeometry);
 
   97        Q_EMIT windowDamaged(this);
 
  100        Q_EMIT windowUnresponsiveChanged(this, unresponsive);
 
  103        Q_EMIT windowKeepAboveChanged(this);
 
  106        Q_EMIT windowKeepBelowChanged(this);
 
  109        Q_EMIT windowFullScreenChanged(this);
 
  112        Q_EMIT windowExpandedGeometryChanged(this);
 
  115        Q_EMIT windowDecorationChanged(this);
 
  118        Q_EMIT windowDesktopsChanged(this);
 
 
  133    return d->m_windowItem;
 
 
  139    return _activities.isEmpty() || _activities.contains(activity);
 
 
  168    const QList<VirtualDesktop *> ds = 
desktops();
 
  169    return ds.isEmpty() || ds.contains(desktop);
 
 
  191    d->m_windowItem->refVisible(holder->
reason());
 
 
  196    d->m_windowItem->unrefVisible(holder->
reason());
 
 
  201    d->m_windowItem->scheduleRepaint(QRegion(r));
 
 
  206    d->m_windowItem->scheduleRepaint(d->m_windowItem->boundingRect());
 
 
  211    d->m_windowItem->scheduleRepaint(d->m_windowItem->mapFromGlobal(r));
 
 
  217        return group->effectGroup();
 
 
  229    d->m_window->unref();
 
 
  234    return d->m_window->output();
 
 
  237#define WINDOW_HELPER(rettype, prototype, toplevelPrototype) \ 
  238    rettype EffectWindow::prototype() const                  \ 
  240        return d->m_window->toplevelPrototype();             \ 
 
  267WINDOW_HELPER(
bool, isCriticalNotification, isCriticalNotification)
 
  284WINDOW_HELPER(
bool, isHiddenByShowDesktop, isHiddenByShowDesktop)
 
  291WINDOW_HELPER(
bool, isMovableAcrossScreens, isMovableAcrossScreens)
 
  308    if (
X11Window *x11Window = qobject_cast<X11Window *>(d->m_window)) {
 
  309        return x11Window->window();
 
 
  316    return d->m_window->resourceName() + QLatin1Char(
' ') + d->m_window->resourceClass();
 
 
  321    return d->m_window->clientGeometry().translated(-d->m_window->bufferGeometry().topLeft());
 
 
  326    return d->m_window->windowType();
 
 
  331    if (
auto window = qobject_cast<X11Window *>(d->m_window)) {
 
  332        return window->basicUnit();
 
 
  339    return d->m_window->rect() - d->m_window->frameMargins();
 
 
  344    return d->m_window->decoration();
 
 
  349    auto x11Window = qobject_cast<X11Window *>(d->m_window);
 
  353    if (!kwinApp()->x11Connection()) {
 
  356    uint32_t len = 32768;
 
  358        Xcb::Property prop(
false, x11Window->window(), atom, XCB_ATOM_ANY, 0, len);
 
  363        if (prop->bytes_after > 0) {
 
 
  373    auto x11Window = qobject_cast<X11Window *>(d->m_window);
 
  377    if (!kwinApp()->x11Connection()) {
 
  380    xcb_delete_property(kwinApp()->x11Connection(), x11Window->window(), atom);
 
 
  387        return modal->effectWindow();
 
 
  405    if (
auto window = qobject_cast<InternalWindow *>(d->m_window)) {
 
 
  415    QList<EffectWindow *> ret;
 
  416    ret.reserve(mainwindows.size());
 
  417    std::transform(std::cbegin(mainwindows), std::cend(mainwindows),
 
  418                   std::back_inserter(ret),
 
  420                       return window->effectWindow();
 
 
  432    if (!
data.isNull()) {
 
  433        d->dataMap[role] = 
data;
 
  435        d->dataMap.remove(role);
 
 
  442    return d->dataMap.value(role);
 
 
  452    if (d->m_window->isClient()) {
 
  453        d->m_window->setMinimized(
true);
 
 
  459    if (d->m_window->isClient()) {
 
  460        d->m_window->setMinimized(
false);
 
 
  466    if (d->m_window->isClient()) {
 
  467        d->m_window->closeWindow();
 
 
  478    return d->m_waylandWindow;
 
 
  483    return d->m_x11Window;
 
 
  501    const auto memberList = m_group->
members();
 
  502    QList<EffectWindow *> ret;
 
  503    ret.reserve(memberList.size());
 
  504    std::transform(std::cbegin(memberList), std::cend(memberList), std::back_inserter(ret), [](
auto window) {
 
  505        return window->effectWindow();
 
 
  512#include "moc_effectwindow.cpp" 
EffectWindowGroup(Group *group)
QList< EffectWindow * > members() const
virtual ~EffectWindowGroup()
Representation of a window used by/for Effect classes.
void elevate(bool elevate)
Q_SCRIPTABLE void addRepaint(const QRect &r)
const EffectWindowGroup * group() const
Q_SCRIPTABLE void addLayerRepaint(const QRect &r)
Q_SCRIPTABLE KWin::EffectWindow * transientFor()
bool isWaylandClient() const
WindowItem * m_windowItem
bool isOnCurrentActivity() const
WindowItem * windowItem() const
bool isOnAllActivities() const
bool isOnAllDesktops() const
void unrefVisible(const EffectWindowVisibleRef *holder)
Q_SCRIPTABLE void addRepaintFull()
Q_SCRIPTABLE bool isOnDesktop(KWin::VirtualDesktop *desktop) const
bool isOnCurrentDesktop() const
Q_SCRIPTABLE void setData(int role, const QVariant &data)
Q_SCRIPTABLE QVariant data(int role) const
Q_SCRIPTABLE void closeWindow()
Q_SCRIPTABLE QList< KWin::EffectWindow * > mainWindows() const
QByteArray readProperty(long atom, long type, int format) const
void refVisible(const EffectWindowVisibleRef *holder)
void setMinimized(bool minimize)
QRectF decorationInnerRect
QList< KWin::VirtualDesktop * > desktops
qlonglong windowId() const
Private(EffectWindow *q, WindowItem *windowItem)
QHash< int, QVariant > dataMap
void deleteProperty(long atom) const
Q_SCRIPTABLE KWin::EffectWindow * findModal()
KDecoration2::Decoration * decoration() const
EffectWindow(WindowItem *windowItem)
Q_SCRIPTABLE bool isOnActivity(const QString &id) const
Q_SCRIPTABLE void setElevatedWindow(KWin::EffectWindow *w, bool set)
KWin::VirtualDesktop * currentDesktop
void windowDataChanged(KWin::EffectWindow *w, int role)
const QList< X11Window * > & members() const
void interactiveMoveResizeStarted()
void frameGeometryAboutToChange()
virtual QList< Window * > mainWindows() const
void interactiveMoveResizeStepped(const QRectF &geometry)
void windowShown(KWin::Window *window)
void opacityChanged(KWin::Window *window, qreal oldOpacity)
void interactiveMoveResizeFinished()
void keepAboveChanged(bool)
void maximizedAboutToChange(MaximizeMode mode)
void frameGeometryChanged(const QRectF &oldGeometry)
void keepBelowChanged(bool)
void windowHidden(KWin::Window *window)
void unresponsiveChanged(bool)
void damaged(KWin::Window *window)
void visibleGeometryChanged()
QByteArray toByteArray(uint8_t format=8, xcb_atom_t type=XCB_ATOM_STRING, bool *ok=nullptr)
Reads the property as string and returns a QByteArray.
#define WINDOW_HELPER(rettype, prototype, toplevelPrototype)
QList< EffectWindow * > getMainWindows(T *c)