[英]How to prevent window from loosing focus when receiving a grabbed key from X11
當收到QEvent::FocusOut
時,我的窗口調用hide()
。 同時,如果要按下熱鍵,我希望切換其可見性。 現在,我XGrabKex(...)
了以下問題:按下向XGrabKex(...)
注冊的熱鍵似乎可以使我的應用程序更加專注。 導致不必要的行為。 如果可見我的應用程序,則hotkeyevent會突出顯示焦點,這將導致QEvent::FocusOut
,隱藏我的應用程序,然后接收到熱鍵,以切換(顯示)我的應用程序的可見性。 即按快捷鍵時我的應用程序不會隱藏。
有沒有一種方法可以告訴x窗口系統在按下抓取的鍵時不要強化焦點? 還是對此問題有其他可能的解決方案?
最終使它以“適當”的方式工作:
bool MainWidget::nativeEvent(const QByteArray &eventType, void *message, long *)
{
#ifdef Q_OS_LINUX
if (eventType == "xcb_generic_event_t")
{
xcb_generic_event_t* event = static_cast<xcb_generic_event_t *>(message);
switch (event->response_type & 127)
{
case XCB_FOCUS_OUT: {
xcb_focus_out_event_t *fe = (xcb_focus_out_event_t *)event;
if ((fe->mode==XCB_NOTIFY_MODE_GRAB && fe->detail==XCB_NOTIFY_DETAIL_NONLINEAR)
|| (fe->mode==XCB_NOTIFY_MODE_NORMAL && fe->detail==XCB_NOTIFY_DETAIL_NONLINEAR ))
hide();
break;
}
}
}
#endif
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.