Skip to main content

handle

Function handle 

Source
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
Hide additional 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}