11use crate :: messages:: debug:: utility_types:: MessageLoggingVerbosity ;
2- use crate :: messages:: dialog:: DialogMessageData ;
3- use crate :: messages:: portfolio :: document :: node_graph :: document_node_definitions ;
2+ use crate :: messages:: dialog:: DialogMessageContext ;
3+ use crate :: messages:: layout :: layout_message_handler :: LayoutMessageContext ;
44use crate :: messages:: prelude:: * ;
55
66#[ derive( Debug , Default ) ]
@@ -91,7 +91,7 @@ impl Dispatcher {
9191 pub fn handle_message < T : Into < Message > > ( & mut self , message : T , process_after_all_current : bool ) {
9292 let message = message. into ( ) ;
9393 // Add all additional messages to the buffer if it exists (except from the end buffer message)
94- if !matches ! ( message, Message :: EndBuffer ( _ ) ) {
94+ if !matches ! ( message, Message :: EndBuffer { .. } ) {
9595 if let Some ( buffered_queue) = & mut self . buffered_queue {
9696 Self :: schedule_execution ( buffered_queue, true , [ message] ) ;
9797
@@ -126,71 +126,19 @@ impl Dispatcher {
126126
127127 // Process the action by forwarding it to the relevant message handler, or saving the FrontendMessage to be sent to the frontend
128128 match message {
129- Message :: StartBuffer => {
130- self . buffered_queue = Some ( std:: mem:: take ( & mut self . message_queues ) ) ;
131- }
132- Message :: EndBuffer ( render_metadata) => {
133- // Assign the message queue to the currently buffered queue
134- if let Some ( buffered_queue) = self . buffered_queue . take ( ) {
135- self . cleanup_queues ( false ) ;
136- assert ! ( self . message_queues. is_empty( ) , "message queues are always empty when ending a buffer" ) ;
137- self . message_queues = buffered_queue;
138- } ;
139-
140- let graphene_std:: renderer:: RenderMetadata {
141- upstream_footprints : footprints,
142- local_transforms,
143- first_instance_source_id,
144- click_targets,
145- clip_targets,
146- } = render_metadata;
147-
148- // Run these update state messages immediately
149- let messages = [
150- DocumentMessage :: UpdateUpstreamTransforms {
151- upstream_footprints : footprints,
152- local_transforms,
153- first_instance_source_id,
154- } ,
155- DocumentMessage :: UpdateClickTargets { click_targets } ,
156- DocumentMessage :: UpdateClipTargets { clip_targets } ,
157- ] ;
158- Self :: schedule_execution ( & mut self . message_queues , false , messages. map ( Message :: from) ) ;
159- }
160- Message :: NoOp => { }
161- Message :: Init => {
162- // Load persistent data from the browser database
163- queue. add ( FrontendMessage :: TriggerLoadFirstAutoSaveDocument ) ;
164- queue. add ( FrontendMessage :: TriggerLoadPreferences ) ;
165-
166- // Display the menu bar at the top of the window
167- queue. add ( MenuBarMessage :: SendLayout ) ;
168-
169- // Send the information for tooltips and categories for each node/input.
170- queue. add ( FrontendMessage :: SendUIMetadata {
171- node_descriptions : document_node_definitions:: collect_node_descriptions ( ) ,
172- node_types : document_node_definitions:: collect_node_types ( ) ,
173- } ) ;
174-
175- // Finish loading persistent data from the browser database
176- queue. add ( FrontendMessage :: TriggerLoadRestAutoSaveDocuments ) ;
177- }
178129 Message :: Animation ( message) => {
179130 self . message_handlers . animation_message_handler . process_message ( message, & mut queue, ( ) ) ;
180131 }
181- Message :: Batched ( messages) => {
182- messages. iter ( ) . for_each ( |message| self . handle_message ( message. to_owned ( ) , false ) ) ;
183- }
184132 Message :: Broadcast ( message) => self . message_handlers . broadcast_message_handler . process_message ( message, & mut queue, ( ) ) ,
185133 Message :: Debug ( message) => {
186134 self . message_handlers . debug_message_handler . process_message ( message, & mut queue, ( ) ) ;
187135 }
188136 Message :: Dialog ( message) => {
189- let data = DialogMessageData {
137+ let context = DialogMessageContext {
190138 portfolio : & self . message_handlers . portfolio_message_handler ,
191139 preferences : & self . message_handlers . preferences_message_handler ,
192140 } ;
193- self . message_handlers . dialog_message_handler . process_message ( message, & mut queue, data ) ;
141+ self . message_handlers . dialog_message_handler . process_message ( message, & mut queue, context ) ;
194142 }
195143 Message :: Frontend ( message) => {
196144 // Handle these messages immediately by returning early
@@ -213,20 +161,21 @@ impl Dispatcher {
213161
214162 self . message_handlers
215163 . input_preprocessor_message_handler
216- . process_message ( message, & mut queue, InputPreprocessorMessageData { keyboard_platform } ) ;
164+ . process_message ( message, & mut queue, InputPreprocessorMessageContext { keyboard_platform } ) ;
217165 }
218166 Message :: KeyMapping ( message) => {
219167 let input = & self . message_handlers . input_preprocessor_message_handler ;
220168 let actions = self . collect_actions ( ) ;
221169
222170 self . message_handlers
223171 . key_mapping_message_handler
224- . process_message ( message, & mut queue, KeyMappingMessageData { input, actions } ) ;
172+ . process_message ( message, & mut queue, KeyMappingMessageContext { input, actions } ) ;
225173 }
226174 Message :: Layout ( message) => {
227175 let action_input_mapping = & |action_to_find : & MessageDiscriminant | self . message_handlers . key_mapping_message_handler . action_input_mapping ( action_to_find) ;
176+ let context = LayoutMessageContext { action_input_mapping } ;
228177
229- self . message_handlers . layout_message_handler . process_message ( message, & mut queue, action_input_mapping ) ;
178+ self . message_handlers . layout_message_handler . process_message ( message, & mut queue, context ) ;
230179 }
231180 Message :: Portfolio ( message) => {
232181 let ipp = & self . message_handlers . input_preprocessor_message_handler ;
@@ -240,7 +189,7 @@ impl Dispatcher {
240189 self . message_handlers . portfolio_message_handler . process_message (
241190 message,
242191 & mut queue,
243- PortfolioMessageData {
192+ PortfolioMessageContext {
244193 ipp,
245194 preferences,
246195 current_tool,
@@ -261,7 +210,7 @@ impl Dispatcher {
261210 return ;
262211 } ;
263212
264- let data = ToolMessageData {
213+ let context = ToolMessageContext {
265214 document_id,
266215 document,
267216 input : & self . message_handlers . input_preprocessor_message_handler ,
@@ -270,11 +219,46 @@ impl Dispatcher {
270219 preferences : & self . message_handlers . preferences_message_handler ,
271220 } ;
272221
273- self . message_handlers . tool_message_handler . process_message ( message, & mut queue, data ) ;
222+ self . message_handlers . tool_message_handler . process_message ( message, & mut queue, context ) ;
274223 }
275224 Message :: Workspace ( message) => {
276225 self . message_handlers . workspace_message_handler . process_message ( message, & mut queue, ( ) ) ;
277226 }
227+ Message :: NoOp => { }
228+ Message :: Batched { messages } => {
229+ messages. iter ( ) . for_each ( |message| self . handle_message ( message. to_owned ( ) , false ) ) ;
230+ }
231+ Message :: StartBuffer => {
232+ self . buffered_queue = Some ( std:: mem:: take ( & mut self . message_queues ) ) ;
233+ }
234+ Message :: EndBuffer { render_metadata } => {
235+ // Assign the message queue to the currently buffered queue
236+ if let Some ( buffered_queue) = self . buffered_queue . take ( ) {
237+ self . cleanup_queues ( false ) ;
238+ assert ! ( self . message_queues. is_empty( ) , "message queues are always empty when ending a buffer" ) ;
239+ self . message_queues = buffered_queue;
240+ } ;
241+
242+ let graphene_std:: renderer:: RenderMetadata {
243+ upstream_footprints : footprints,
244+ local_transforms,
245+ first_instance_source_id,
246+ click_targets,
247+ clip_targets,
248+ } = render_metadata;
249+
250+ // Run these update state messages immediately
251+ let messages = [
252+ DocumentMessage :: UpdateUpstreamTransforms {
253+ upstream_footprints : footprints,
254+ local_transforms,
255+ first_instance_source_id,
256+ } ,
257+ DocumentMessage :: UpdateClickTargets { click_targets } ,
258+ DocumentMessage :: UpdateClipTargets { clip_targets } ,
259+ ] ;
260+ Self :: schedule_execution ( & mut self . message_queues , false , messages. map ( Message :: from) ) ;
261+ }
278262 }
279263
280264 // If there are child messages, append the queue to the list of queues
0 commit comments