Plug three holes in Servo input forwarding
1. Scroll no longer wipes keyboard focus. Servo holds DOM focus across wheel events; the shell was clearing keyboard_focus and typed_texts on every scroll, so a focused input went deaf the moment the user scrolled. Scroll still drops the buffered click point because that coordinate is captured against the pre-scroll viewport. 2. Mouse-down hands focus to the shell's root focus handle (in addition to mouse-up's existing click forwarding). The user can now start typing the moment they press the page, instead of having to first complete a click round-trip to escape the omnibar's focus. 3. Sidecar hover() honors the requesting webview_id instead of defaulting to the first webview in the map, so multi-tab sidecars no longer pipe every hover into tab #1.
This commit is contained in:
@@ -96,6 +96,14 @@ impl ElyShell {
|
||||
}
|
||||
}
|
||||
|
||||
/// Hand focus to the shell's root focus handle so subsequent
|
||||
/// keystrokes route to the web surface. Called on the very first
|
||||
/// mouse-down inside an external page so the user can start
|
||||
/// typing without waiting for the click to fully resolve.
|
||||
pub(super) fn focus_web_surface(&self, window: &mut gpui::Window) {
|
||||
self.focus_handle.focus(window);
|
||||
}
|
||||
|
||||
pub(super) fn type_text_in_external_web_viewport(
|
||||
&mut self,
|
||||
tab_id: TabId,
|
||||
|
||||
Reference in New Issue
Block a user