@@ -14,7 +14,7 @@ use winit::{
1414 event:: WindowEvent ,
1515 event_loop:: ActiveEventLoop ,
1616 keyboard:: KeyCode ,
17- window:: { Fullscreen , Window , WindowId } ,
17+ window:: { Window , WindowId } ,
1818} ;
1919
2020mod egui;
@@ -113,13 +113,41 @@ impl WgpuState {
113113
114114 #[ cfg( target_arch = "wasm32" ) ]
115115 {
116+ use wasm_bindgen:: prelude:: Closure ;
117+ use wasm_bindgen:: JsCast ;
118+ use web_sys:: Event ;
116119 use winit:: platform:: web:: WindowExtWebSys ;
120+
117121 web_sys:: window ( )
118122 . and_then ( |win| win. document ( ) )
119123 . and_then ( |doc| {
120124 let dest = doc. get_element_by_id ( "fluidsim" ) ?;
121125 let canvas = web_sys:: Element :: from ( window. canvas ( ) ?) ;
122126 dest. append_child ( & canvas) . ok ( ) ?;
127+ Some ( doc)
128+ } )
129+ . and_then ( |doc| {
130+ let canvas = doc. query_selector ( "canvas" ) . ok ( ) ??;
131+
132+ canvas
133+ . add_event_listener_with_callback (
134+ "click" ,
135+ Closure :: wrap ( Box :: new ( |_| {
136+ // set w and h of canvas to 100vw and 100vh, after click
137+
138+ let window = web_sys:: window ( ) . unwrap ( ) ;
139+ let document = window. document ( ) . unwrap ( ) ;
140+ let canvas = document. query_selector ( "canvas" ) . unwrap ( ) . unwrap ( ) ;
141+
142+ canvas
143+ . set_attribute ( "style" , "width: 100vw; height: 100vh;" )
144+ . unwrap ( ) ;
145+ } ) as Box < dyn FnMut ( Event ) > )
146+ . as_ref ( )
147+ . unchecked_ref ( ) ,
148+ )
149+ . ok ( ) ?;
150+
123151 Some ( ( ) )
124152 } )
125153 . unwrap ( ) ;
@@ -197,7 +225,7 @@ impl SimRenderer {
197225 #[ cfg( not( target_arch = "wasm32" ) ) ]
198226 self . wgpu
199227 . window
200- . set_fullscreen ( Some ( Fullscreen :: Borderless ( None ) ) ) ;
228+ . set_fullscreen ( Some ( winit :: window :: Fullscreen :: Borderless ( None ) ) ) ;
201229
202230 #[ cfg( target_arch = "wasm32" ) ]
203231 self . wgpu . window . set_min_inner_size ( Some ( WASM_WINDOW ) ) ;
0 commit comments