27 , m_window(XCB_WINDOW_NONE)
28 , m_approachWindow(XCB_WINDOW_NONE)
39 createApproachWindow();
46 m_approachWindow.
reset();
49void WindowBasedEdge::createWindow()
54 const uint32_t mask = XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK;
55 const uint32_t values[] = {
57 XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW | XCB_EVENT_MASK_POINTER_MOTION};
58 m_window.
create(
geometry(), XCB_WINDOW_CLASS_INPUT_ONLY, mask, values);
62 xcb_change_property(
connection(), XCB_PROP_MODE_REPLACE, m_window,
66void WindowBasedEdge::createApproachWindow()
71 if (m_approachWindow.
isValid()) {
77 const uint32_t mask = XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK;
78 const uint32_t values[] = {
80 XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW | XCB_EVENT_MASK_POINTER_MOTION};
82 m_approachWindow.
map();
88 if (m_approachWindow.
isValid()) {
98 m_approachWindow.
unmap();
106 if (!m_cursorPollingConnection) {
109 disconnect(m_cursorPollingConnection);
110 m_cursorPollingConnection = QMetaObject::Connection();
112 m_approachWindow.
map();
122 m_approachWindow.
unmap();
125 m_approachWindow.
map();
131#include "moc_x11_standalone_edge.cpp"
void posChanged(const QPointF &pos)
void updateApproaching(const QPointF &point)
bool activatesForPointer() const
const QRect & geometry() const
const QRect & approachGeometry() const
Class for controlling screen edges.
void doStartApproaching() override
void doUpdateBlocking() override
void doDeactivate() override
~WindowBasedEdge() override
WindowBasedEdge(ScreenEdges *parent)
void doStopApproaching() override
void doGeometryUpdate() override
void doActivate() override
void create(const QRectF &geometry, uint32_t mask=0, const uint32_t *values=nullptr, xcb_window_t parent=rootWindow())
void setGeometry(const QRectF &geometry)
void reset(xcb_window_t window=XCB_WINDOW_NONE, bool destroy=true)
KWIN_EXPORT xcb_connection_t * connection()
KWIN_EXPORT Atoms * atoms