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:
parent
111d59e1c5
commit
2040ac3063
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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())
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user