pub enum ElementState {
Pressed,
Released,
}Expand description
Describes the input state of a key.
Variants§
Implementations§
Source§impl ElementState
impl ElementState
Sourcepub fn is_pressed(self) -> bool
pub fn is_pressed(self) -> bool
True if self == Pressed.
Examples found in repository?
examples/window.rs (line 367)
310 fn window_event(
311 &mut self,
312 event_loop: &ActiveEventLoop,
313 window_id: WindowId,
314 event: WindowEvent,
315 ) {
316 let window = match self.windows.get_mut(&window_id) {
317 Some(window) => window,
318 None => return,
319 };
320
321 match event {
322 WindowEvent::Resized(size) => {
323 window.resize(size);
324 },
325 WindowEvent::Focused(focused) => {
326 if focused {
327 info!("Window={window_id:?} focused");
328 } else {
329 info!("Window={window_id:?} unfocused");
330 }
331 },
332 WindowEvent::ScaleFactorChanged { scale_factor, .. } => {
333 info!("Window={window_id:?} changed scale to {scale_factor}");
334 },
335 WindowEvent::ThemeChanged(theme) => {
336 info!("Theme changed to {theme:?}");
337 window.set_theme(theme);
338 },
339 WindowEvent::RedrawRequested => {
340 if let Err(err) = window.draw() {
341 error!("Error drawing window: {err}");
342 }
343 },
344 WindowEvent::Occluded(occluded) => {
345 window.set_occluded(occluded);
346 },
347 WindowEvent::CloseRequested => {
348 info!("Closing Window={window_id:?}");
349 self.windows.remove(&window_id);
350 },
351 WindowEvent::ModifiersChanged(modifiers) => {
352 window.modifiers = modifiers.state();
353 info!("Modifiers changed to {:?}", window.modifiers);
354 },
355 WindowEvent::MouseWheel { delta, .. } => match delta {
356 MouseScrollDelta::LineDelta(x, y) => {
357 info!("Mouse wheel Line Delta: ({x},{y})");
358 },
359 MouseScrollDelta::PixelDelta(px) => {
360 info!("Mouse wheel Pixel Delta: ({},{})", px.x, px.y);
361 },
362 },
363 WindowEvent::KeyboardInput { event, is_synthetic: false, .. } => {
364 let mods = window.modifiers;
365
366 // Dispatch actions only on press.
367 if event.state.is_pressed() {
368 let action = if let Key::Character(ch) = event.logical_key.as_ref() {
369 Self::process_key_binding(&ch.to_uppercase(), &mods)
370 } else {
371 None
372 };
373
374 if let Some(action) = action {
375 self.handle_action(event_loop, window_id, action);
376 }
377 }
378 },
379 WindowEvent::MouseInput { button, state, .. } => {
380 let mods = window.modifiers;
381 if let Some(action) =
382 state.is_pressed().then(|| Self::process_mouse_binding(button, &mods)).flatten()
383 {
384 self.handle_action(event_loop, window_id, action);
385 }
386 },
387 WindowEvent::CursorLeft { .. } => {
388 info!("Cursor left Window={window_id:?}");
389 window.cursor_left();
390 },
391 WindowEvent::CursorMoved { position, .. } => {
392 info!("Moved cursor to {position:?}");
393 window.cursor_moved(position);
394 },
395 WindowEvent::ActivationTokenDone { token: _token, .. } => {
396 #[cfg(any(x11_platform, wayland_platform))]
397 {
398 startup_notify::set_activation_token_env(_token);
399 if let Err(err) = self.create_window(event_loop, None) {
400 error!("Error creating new window: {err}");
401 }
402 }
403 },
404 WindowEvent::Ime(event) => match event {
405 Ime::Enabled => info!("IME enabled for Window={window_id:?}"),
406 Ime::Preedit(text, caret_pos) => {
407 info!("Preedit: {}, with caret at {:?}", text, caret_pos);
408 },
409 Ime::Commit(text) => {
410 info!("Committed: {}", text);
411 },
412 Ime::Disabled => info!("IME disabled for Window={window_id:?}"),
413 },
414 WindowEvent::PinchGesture { delta, .. } => {
415 window.zoom += delta;
416 let zoom = window.zoom;
417 if delta > 0.0 {
418 info!("Zoomed in {delta:.5} (now: {zoom:.5})");
419 } else {
420 info!("Zoomed out {delta:.5} (now: {zoom:.5})");
421 }
422 },
423 WindowEvent::RotationGesture { delta, .. } => {
424 window.rotated += delta;
425 let rotated = window.rotated;
426 if delta > 0.0 {
427 info!("Rotated counterclockwise {delta:.5} (now: {rotated:.5})");
428 } else {
429 info!("Rotated clockwise {delta:.5} (now: {rotated:.5})");
430 }
431 },
432 WindowEvent::PanGesture { delta, phase, .. } => {
433 window.panned.x += delta.x;
434 window.panned.y += delta.y;
435 info!("Panned ({delta:?})) (now: {:?}), {phase:?}", window.panned);
436 },
437 WindowEvent::DoubleTapGesture { .. } => {
438 info!("Smart zoom");
439 },
440 WindowEvent::TouchpadPressure { .. }
441 | WindowEvent::HoveredFileCancelled
442 | WindowEvent::KeyboardInput { .. }
443 | WindowEvent::CursorEntered { .. }
444 | WindowEvent::AxisMotion { .. }
445 | WindowEvent::DroppedFile(_)
446 | WindowEvent::HoveredFile(_)
447 | WindowEvent::Destroyed
448 | WindowEvent::Touch(_)
449 | WindowEvent::Moved(_) => (),
450 }
451 }Trait Implementations§
Source§impl Clone for ElementState
impl Clone for ElementState
Source§fn clone(&self) -> ElementState
fn clone(&self) -> ElementState
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ElementState
impl Debug for ElementState
Source§impl<'de> Deserialize<'de> for ElementState
impl<'de> Deserialize<'de> for ElementState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Hash for ElementState
impl Hash for ElementState
Source§impl PartialEq for ElementState
impl PartialEq for ElementState
Source§impl Serialize for ElementState
impl Serialize for ElementState
impl Copy for ElementState
impl Eq for ElementState
impl StructuralPartialEq for ElementState
Auto Trait Implementations§
impl Freeze for ElementState
impl RefUnwindSafe for ElementState
impl Send for ElementState
impl Sync for ElementState
impl Unpin for ElementState
impl UnwindSafe for ElementState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more