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.
11
11
12
12
# Unreleased
13
13
14
+ - On Web, account for canvas being focused already before event loop starts.
15
+
14
16
# 0.29.9
15
17
16
18
- 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;
5
5
use std:: marker:: PhantomData ;
6
6
use std:: rc:: { Rc , Weak } ;
7
7
8
+ use web_sys:: Element ;
9
+
8
10
use super :: runner:: { EventWrapper , Execution } ;
9
11
use super :: {
10
12
super :: { monitor:: MonitorHandle , KeyEventExtra } ,
@@ -122,6 +124,25 @@ impl<T> EventLoopWindowTarget<T> {
122
124
}
123
125
} ) ;
124
126
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
+
125
146
let runner = self . runner . clone ( ) ;
126
147
let modifiers = self . modifiers . clone ( ) ;
127
148
canvas. on_keyboard_press (
You can’t perform that action at this time.
0 commit comments