1
0
mirror of https://github.com/KDE/latte-dock.git synced 2025-02-02 21:47:22 +03:00

abstractwindowinterface now is based over an variant class type

This commit is contained in:
Johan Smith Agudelo Rodriguez 2017-06-08 17:10:49 -05:00
parent 111d59e1c5
commit 2040ac3063
9 changed files with 154 additions and 113 deletions

View File

@ -38,12 +38,12 @@ AbstractWindowInterface::~AbstractWindowInterface()
{
}
void AbstractWindowInterface::addDock(WId wid)
void AbstractWindowInterface::addDock(WindowId wid)
{
m_docks.push_back(wid);
}
void AbstractWindowInterface::removeDock(WId wid)
void AbstractWindowInterface::removeDock(WindowId wid)
{
auto it = std::find(m_docks.begin(), m_docks.end(), wid);

View File

@ -41,6 +41,7 @@
namespace Latte {
class XWindowInterface;
class WaylandInterface;
class AbstractWindowInterface : public QObject {
Q_OBJECT
@ -58,37 +59,37 @@ public:
virtual ~AbstractWindowInterface();
virtual void setDockExtraFlags(QQuickWindow &view) = 0;
virtual void setDockStruts(WId dockId, const QRect &dockRect
virtual void setDockStruts(WindowId dockId, const QRect &dockRect
, const QScreen &screen, Plasma::Types::Location location) const = 0;
virtual void removeDockStruts(WId dockId) const = 0;
virtual void removeDockStruts(WindowId dockId) const = 0;
virtual WId activeWindow() const = 0;
virtual WindowInfoWrap requestInfo(WId wid) const = 0;
virtual WindowId activeWindow() const = 0;
virtual WindowInfoWrap requestInfo(WindowId wid) const = 0;
virtual WindowInfoWrap requestInfoActive() const = 0;
virtual bool isOnCurrentDesktop(WId wid) const = 0;
virtual const std::list<WId> &windows() const = 0;
virtual bool isOnCurrentDesktop(WindowId wid) const = 0;
virtual const std::list<WindowId> &windows() const = 0;
virtual void skipTaskBar(const QDialog &dialog) const = 0;
virtual void slideWindow(QQuickWindow &view, Slide location) const = 0;
virtual void enableBlurBehind(QQuickWindow &view) const = 0;
void addDock(WId wid);
void removeDock(WId wid);
void addDock(WindowId wid);
void removeDock(WindowId wid);
static AbstractWindowInterface &self();
signals:
void activeWindowChanged(WId wid);
void windowChanged(WId winfo);
void windowAdded(WId wid);
void windowRemoved(WId wid);
void activeWindowChanged(WindowId wid);
void windowChanged(WindowId winfo);
void windowAdded(WindowId wid);
void windowRemoved(WindowId wid);
void currentDesktopChanged();
void currentActivityChanged();
protected:
std::list<WId> m_windows;
std::list<WId> m_docks;
std::list<WindowId> m_windows;
std::list<WindowId> m_docks;
QPointer<KActivities::Consumer> m_activities;
static std::unique_ptr<AbstractWindowInterface> m_wm;

View File

@ -151,19 +151,19 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
case Dock::DodgeAllWindows: {
for (const auto &wid : wm->windows()) {
windows.insert(std::make_pair(wid, wm->requestInfo(wid)));
windows.insert(wid, wm->requestInfo(wid));
}
connections[0] = connect(wm, &WindowSystem::windowChanged
, this, &VisibilityManagerPrivate::dodgeWindows);
connections[1] = connect(wm, &WindowSystem::windowRemoved
, this, [&](WId wid) {
windows.erase(wid);
, this, [&](WindowId wid) {
windows.remove(wid);
timerCheckWindows.start();
});
connections[2] = connect(wm, &WindowSystem::windowAdded
, this, [&](WId wid) {
windows.insert(std::make_pair(wid, wm->requestInfo(wid)));
, this, [&](WindowId wid) {
windows.insert(wid, wm->requestInfo(wid));
timerCheckWindows.start();
});
@ -171,9 +171,11 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
}
break;
case Dock::WindowsGoBelow: {
//
}
case Dock::WindowsGoBelow:
break;
default:
break;
}
view->containment()->config().writeEntry("visibility", static_cast<int>(mode));
@ -308,6 +310,8 @@ void VisibilityManagerPrivate::updateHiddenState()
case Dock::DodgeAllWindows:
dodgeWindows(wm->activeWindow());
break;
default:
break;
}
}
@ -323,7 +327,7 @@ inline void VisibilityManagerPrivate::setDockGeometry(const QRect &geometry)
}
}
void VisibilityManagerPrivate::dodgeActive(WId wid)
void VisibilityManagerPrivate::dodgeActive(WindowId wid)
{
if (raiseTemporarily)
return;
@ -344,7 +348,7 @@ void VisibilityManagerPrivate::dodgeActive(WId wid)
raiseDock(!intersects(winfo));
}
void VisibilityManagerPrivate::dodgeMaximized(WId wid)
void VisibilityManagerPrivate::dodgeMaximized(WindowId wid)
{
if (raiseTemporarily)
return;
@ -376,7 +380,7 @@ void VisibilityManagerPrivate::dodgeMaximized(WId wid)
? !isMaxHoriz() : !isMaxVert());
}
void VisibilityManagerPrivate::dodgeWindows(WId wid)
void VisibilityManagerPrivate::dodgeWindows(WindowId wid)
{
if (raiseTemporarily)
return;
@ -404,14 +408,14 @@ void VisibilityManagerPrivate::checkAllWindows()
bool raise{true};
for (const auto &winfo : windows) {
//! std::pair<WId, WindowInfoWrap>
if (!std::get<1>(winfo).isValid() || !wm->isOnCurrentDesktop(std::get<0>(winfo)))
//! std::pair<WindowId, WindowInfoWrap>
if (winfo.isValid() || !wm->isOnCurrentDesktop(winfo.wid()))
continue;
if (std::get<1>(winfo).isFullscreen()) {
if (winfo.isFullscreen()) {
raise = false;
break;
} else if (intersects(std::get<1>(winfo))) {
} else if (intersects(winfo)) {
raise = false;
break;
}
@ -523,6 +527,9 @@ void VisibilityManagerPrivate::viewEventManager(QEvent *ev)
case QEvent::Show:
wm->setDockExtraFlags(*view);
break;
default:
break;
}
}
//! END: VisibilityManagerPrivate implementation

View File

@ -5,12 +5,13 @@
#include "windowinfowrap.h"
#include "abstractwindowinterface.h"
#include <unordered_map>
#include <memory>
#include <QObject>
#include <QTimer>
#include <QEvent>
#include <QVariant>
#include <QMap>
#include <plasmaquick/containmentview.h>
@ -43,10 +44,10 @@ public:
void setDockGeometry(const QRect &rect);
void windowAdded(WId id);
void dodgeActive(WId id);
void dodgeMaximized(WId id);
void dodgeWindows(WId id);
void windowAdded(WindowId id);
void dodgeActive(WindowId id);
void dodgeMaximized(WindowId id);
void dodgeWindows(WindowId id);
void checkAllWindows();
bool intersects(const WindowInfoWrap &winfo);
@ -61,7 +62,7 @@ public:
AbstractWindowInterface *wm;
Dock::Visibility mode{Dock::None};
std::array<QMetaObject::Connection, 5> connections;
std::unordered_map<WId, WindowInfoWrap> windows;
QMap<WindowId, WindowInfoWrap> windows;
QTimer timerShow;
QTimer timerHide;
QTimer timerCheckWindows;

View File

@ -42,9 +42,9 @@ WaylandInterface::WaylandInterface(QObject *parent)
(&KWindowSystem::windowChanged)
, this, &WaylandInterface::windowChangedProxy);
auto addWindow = [&](WId wid) {
auto addWindow = [&](WindowId wid) {
if (std::find(m_windows.cbegin(), m_windows.cend(), wid) == m_windows.cend()) {
if (isValidWindow(KWindowInfo(wid, NET::WMWindowType))) {
if (isValidWindow(KWindowInfo(wid.value<WId>(), NET::WMWindowType))) {
m_windows.push_back(wid);
emit windowAdded(wid);
}
@ -52,7 +52,7 @@ WaylandInterface::WaylandInterface(QObject *parent)
};
connect(KWindowSystem::self(), &KWindowSystem::windowAdded, this, addWindow);
connect(KWindowSystem::self(), &KWindowSystem::windowRemoved, [this](WId wid) {
connect(KWindowSystem::self(), &KWindowSystem::windowRemoved, [this](WindowId wid) {
if (std::find(m_windows.cbegin(), m_windows.cend(), wid) != m_windows.end()) {
m_windows.remove(wid);
emit windowRemoved(wid);
@ -81,7 +81,7 @@ void WaylandInterface::setDockExtraFlags(QQuickWindow &view)
KWindowSystem::setOnActivities(view.winId(), {"0"});
}
void WaylandInterface::setDockStruts(WId dockId, const QRect &dockRect
void WaylandInterface::setDockStruts(WindowId dockId, const QRect &dockRect
, const QScreen &screen, Plasma::Types::Location location) const
{
NETExtendedStrut strut;
@ -127,7 +127,7 @@ void WaylandInterface::setDockStruts(WId dockId, const QRect &dockRect
return;
}
KWindowSystem::setExtendedStrut(dockId,
KWindowSystem::setExtendedStrut(dockId.value<WId>(),
strut.left_width, strut.left_start, strut.left_end,
strut.right_width, strut.right_start, strut.right_end,
strut.top_width, strut.top_start, strut.top_end,
@ -135,17 +135,17 @@ void WaylandInterface::setDockStruts(WId dockId, const QRect &dockRect
);
}
void WaylandInterface::removeDockStruts(WId dockId) const
void WaylandInterface::removeDockStruts(WindowId dockId) const
{
KWindowSystem::setStrut(dockId, 0, 0, 0, 0);
KWindowSystem::setStrut(dockId.value<WId>(), 0, 0, 0, 0);
}
WId WaylandInterface::activeWindow() const
WindowId WaylandInterface::activeWindow() const
{
return KWindowSystem::self()->activeWindow();
}
const std::list<WId> &WaylandInterface::windows() const
const std::list<WindowId> &WaylandInterface::windows() const
{
return m_windows;
}
@ -193,13 +193,13 @@ WindowInfoWrap WaylandInterface::requestInfoActive() const
return requestInfo(KWindowSystem::activeWindow());
}
bool WaylandInterface::isOnCurrentDesktop(WId wid) const
bool WaylandInterface::isOnCurrentDesktop(WindowId wid) const
{
KWindowInfo winfo(wid, NET::WMDesktop);
KWindowInfo winfo(wid.value<WId>(), NET::WMDesktop);
return winfo.valid() && winfo.isOnCurrentDesktop();
}
WindowInfoWrap WaylandInterface::requestInfo(WId wid) const
WindowInfoWrap WaylandInterface::requestInfo(WindowId wid) const
{
/* const KWindowInfo winfo{wid, NET::WMFrameExtents
| NET::WMWindowType
@ -248,7 +248,7 @@ bool WaylandInterface::isValidWindow(const KWindowInfo &winfo) const
//return !((winType & NET::Menu) || (winType & NET::Dock) || (winType & NET::Splash));
}
void WaylandInterface::windowChangedProxy(WId wid, NET::Properties prop1, NET::Properties2 prop2)
void WaylandInterface::windowChangedProxy(WindowId wid, NET::Properties prop1, NET::Properties2 prop2)
{
//! if the dock changed is ignored
/* if (std::find(m_docks.cbegin(), m_docks.cend(), wid) != m_docks.cend())

View File

@ -39,16 +39,16 @@ public:
~WaylandInterface() override;
void setDockExtraFlags(QQuickWindow &view) override;
void setDockStruts(WId dockId, const QRect &dockRect
void setDockStruts(WindowId dockId, const QRect &dockRect
, const QScreen &screen, Plasma::Types::Location location) const override;
void removeDockStruts(WId dockId) const override;
void removeDockStruts(WindowId dockId) const override;
WId activeWindow() const override;
WindowInfoWrap requestInfo(WId wid) const override;
WindowId activeWindow() const override;
WindowInfoWrap requestInfo(WindowId wid) const override;
WindowInfoWrap requestInfoActive() const override;
bool isOnCurrentDesktop(WId wid) const override;
const std::list<WId> &windows() const override;
bool isOnCurrentDesktop(WindowId wid) const override;
const std::list<WindowId> &windows() const override;
void skipTaskBar(const QDialog &dialog) const override;
void slideWindow(QQuickWindow &view, Slide location) const override;
@ -56,9 +56,9 @@ public:
private:
bool isValidWindow(const KWindowInfo &winfo) const;
void windowChangedProxy(WId wid, NET::Properties prop1, NET::Properties2 prop2);
void windowChangedProxy(WindowId wid, NET::Properties prop1, NET::Properties2 prop2);
WId m_desktopId;
WindowId m_desktopId;
};
}

View File

@ -23,14 +23,16 @@
#include <QWindow>
#include <QRect>
#include <QVariant>
namespace Latte {
using WindowId = QVariant;
class WindowInfoWrap {
Q_DISABLE_COPY(WindowInfoWrap)
public:
constexpr WindowInfoWrap() noexcept
WindowInfoWrap() noexcept
: m_isValid(false)
, m_isActive(false)
, m_isMinimized(false)
@ -42,7 +44,21 @@ public:
{
}
constexpr WindowInfoWrap(WindowInfoWrap &&o) noexcept
WindowInfoWrap(const WindowInfoWrap &o)
: m_wid(o.m_wid)
, m_geometry(o.m_geometry)
, m_isValid(o.m_isValid)
, m_isActive(o.m_isActive)
, m_isMinimized(o.m_isMinimized)
, m_isMaxVert(o.m_isMaxVert)
, m_isMaxHoriz(o.m_isMaxHoriz)
, m_isFullscreen(o.m_isFullscreen)
, m_isShaded(o.m_isShaded)
, m_isPlasmaDesktop(o.m_isPlasmaDesktop)
{
}
WindowInfoWrap(WindowInfoWrap &&o) noexcept
: m_wid(std::move(o.m_wid))
, m_geometry(std::move(o.m_geometry))
, m_isValid(o.m_isValid)
@ -57,44 +73,45 @@ public:
}
inline WindowInfoWrap &operator=(WindowInfoWrap &&rhs) noexcept;
constexpr bool operator==(const WindowInfoWrap &rhs) const noexcept;
constexpr bool operator<(const WindowInfoWrap &rhs) const noexcept;
constexpr bool operator>(const WindowInfoWrap &rhs) const noexcept;
inline WindowInfoWrap &operator=(const WindowInfoWrap &rhs) noexcept;
inline bool operator==(const WindowInfoWrap &rhs) const noexcept;
inline bool operator<(const WindowInfoWrap &rhs) const noexcept;
inline bool operator>(const WindowInfoWrap &rhs) const noexcept;
constexpr bool isValid() const noexcept;
inline bool isValid() const noexcept;
inline void setIsValid(bool isValid) noexcept;
constexpr bool isActive() const noexcept;
inline bool isActive() const noexcept;
inline void setIsActive(bool isActive) noexcept;
constexpr bool isMinimized() const noexcept;
inline bool isMinimized() const noexcept;
inline void setIsMinimized(bool isMinimized) noexcept;
constexpr bool isMaximized() const noexcept;
inline bool isMaximized() const noexcept;
constexpr bool isMaxVert() const noexcept;
inline bool isMaxVert() const noexcept;
inline void setIsMaxVert(bool isMaxVert) noexcept;
constexpr bool isMaxHoriz() const noexcept;
inline bool isMaxHoriz() const noexcept;
inline void setIsMaxHoriz(bool isMaxHoriz) noexcept;
constexpr bool isFullscreen() const noexcept;
inline bool isFullscreen() const noexcept;
inline void setIsFullscreen(bool isFullscreen) noexcept;
constexpr bool isShaded() const noexcept;
inline bool isShaded() const noexcept;
inline void setIsShaded(bool isShaded) noexcept;
constexpr bool isPlasmaDesktop() const noexcept;
inline bool isPlasmaDesktop() const noexcept;
inline void setIsPlasmaDesktop(bool isPlasmaDesktop) noexcept;
constexpr QRect geometry() const noexcept;
inline QRect geometry() const noexcept;
inline void setGeometry(const QRect &geometry) noexcept;
constexpr WId wid() const noexcept;
inline void setWid(WId wid) noexcept;
inline WindowId wid() const noexcept;
inline void setWid(WindowId wid) noexcept;
private:
WId m_wid {0};
WindowId m_wid{0};
QRect m_geometry;
bool m_isValid : 1;
@ -123,22 +140,37 @@ inline WindowInfoWrap &WindowInfoWrap::operator=(WindowInfoWrap &&rhs) noexcept
return *this;
}
constexpr bool WindowInfoWrap::operator==(const WindowInfoWrap &rhs) const noexcept
inline WindowInfoWrap &WindowInfoWrap::operator=(const WindowInfoWrap &rhs) noexcept
{
m_wid = rhs.m_wid;
m_geometry = std::move(rhs.m_geometry);
m_isValid = rhs.m_isValid;
m_isActive = rhs.m_isActive;
m_isMinimized = rhs.m_isMinimized;
m_isMaxVert = rhs.m_isMaxVert;
m_isMaxHoriz = rhs.m_isMaxHoriz;
m_isFullscreen = rhs.m_isFullscreen;
m_isShaded = rhs.m_isShaded;
m_isPlasmaDesktop = rhs.m_isPlasmaDesktop;
return *this;
}
inline bool WindowInfoWrap::operator==(const WindowInfoWrap &rhs) const noexcept
{
return m_wid == rhs.m_wid;
}
constexpr bool WindowInfoWrap::operator<(const WindowInfoWrap &rhs) const noexcept
inline bool WindowInfoWrap::operator<(const WindowInfoWrap &rhs) const noexcept
{
return m_wid < rhs.m_wid;
}
constexpr bool WindowInfoWrap::operator>(const WindowInfoWrap &rhs) const noexcept
inline bool WindowInfoWrap::operator>(const WindowInfoWrap &rhs) const noexcept
{
return m_wid > rhs.m_wid;
}
constexpr bool WindowInfoWrap::isValid() const noexcept
inline bool WindowInfoWrap::isValid() const noexcept
{
return m_isValid;
}
@ -148,7 +180,7 @@ inline void WindowInfoWrap::setIsValid(bool isValid) noexcept
m_isValid = isValid;
}
constexpr bool WindowInfoWrap::isActive() const noexcept
inline bool WindowInfoWrap::isActive() const noexcept
{
return m_isActive;
}
@ -158,7 +190,7 @@ inline void WindowInfoWrap::setIsActive(bool isActive) noexcept
m_isActive = isActive;
}
constexpr bool WindowInfoWrap::isMinimized() const noexcept
inline bool WindowInfoWrap::isMinimized() const noexcept
{
return m_isMinimized;
}
@ -168,12 +200,12 @@ inline void WindowInfoWrap::setIsMinimized(bool isMinimized) noexcept
m_isMinimized = isMinimized;
}
constexpr bool WindowInfoWrap::isMaximized() const noexcept
inline bool WindowInfoWrap::isMaximized() const noexcept
{
return m_isMaxVert || m_isMaxHoriz;
}
constexpr bool WindowInfoWrap::isMaxVert() const noexcept
inline bool WindowInfoWrap::isMaxVert() const noexcept
{
return m_isMaxVert;
}
@ -183,7 +215,7 @@ inline void WindowInfoWrap::setIsMaxVert(bool isMaxVert) noexcept
m_isMaxVert = isMaxVert;
}
constexpr bool WindowInfoWrap::isMaxHoriz() const noexcept
inline bool WindowInfoWrap::isMaxHoriz() const noexcept
{
return m_isMaxHoriz;
}
@ -193,7 +225,7 @@ inline void WindowInfoWrap::setIsMaxHoriz(bool isMaxHoriz) noexcept
m_isMaxHoriz = isMaxHoriz;
}
constexpr bool WindowInfoWrap::isFullscreen() const noexcept
inline bool WindowInfoWrap::isFullscreen() const noexcept
{
return m_isFullscreen;
}
@ -203,7 +235,7 @@ inline void WindowInfoWrap::setIsFullscreen(bool isFullscreen) noexcept
m_isFullscreen = isFullscreen;
}
constexpr bool WindowInfoWrap::isShaded() const noexcept
inline bool WindowInfoWrap::isShaded() const noexcept
{
return m_isShaded;
}
@ -213,7 +245,7 @@ inline void WindowInfoWrap::setIsShaded(bool isShaded) noexcept
m_isShaded = isShaded;
}
constexpr bool WindowInfoWrap::isPlasmaDesktop() const noexcept
inline bool WindowInfoWrap::isPlasmaDesktop() const noexcept
{
return m_isPlasmaDesktop;
}
@ -223,7 +255,7 @@ inline void WindowInfoWrap::setIsPlasmaDesktop(bool isPlasmaDesktop) noexcept
m_isPlasmaDesktop = isPlasmaDesktop;
}
constexpr QRect WindowInfoWrap::geometry() const noexcept
inline QRect WindowInfoWrap::geometry() const noexcept
{
return m_geometry;
}
@ -233,12 +265,12 @@ inline void WindowInfoWrap::setGeometry(const QRect &geometry) noexcept
m_geometry = geometry;
}
constexpr WId WindowInfoWrap::wid() const noexcept
inline WindowId WindowInfoWrap::wid() const noexcept
{
return m_wid;
}
inline void WindowInfoWrap::setWid(WId wid) noexcept
inline void WindowInfoWrap::setWid(WindowId wid) noexcept
{
m_wid = wid;
}

View File

@ -42,9 +42,9 @@ XWindowInterface::XWindowInterface(QObject *parent)
(&KWindowSystem::windowChanged)
, this, &XWindowInterface::windowChangedProxy);
auto addWindow = [&](WId wid) {
auto addWindow = [&](WindowId wid) {
if (std::find(m_windows.cbegin(), m_windows.cend(), wid) == m_windows.cend()) {
if (isValidWindow(KWindowInfo(wid, NET::WMWindowType))) {
if (isValidWindow(KWindowInfo(wid.value<WId>(), NET::WMWindowType))) {
m_windows.push_back(wid);
emit windowAdded(wid);
}
@ -52,7 +52,7 @@ XWindowInterface::XWindowInterface(QObject *parent)
};
connect(KWindowSystem::self(), &KWindowSystem::windowAdded, this, addWindow);
connect(KWindowSystem::self(), &KWindowSystem::windowRemoved, [this](WId wid) {
connect(KWindowSystem::self(), &KWindowSystem::windowRemoved, [this](WindowId wid) {
if (std::find(m_windows.cbegin(), m_windows.cend(), wid) != m_windows.end()) {
m_windows.remove(wid);
emit windowRemoved(wid);
@ -87,7 +87,7 @@ void XWindowInterface::setDockExtraFlags(QQuickWindow &view)
KWindowSystem::setOnActivities(view.winId(), {"0"});
}
void XWindowInterface::setDockStruts(WId dockId, const QRect &dockRect
void XWindowInterface::setDockStruts(WindowId dockId, const QRect &dockRect
, const QScreen &screen, Plasma::Types::Location location) const
{
NETExtendedStrut strut;
@ -130,7 +130,7 @@ void XWindowInterface::setDockStruts(WId dockId, const QRect &dockRect
return;
}
KWindowSystem::setExtendedStrut(dockId,
KWindowSystem::setExtendedStrut(dockId.value<WId>(),
strut.left_width, strut.left_start, strut.left_end,
strut.right_width, strut.right_start, strut.right_end,
strut.top_width, strut.top_start, strut.top_end,
@ -138,17 +138,17 @@ void XWindowInterface::setDockStruts(WId dockId, const QRect &dockRect
);
}
void XWindowInterface::removeDockStruts(WId dockId) const
void XWindowInterface::removeDockStruts(WindowId dockId) const
{
KWindowSystem::setStrut(dockId, 0, 0, 0, 0);
KWindowSystem::setStrut(dockId.value<WId>(), 0, 0, 0, 0);
}
WId XWindowInterface::activeWindow() const
WindowId XWindowInterface::activeWindow() const
{
return KWindowSystem::self()->activeWindow();
}
const std::list<WId> &XWindowInterface::windows() const
const std::list<WindowId> &XWindowInterface::windows() const
{
return m_windows;
}
@ -196,15 +196,15 @@ WindowInfoWrap XWindowInterface::requestInfoActive() const
return requestInfo(KWindowSystem::activeWindow());
}
bool XWindowInterface::isOnCurrentDesktop(WId wid) const
bool XWindowInterface::isOnCurrentDesktop(WindowId wid) const
{
KWindowInfo winfo(wid, NET::WMDesktop);
KWindowInfo winfo(wid.value<WId>(), NET::WMDesktop);
return winfo.valid() && winfo.isOnCurrentDesktop();
}
WindowInfoWrap XWindowInterface::requestInfo(WId wid) const
WindowInfoWrap XWindowInterface::requestInfo(WindowId wid) const
{
const KWindowInfo winfo{wid, NET::WMFrameExtents
const KWindowInfo winfo{wid.value<WId>(), NET::WMFrameExtents
| NET::WMWindowType
| NET::WMGeometry
| NET::WMState};
@ -214,7 +214,7 @@ WindowInfoWrap XWindowInterface::requestInfo(WId wid) const
if (isValidWindow(winfo)) {
winfoWrap.setIsValid(true);
winfoWrap.setWid(wid);
winfoWrap.setIsActive(KWindowSystem::activeWindow() == wid);
winfoWrap.setIsActive(KWindowSystem::activeWindow() == wid.value<WId>());
winfoWrap.setIsMinimized(winfo.hasState(NET::Hidden));
winfoWrap.setIsMaxVert(winfo.hasState(NET::MaxVert));
winfoWrap.setIsMaxHoriz(winfo.hasState(NET::MaxHoriz));

View File

@ -39,16 +39,16 @@ public:
~XWindowInterface() override;
void setDockExtraFlags(QQuickWindow &view) override;
void setDockStruts(WId dockId, const QRect &dockRect
void setDockStruts(WindowId dockId, const QRect &dockRect
, const QScreen &screen, Plasma::Types::Location location) const override;
void removeDockStruts(WId dockId) const override;
void removeDockStruts(WindowId dockId) const override;
WId activeWindow() const override;
WindowInfoWrap requestInfo(WId wid) const override;
WindowId activeWindow() const override;
WindowInfoWrap requestInfo(WindowId wid) const override;
WindowInfoWrap requestInfoActive() const override;
bool isOnCurrentDesktop(WId wid) const override;
const std::list<WId> &windows() const override;
bool isOnCurrentDesktop(WindowId wid) const override;
const std::list<WindowId> &windows() const override;
void skipTaskBar(const QDialog &dialog) const override;
void slideWindow(QQuickWindow &view, Slide location) const override;
@ -58,7 +58,7 @@ private:
bool isValidWindow(const KWindowInfo &winfo) const;
void windowChangedProxy(WId wid, NET::Properties prop1, NET::Properties2 prop2);
WId m_desktopId;
WindowId m_desktopId;
};
}