9
9
*/
10
10
use crate :: winitwindowadapter:: WinitWindowAdapter ;
11
11
use crate :: SlintUserEvent ;
12
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
12
13
use copypasta:: ClipboardProvider ;
13
14
use corelib:: api:: EventLoopError ;
14
15
use corelib:: graphics:: euclid;
@@ -18,15 +19,18 @@ use corelib::lengths::LogicalPoint;
18
19
use corelib:: platform:: PlatformError ;
19
20
use corelib:: window:: * ;
20
21
use i_slint_core as corelib;
22
+ #[ allow( unused_imports) ]
21
23
use std:: cell:: { RefCell , RefMut } ;
22
24
use std:: rc:: { Rc , Weak } ;
23
25
use winit:: event:: { Event , WindowEvent } ;
24
26
use winit:: event_loop:: EventLoopWindowTarget ;
25
27
28
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
26
29
/// The Default, and the selection clippoard
27
30
type ClipboardPair = ( Box < dyn ClipboardProvider > , Box < dyn ClipboardProvider > ) ;
28
31
29
32
struct NotRunningEventLoop {
33
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
30
34
clipboard : RefCell < ClipboardPair > ,
31
35
instance : winit:: event_loop:: EventLoop < SlintUserEvent > ,
32
36
event_loop_proxy : winit:: event_loop:: EventLoopProxy < SlintUserEvent > ,
@@ -58,20 +62,24 @@ impl NotRunningEventLoop {
58
62
let instance =
59
63
builder. build ( ) . map_err ( |e| format ! ( "Error initializing winit event loop: {e}" ) ) ?;
60
64
let event_loop_proxy = instance. create_proxy ( ) ;
61
- let clipboard = RefCell :: new ( create_clipboard ( & instance) ) ;
62
- Ok ( Self { clipboard, instance, event_loop_proxy } )
65
+ Ok ( Self {
66
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
67
+ clipboard : RefCell :: new ( create_clipboard ( & instance) ) ,
68
+ instance,
69
+ event_loop_proxy,
70
+ } )
63
71
}
64
72
}
65
73
66
74
struct RunningEventLoop < ' a > {
67
75
event_loop_target : & ' a winit:: event_loop:: EventLoopWindowTarget < SlintUserEvent > ,
68
- event_loop_proxy : & ' a winit :: event_loop :: EventLoopProxy < SlintUserEvent > ,
76
+ # [ cfg ( not ( target_arch = "wasm32" ) ) ]
69
77
clipboard : & ' a RefCell < ClipboardPair > ,
70
78
}
71
79
72
80
pub ( crate ) trait EventLoopInterface {
73
81
fn event_loop_target ( & self ) -> & winit:: event_loop:: EventLoopWindowTarget < SlintUserEvent > ;
74
- fn event_loop_proxy ( & self ) -> & winit :: event_loop :: EventLoopProxy < SlintUserEvent > ;
82
+ # [ cfg ( not ( target_arch = "wasm32" ) ) ]
75
83
fn clipboard (
76
84
& self ,
77
85
_: i_slint_core:: platform:: Clipboard ,
@@ -83,10 +91,7 @@ impl EventLoopInterface for NotRunningEventLoop {
83
91
& self . instance
84
92
}
85
93
86
- fn event_loop_proxy ( & self ) -> & winit:: event_loop:: EventLoopProxy < SlintUserEvent > {
87
- & self . event_loop_proxy
88
- }
89
-
94
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
90
95
fn clipboard (
91
96
& self ,
92
97
clipboard : i_slint_core:: platform:: Clipboard ,
@@ -108,10 +113,7 @@ impl<'a> EventLoopInterface for RunningEventLoop<'a> {
108
113
self . event_loop_target
109
114
}
110
115
111
- fn event_loop_proxy ( & self ) -> & winit:: event_loop:: EventLoopProxy < SlintUserEvent > {
112
- self . event_loop_proxy
113
- }
114
-
116
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
115
117
fn clipboard (
116
118
& self ,
117
119
clipboard : i_slint_core:: platform:: Clipboard ,
@@ -524,18 +526,17 @@ impl EventLoopState {
524
526
} ) ;
525
527
526
528
let mut winit_loop = not_running_loop_instance. instance ;
527
- let clipboard = not_running_loop_instance. clipboard ;
528
529
529
530
#[ cfg( not( target_arch = "wasm32" ) ) ]
530
531
{
531
532
use winit:: platform:: run_on_demand:: EventLoopExtRunOnDemand as _;
533
+ let clipboard = not_running_loop_instance. clipboard ;
532
534
winit_loop
533
535
. run_on_demand (
534
536
|event : Event < SlintUserEvent > ,
535
537
event_loop_target : & EventLoopWindowTarget < SlintUserEvent > | {
536
538
let running_instance = RunningEventLoop {
537
539
event_loop_target,
538
- event_loop_proxy : & event_loop_proxy,
539
540
clipboard : & clipboard,
540
541
} ;
541
542
CURRENT_WINDOW_TARGET . set ( & running_instance, || {
@@ -566,8 +567,6 @@ impl EventLoopState {
566
567
event_loop_target : & EventLoopWindowTarget < SlintUserEvent > | {
567
568
let running_instance = RunningEventLoop {
568
569
event_loop_target,
569
- event_loop_proxy : & event_loop_proxy,
570
- clipboard : & clipboard,
571
570
} ;
572
571
CURRENT_WINDOW_TARGET . set ( & running_instance, || {
573
572
self . process_event ( event, event_loop_target)
@@ -611,11 +610,8 @@ impl EventLoopState {
611
610
timeout,
612
611
|event : Event < SlintUserEvent > ,
613
612
event_loop_target : & EventLoopWindowTarget < SlintUserEvent > | {
614
- let running_instance = RunningEventLoop {
615
- event_loop_target,
616
- event_loop_proxy : & event_loop_proxy,
617
- clipboard : & clipboard,
618
- } ;
613
+ let running_instance =
614
+ RunningEventLoop { event_loop_target, clipboard : & clipboard } ;
619
615
CURRENT_WINDOW_TARGET
620
616
. set ( & running_instance, || self . process_event ( event, event_loop_target) )
621
617
} ,
@@ -653,17 +649,12 @@ pub fn spawn() -> Result<(), corelib::platform::PlatformError> {
653
649
. set_proxy ( event_loop_proxy. clone ( ) )
654
650
} ) ;
655
651
656
- let clipboard = not_running_loop_instance. clipboard ;
657
652
let mut loop_state = EventLoopState :: default ( ) ;
658
653
659
654
not_running_loop_instance. instance . spawn (
660
655
move |event : Event < SlintUserEvent > ,
661
656
event_loop_target : & EventLoopWindowTarget < SlintUserEvent > | {
662
- let running_instance = RunningEventLoop {
663
- event_loop_target,
664
- event_loop_proxy : & event_loop_proxy,
665
- clipboard : & clipboard,
666
- } ;
657
+ let running_instance = RunningEventLoop { event_loop_target } ;
667
658
CURRENT_WINDOW_TARGET
668
659
. set ( & running_instance, || loop_state. process_event ( event, event_loop_target) )
669
660
} ,
@@ -672,6 +663,7 @@ pub fn spawn() -> Result<(), corelib::platform::PlatformError> {
672
663
Ok ( ( ) )
673
664
}
674
665
666
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
675
667
fn create_clipboard < T > ( _event_loop : & winit:: event_loop:: EventLoopWindowTarget < T > ) -> ClipboardPair {
676
668
// Provide a truly silent no-op clipboard context, as copypasta's NoopClipboard spams stdout with
677
669
// println.
0 commit comments