Skip to content

Commit

Permalink
Handle Edge Browser Hover
Browse files Browse the repository at this point in the history
This contribution captures the hover over edge browser and sends a mouse
move event to its listener.

contributes to eclipse-platform#1540
  • Loading branch information
amartya4256 committed Oct 22, 2024
1 parent 18a9adb commit e79909c
Showing 1 changed file with 30 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,7 @@ void setupBrowser(int hr, long pv) {
browser.addListener(SWT.FocusIn, this::browserFocusIn);
browser.addListener(SWT.Resize, this::browserResize);
browser.addListener(SWT.Move, this::browserMove);
handleBrowserHover();

containingEnvironment.instances().add(this);
// Sometimes when the shell of the browser is opened before the browser is
Expand Down Expand Up @@ -700,6 +701,35 @@ void browserResize(Event event) {
controller.put_IsVisible(true);
}

private void handleBrowserHover() {
browser.getDisplay().timerExec(500, () -> {
if (browser.isDisposed()) {
return;
}
if (!browser.isVisible() || !hasDisplayFocus()) {
handleBrowserHover();
return;
}
final Point cursorLocation = browser.getDisplay().getCursorLocation();
Point cursorLocationInControlCoordinate = browser.toControl(cursorLocation);
Rectangle browserBounds = browser.getBounds();
if (browserBounds.contains(cursorLocationInControlCoordinate)) {
Event newEvent = new Event();
newEvent.widget = browser;
Point position = cursorLocationInControlCoordinate;
newEvent.x = position.x;
newEvent.y = position.y;
newEvent.type = SWT.MouseMove;
browser.notifyListeners(newEvent.type, newEvent);
}
handleBrowserHover();
});
}

private boolean hasDisplayFocus() {
return browser.getDisplay().getFocusControl() != null;
}

@Override
public Object evaluate(String script) throws SWTException {
// Feature in WebView2. ExecuteScript works regardless of IsScriptEnabled setting.
Expand Down

0 comments on commit e79909c

Please sign in to comment.