@@ -60,12 +60,14 @@ bitflags! {
6060}
6161
6262impl Default for StateFlags {
63+ /// Default to [`all`](Self::all)
6364 fn default ( ) -> Self {
6465 Self :: all ( )
6566 }
6667}
6768
6869struct PluginState {
70+ pub ( crate ) state_flags : StateFlags ,
6971 filename : String ,
7072 map_label : Option < Box < LabelMapperFn > > ,
7173}
@@ -381,7 +383,7 @@ impl Builder {
381383 }
382384
383385 pub fn build < R : Runtime > ( self ) -> TauriPlugin < R > {
384- let flags = self . state_flags ;
386+ let state_flags = self . state_flags ;
385387 let filename = self . filename . unwrap_or_else ( || DEFAULT_FILENAME . into ( ) ) ;
386388 let map_label = self . map_label ;
387389
@@ -391,11 +393,12 @@ impl Builder {
391393 cmd:: restore_state,
392394 cmd:: filename
393395 ] )
394- . setup ( |app, _api| {
396+ . setup ( move |app, _api| {
395397 let cache = load_saved_window_states ( app, & filename) . unwrap_or_default ( ) ;
396398 app. manage ( WindowStateCache ( Arc :: new ( Mutex :: new ( cache) ) ) ) ;
397399 app. manage ( RestoringWindowState ( Mutex :: new ( ( ) ) ) ) ;
398400 app. manage ( PluginState {
401+ state_flags,
399402 filename,
400403 map_label,
401404 } ) ;
@@ -423,14 +426,13 @@ impl Builder {
423426 }
424427
425428 if !self . skip_initial_state . contains ( label) {
426- let _ = window. restore_state ( self . state_flags ) ;
429+ let _ = window. restore_state ( state_flags) ;
427430 }
428431
429432 let cache = window. state :: < WindowStateCache > ( ) ;
430433 let cache = cache. 0 . clone ( ) ;
431434 let label = label. to_string ( ) ;
432435 let window_clone = window. clone ( ) ;
433- let flags = self . state_flags ;
434436
435437 // insert a default state if this window should be tracked and
436438 // the disk cache doesn't have a state for it
@@ -446,11 +448,11 @@ impl Builder {
446448 WindowEvent :: CloseRequested { .. } => {
447449 let mut c = cache. lock ( ) . unwrap ( ) ;
448450 if let Some ( state) = c. get_mut ( & label) {
449- let _ = window_clone. update_state ( state, flags ) ;
451+ let _ = window_clone. update_state ( state, state_flags ) ;
450452 }
451453 }
452454
453- WindowEvent :: Moved ( position) if flags . contains ( StateFlags :: POSITION ) => {
455+ WindowEvent :: Moved ( position) if state_flags . contains ( StateFlags :: POSITION ) => {
454456 if window_clone
455457 . state :: < RestoringWindowState > ( )
456458 . 0
@@ -468,7 +470,7 @@ impl Builder {
468470 }
469471 }
470472 }
471- WindowEvent :: Resized ( size) if flags . contains ( StateFlags :: SIZE ) => {
473+ WindowEvent :: Resized ( size) if state_flags . contains ( StateFlags :: SIZE ) => {
472474 if window_clone
473475 . state :: < RestoringWindowState > ( )
474476 . 0
@@ -499,7 +501,7 @@ impl Builder {
499501 } )
500502 . on_event ( move |app, event| {
501503 if let RunEvent :: Exit = event {
502- let _ = app. save_window_state ( flags ) ;
504+ let _ = app. save_window_state ( state_flags ) ;
503505 }
504506 } )
505507 . build ( )
0 commit comments