File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed
src/platform_impl/web/event_loop Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,8 @@ Unreleased` header.
1111
1212# Unreleased
1313
14+ - On Web, account for canvas being focused already before event loop starts.
15+
1416# 0.29.9
1517
1618- On X11, fix ` NotSupported ` error not propagated when creating event loop.
Original file line number Diff line number Diff line change @@ -5,6 +5,8 @@ use std::iter;
55use std:: marker:: PhantomData ;
66use std:: rc:: { Rc , Weak } ;
77
8+ use web_sys:: Element ;
9+
810use super :: runner:: { EventWrapper , Execution } ;
911use super :: {
1012 super :: { monitor:: MonitorHandle , KeyEventExtra } ,
@@ -122,6 +124,25 @@ impl<T> EventLoopWindowTarget<T> {
122124 }
123125 } ) ;
124126
127+ // It is possible that at this point the canvas has
128+ // been focused before the callback can be called.
129+ let focused = canvas
130+ . document ( )
131+ . active_element ( )
132+ . filter ( |element| {
133+ let canvas: & Element = canvas. raw ( ) ;
134+ element == canvas
135+ } )
136+ . is_some ( ) ;
137+
138+ if focused {
139+ canvas. has_focus . set ( true ) ;
140+ self . runner . send_event ( Event :: WindowEvent {
141+ window_id : RootWindowId ( id) ,
142+ event : WindowEvent :: Focused ( true ) ,
143+ } )
144+ }
145+
125146 let runner = self . runner . clone ( ) ;
126147 let modifiers = self . modifiers . clone ( ) ;
127148 canvas. on_keyboard_press (
You can’t perform that action at this time.
0 commit comments