From 6a73f4deccb27a368d9e829fdab5b9f3f65b46ec Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 5 Aug 2015 09:55:47 -0400 Subject: Add a replacement for XSelectInput and use it within lumina-desktop --- libLumina/LuminaX11.cpp | 6 ++++++ libLumina/LuminaX11.h | 1 + lumina-desktop/LSession.cpp | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libLumina/LuminaX11.cpp b/libLumina/LuminaX11.cpp index 7033e62c..4f3822e1 100644 --- a/libLumina/LuminaX11.cpp +++ b/libLumina/LuminaX11.cpp @@ -1163,6 +1163,12 @@ int LXCB::WindowIsFullscreen(WId win){ return fscreen; } +// === SelectInput() === +void LXCB::SelectInput(WId win){ + uint32_t mask = XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_FOCUS_CHANGE | XCB_EVENT_MASK_PROPERTY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY; + xcb_change_window_attributes(QX11Info::connection(), win, XCB_CW_EVENT_MASK, &mask ); +} + // === WindowIcon() === QIcon LXCB::WindowIcon(WId win){ //Fetch the _NET_WM_ICON for the window and return it as a QIcon diff --git a/libLumina/LuminaX11.h b/libLumina/LuminaX11.h index 7318e2c2..efa51cfd 100644 --- a/libLumina/LuminaX11.h +++ b/libLumina/LuminaX11.h @@ -148,6 +148,7 @@ public: QIcon WindowIcon(WId win); //_NET_WM_ICON //Window Modification + void SelectInput(WId); //XSelectInput replacement (to see window events) void SetAsSticky(WId); //Stick to all workspaces void SetDisableWMActions(WId); //Disable WM control (shortcuts/automatic functions) void SetAsPanel(WId); //Adjust all the window flags for a proper panel (cannot be done through Qt) diff --git a/lumina-desktop/LSession.cpp b/lumina-desktop/LSession.cpp index 2dd841df..26cb1699 100644 --- a/lumina-desktop/LSession.cpp +++ b/lumina-desktop/LSession.cpp @@ -776,7 +776,7 @@ void LSession::startSystemTray(){ SystemTrayID = XCB->startSystemTray(0); TrayStopping = false; if(SystemTrayID!=0){ - XSelectInput(QX11Info::display(), SystemTrayID, InputOutput); //make sure TrayID events get forwarded here + XCB->SelectInput(SystemTrayID); //make sure TrayID events get forwarded here XDamageQueryExtension( QX11Info::display(), &TrayDmgEvent, &TrayDmgError); evFilter->setTrayDamageFlag(TrayDmgEvent); qDebug() << "System Tray Started Successfully"; -- cgit