Bug 1765109 - Make TextEventDispatcher::MaybeQueryWritingModeAtSelection not try to query selection if it's unavailable r=m_kato
We resolve editing commands on Linux and macOS to respect the system settings of every key press when an `eKeyPress` event is sent to a remote process, and it requires `WritingMode` at selection for arrow key handling for example. Therefore, the parent process try to get the information. However, in the case, the query succeeds only when IME has focus since `ContentCacheInParent` does not have any data when IME does not have focus. Therefore, `TextEventDispatcher::MaybeQueryWritingModeAtSelection` should check the IME state before dispatching `eQuerySelectedText` event to avoid the warnings and unnecessary runtime cost. Differential Revision: https://phabricator.services.mozilla.com/D143901
This commit is contained in:
@@ -240,6 +240,16 @@ Maybe<WritingMode> TextEventDispatcher::MaybeQueryWritingModeAtSelection()
|
|||||||
return Nothing();
|
return Nothing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If a remote content has focus and IME does not have focus, it's going to
|
||||||
|
// fail eQuerySelectedText in ContentCacheParent. For avoiding to waste
|
||||||
|
// unnecessary runtime cost and to prevent unnecessary warnings, we should
|
||||||
|
// not dispatch the event in the case.
|
||||||
|
const InputContext inputContext = mWidget->GetInputContext();
|
||||||
|
if (XRE_IsE10sParentProcess() && inputContext.IsOriginContentProcess() &&
|
||||||
|
!inputContext.mIMEState.IsEditable()) {
|
||||||
|
return Nothing();
|
||||||
|
}
|
||||||
|
|
||||||
WidgetQueryContentEvent querySelectedTextEvent(true, eQuerySelectedText,
|
WidgetQueryContentEvent querySelectedTextEvent(true, eQuerySelectedText,
|
||||||
mWidget);
|
mWidget);
|
||||||
nsEventStatus status = nsEventStatus_eIgnore;
|
nsEventStatus status = nsEventStatus_eIgnore;
|
||||||
|
|||||||
Reference in New Issue
Block a user