@@ -4,7 +4,7 @@ use document_core::color::Color;
4
4
use crate :: input:: InputPreprocessor ;
5
5
use crate :: {
6
6
document:: Document ,
7
- tool:: { tool_options:: ToolOptions , ToolFsmState , ToolType } ,
7
+ tool:: { tool_options:: ToolOptions , DocumentToolData , ToolFsmState , ToolType } ,
8
8
} ;
9
9
use std:: collections:: VecDeque ;
10
10
@@ -50,8 +50,14 @@ impl MessageHandler<ToolMessage, (&Document, &InputPreprocessor)> for ToolMessag
50
50
let ( document, input) = data;
51
51
use ToolMessage :: * ;
52
52
match message {
53
- SelectPrimaryColor ( c) => self . tool_state . document_tool_data . primary_color = c,
54
- SelectSecondaryColor ( c) => self . tool_state . document_tool_data . secondary_color = c,
53
+ SelectPrimaryColor ( c) => {
54
+ self . tool_state . document_tool_data . primary_color = c;
55
+ update_working_colors ( & self . tool_state . document_tool_data , responses) ;
56
+ }
57
+ SelectSecondaryColor ( c) => {
58
+ self . tool_state . document_tool_data . secondary_color = c;
59
+ update_working_colors ( & self . tool_state . document_tool_data , responses) ;
60
+ }
55
61
SelectTool ( tool) => {
56
62
let mut reset = |tool| match tool {
57
63
ToolType :: Ellipse => responses. push_back ( EllipseMessage :: Abort . into ( ) ) ,
@@ -70,25 +76,13 @@ impl MessageHandler<ToolMessage, (&Document, &InputPreprocessor)> for ToolMessag
70
76
SwapColors => {
71
77
let doc_data = & mut self . tool_state . document_tool_data ;
72
78
std:: mem:: swap ( & mut doc_data. primary_color , & mut doc_data. secondary_color ) ;
73
- responses. push_back (
74
- FrontendMessage :: UpdateWorkingColors {
75
- primary : doc_data. primary_color ,
76
- secondary : doc_data. secondary_color ,
77
- }
78
- . into ( ) ,
79
- )
79
+ update_working_colors ( doc_data, responses) ;
80
80
}
81
81
ResetColors => {
82
82
let doc_data = & mut self . tool_state . document_tool_data ;
83
83
doc_data. primary_color = Color :: BLACK ;
84
84
doc_data. secondary_color = Color :: WHITE ;
85
- responses. push_back (
86
- FrontendMessage :: UpdateWorkingColors {
87
- primary : doc_data. primary_color ,
88
- secondary : doc_data. secondary_color ,
89
- }
90
- . into ( ) ,
91
- )
85
+ update_working_colors ( doc_data, responses) ;
92
86
}
93
87
SetToolOptions ( tool_type, tool_options) => {
94
88
self . tool_state . document_tool_data . tool_options . insert ( tool_type, tool_options) ;
@@ -120,3 +114,13 @@ impl MessageHandler<ToolMessage, (&Document, &InputPreprocessor)> for ToolMessag
120
114
list
121
115
}
122
116
}
117
+
118
+ fn update_working_colors ( doc_data : & DocumentToolData , responses : & mut VecDeque < Message > ) {
119
+ responses. push_back (
120
+ FrontendMessage :: UpdateWorkingColors {
121
+ primary : doc_data. primary_color ,
122
+ secondary : doc_data. secondary_color ,
123
+ }
124
+ . into ( ) ,
125
+ ) ;
126
+ }
0 commit comments