add selectWmInputEventMask function
It sets the mask required for a WM and in addition preserves the eventmask present on the root window for this client (as set by any lib etc.)
This commit is contained in:
parent
ddd8ea4c74
commit
c455087248
2 changed files with 23 additions and 9 deletions
|
@ -187,15 +187,7 @@ Workspace::Workspace(bool restore)
|
||||||
KStartupInfo::DisableKWinModule | KStartupInfo::AnnounceSilenceChanges, this);
|
KStartupInfo::DisableKWinModule | KStartupInfo::AnnounceSilenceChanges, this);
|
||||||
|
|
||||||
// Select windowmanager privileges
|
// Select windowmanager privileges
|
||||||
Xcb::selectInput(rootWindow(),
|
selectWmInputEventMask();
|
||||||
XCB_EVENT_MASK_KEY_PRESS |
|
|
||||||
XCB_EVENT_MASK_PROPERTY_CHANGE |
|
|
||||||
XCB_EVENT_MASK_COLOR_MAP_CHANGE |
|
|
||||||
XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
|
|
||||||
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
|
|
||||||
XCB_EVENT_MASK_FOCUS_CHANGE | // For NotifyDetailNone
|
|
||||||
XCB_EVENT_MASK_EXPOSURE
|
|
||||||
);
|
|
||||||
|
|
||||||
#ifdef KWIN_BUILD_SCREENEDGES
|
#ifdef KWIN_BUILD_SCREENEDGES
|
||||||
ScreenEdges::create(this);
|
ScreenEdges::create(this);
|
||||||
|
@ -1115,6 +1107,27 @@ void Workspace::resetClientAreas(uint desktopCount)
|
||||||
updateClientArea(true);
|
updateClientArea(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Workspace::selectWmInputEventMask()
|
||||||
|
{
|
||||||
|
uint32_t presentMask = 0;
|
||||||
|
Xcb::WindowAttributes attr(rootWindow());
|
||||||
|
Xcb::WindowGeometry geo(rootWindow());
|
||||||
|
if (!attr.isNull()) {
|
||||||
|
presentMask = attr->your_event_mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
Xcb::selectInput(rootWindow(),
|
||||||
|
presentMask |
|
||||||
|
XCB_EVENT_MASK_KEY_PRESS |
|
||||||
|
XCB_EVENT_MASK_PROPERTY_CHANGE |
|
||||||
|
XCB_EVENT_MASK_COLOR_MAP_CHANGE |
|
||||||
|
XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
|
||||||
|
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
|
||||||
|
XCB_EVENT_MASK_FOCUS_CHANGE | // For NotifyDetailNone
|
||||||
|
XCB_EVENT_MASK_EXPOSURE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends client \a c to desktop \a desk.
|
* Sends client \a c to desktop \a desk.
|
||||||
*
|
*
|
||||||
|
|
|
@ -451,6 +451,7 @@ private:
|
||||||
template <typename Slot>
|
template <typename Slot>
|
||||||
void initShortcut(const QString &actionName, const QString &description, const QKeySequence &shortcut,
|
void initShortcut(const QString &actionName, const QString &description, const QKeySequence &shortcut,
|
||||||
Slot slot, const QVariant &data = QVariant());
|
Slot slot, const QVariant &data = QVariant());
|
||||||
|
void selectWmInputEventMask();
|
||||||
void setupWindowShortcut(Client* c);
|
void setupWindowShortcut(Client* c);
|
||||||
enum Direction {
|
enum Direction {
|
||||||
DirectionNorth,
|
DirectionNorth,
|
||||||
|
|
Loading…
Reference in a new issue