pub fn handle<Message>(event: Event) -> Task<Message>where
Message: Send + 'static,Expand description
Handle a crate Event emitted by subscription.
Examples found in repository?
examples/custom_titlebar.rs (line 89)
87fn update(state: &mut CustomTitlebarDemo, message: Message) -> Task<Message> {
88 match message {
89 Message::Chrome(event) => iced_window_chrome::handle(event),
90 Message::TrackWindow(id) => {
91 state.window_id = id;
92 Task::none()
93 }
94 Message::ResizeHover(direction) => state
95 .window_id
96 .filter(|_| state.platform.uses_custom_resize_handles())
97 .map(|id| set_resize_hover_cursor(id, direction))
98 .unwrap_or_else(Task::none),
99 Message::StartWindowDrag => state
100 .window_id
101 .filter(|_| state.platform.can_drag_titlebar())
102 .map(window::drag)
103 .unwrap_or_else(Task::none),
104 Message::Resize(direction) => state
105 .window_id
106 .filter(|_| state.platform.uses_custom_resize_handles())
107 .map(|id| window::drag_resize(id, direction))
108 .unwrap_or_else(Task::none),
109 Message::ToggleMaximize => state
110 .window_id
111 .filter(|_| state.platform.can_drag_titlebar())
112 .map(window::toggle_maximize)
113 .unwrap_or_else(Task::none),
114 Message::Minimize => state
115 .window_id
116 .filter(|_| state.platform.shows_custom_caption_buttons())
117 .map(|id| window::minimize(id, true))
118 .unwrap_or_else(Task::none),
119 Message::Close => state
120 .window_id
121 .filter(|_| state.platform.shows_custom_caption_buttons())
122 .map(window::close)
123 .unwrap_or_else(Task::none),
124 }
125}More examples
examples/chrome_lab.rs (line 126)
124fn update(state: &mut ChromeLab, message: Message) -> Task<Message> {
125 match message {
126 Message::Chrome(event) => iced_window_chrome::handle(event),
127 Message::ApplyNow => reapply(state),
128 Message::OpenWindow => {
129 let (_, task) = window::open(window::Settings {
130 size: Size::new(640.0, 420.0),
131 ..window::Settings::default()
132 });
133
134 task.map(|_| Message::Ignore)
135 }
136 Message::Ignore => Task::none(),
137 Message::WindowsCaption(value) => {
138 state.chrome.windows.caption = value;
139 reapply(state)
140 }
141 Message::WindowsBorder(value) => {
142 state.chrome.windows.border = value;
143 reapply(state)
144 }
145 Message::WindowsClose(value) => {
146 state.chrome.windows.buttons.close = value;
147 reapply(state)
148 }
149 Message::WindowsMinimize(value) => {
150 state.chrome.windows.buttons.minimize = value;
151 reapply(state)
152 }
153 Message::WindowsMaximize(value) => {
154 state.chrome.windows.buttons.maximize = value;
155 reapply(state)
156 }
157 Message::WindowsCorner(value) => {
158 state.chrome.windows.corner_preference = value.into_setting();
159 reapply(state)
160 }
161 Message::WindowsBorderColor(value) => {
162 state.chrome.windows.border_color = value.into_setting();
163 reapply(state)
164 }
165 Message::WindowsTitleBackgroundColor(value) => {
166 state.chrome.windows.title_background_color = value.into_setting();
167 reapply(state)
168 }
169 Message::WindowsTitleTextColor(value) => {
170 state.chrome.windows.title_text_color = value.into_setting();
171 reapply(state)
172 }
173 Message::WindowsBackdrop(value) => {
174 state.chrome.windows.backdrop = value.into_setting();
175 reapply(state)
176 }
177 Message::MacosTitlebar(value) => {
178 state.chrome.macos.titlebar = value;
179 reapply(state)
180 }
181 Message::MacosTitle(value) => {
182 state.chrome.macos.title = value;
183 reapply(state)
184 }
185 Message::MacosTrafficLights(value) => {
186 state.chrome.macos.traffic_lights = value;
187 reapply(state)
188 }
189 Message::MacosTransparent(value) => {
190 state.chrome.macos.titlebar_transparent = value;
191 reapply(state)
192 }
193 Message::MacosFullsize(value) => {
194 state.chrome.macos.fullsize_content_view = value;
195 reapply(state)
196 }
197 Message::MacosTitlebarHeight(value) => {
198 state.chrome.macos.titlebar_height = value.into_setting();
199 reapply(state)
200 }
201 Message::MacosTrafficLightOffset(value) => {
202 state.chrome.macos.traffic_light_offset_y = value.into_setting();
203 reapply(state)
204 }
205 Message::MacosSeparatorStyle(value) => {
206 state.chrome.macos.titlebar_separator_style = value.into_setting();
207 reapply(state)
208 }
209 Message::LinuxDecorations(value) => {
210 state.chrome.linux.decorations = value;
211 reapply(state)
212 }
213 Message::LinuxClose(value) => {
214 state.chrome.linux.buttons.close = value;
215 reapply(state)
216 }
217 Message::LinuxMinimize(value) => {
218 state.chrome.linux.buttons.minimize = value;
219 reapply(state)
220 }
221 Message::LinuxMaximize(value) => {
222 state.chrome.linux.buttons.maximize = value;
223 reapply(state)
224 }
225 }
226}