X11: Qt::ActiveWindowFocusReason in QFocusEvent when appropriate
When one window loses focus because another window got it, the reason should not be Qt::OtherFocusReason. If it is ActiveWindowFocusReason or PopupFocusReason, any QtQuick text elements that were in the window which lost focus will not deselect any selected text. Task-number: QTBUG-36292 Change-Id: I4630f74e6aacd928284cedab6ed711c95b24bff7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>bb10
parent
5b570c287f
commit
debe31e047
|
|
@ -1550,7 +1550,7 @@ void QXcbWindow::handleClientMessageEvent(const xcb_client_message_event_t *even
|
|||
handleXEmbedMessage(event);
|
||||
} else if (event->type == atom(QXcbAtom::_NET_ACTIVE_WINDOW)) {
|
||||
connection()->setFocusWindow(this);
|
||||
QWindowSystemInterface::handleWindowActivated(window());
|
||||
QWindowSystemInterface::handleWindowActivated(window(), Qt::ActiveWindowFocusReason);
|
||||
} else if (event->type == atom(QXcbAtom::MANAGER)
|
||||
|| event->type == atom(QXcbAtom::_NET_WM_STATE)
|
||||
|| event->type == atom(QXcbAtom::WM_CHANGE_STATE)) {
|
||||
|
|
@ -1855,14 +1855,14 @@ void QXcbWindow::handleFocusInEvent(const xcb_focus_in_event_t *)
|
|||
QWindow *w = window();
|
||||
w = static_cast<QWindowPrivate *>(QObjectPrivate::get(w))->eventReceiver();
|
||||
connection()->setFocusWindow(static_cast<QXcbWindow *>(w->handle()));
|
||||
QWindowSystemInterface::handleWindowActivated(w);
|
||||
QWindowSystemInterface::handleWindowActivated(w, Qt::ActiveWindowFocusReason);
|
||||
}
|
||||
|
||||
static bool focusInPeeker(QXcbConnection *connection, xcb_generic_event_t *event)
|
||||
{
|
||||
if (!event) {
|
||||
// FocusIn event is not in the queue, proceed with FocusOut normally.
|
||||
QWindowSystemInterface::handleWindowActivated(0);
|
||||
QWindowSystemInterface::handleWindowActivated(0, Qt::ActiveWindowFocusReason);
|
||||
return true;
|
||||
}
|
||||
uint response_type = event->response_type & ~0x80;
|
||||
|
|
|
|||
Loading…
Reference in New Issue