diff options
Diffstat (limited to 'native/src')
| -rw-r--r-- | native/src/event.rs | 5 | ||||
| -rw-r--r-- | native/src/input.rs | 7 | ||||
| -rw-r--r-- | native/src/input/button_state.rs | 9 | ||||
| -rw-r--r-- | native/src/input/keyboard.rs | 5 | ||||
| -rw-r--r-- | native/src/input/keyboard/event.rs | 26 | ||||
| -rw-r--r-- | native/src/input/mouse.rs | 9 | ||||
| -rw-r--r-- | native/src/input/mouse/button.rs | 15 | ||||
| -rw-r--r-- | native/src/input/mouse/event.rs | 61 | ||||
| -rw-r--r-- | native/src/keyboard.rs | 2 | ||||
| -rw-r--r-- | native/src/lib.rs | 5 | ||||
| -rw-r--r-- | native/src/mouse.rs | 6 | ||||
| -rw-r--r-- | native/src/mouse/click.rs (renamed from native/src/input/mouse/click.rs) | 0 | ||||
| -rw-r--r-- | native/src/mouse_cursor.rs | 36 | ||||
| -rw-r--r-- | native/src/user_interface.rs | 4 | ||||
| -rw-r--r-- | native/src/widget/button.rs | 33 | ||||
| -rw-r--r-- | native/src/widget/checkbox.rs | 8 | ||||
| -rw-r--r-- | native/src/widget/pane_grid.rs | 189 | ||||
| -rw-r--r-- | native/src/widget/pane_grid/state.rs | 2 | ||||
| -rw-r--r-- | native/src/widget/radio.rs | 8 | ||||
| -rw-r--r-- | native/src/widget/scrollable.rs | 20 | ||||
| -rw-r--r-- | native/src/widget/slider.rs | 23 | ||||
| -rw-r--r-- | native/src/widget/text_input.rs | 32 | ||||
| -rw-r--r-- | native/src/window/backend.rs | 4 | 
23 files changed, 160 insertions, 349 deletions
| diff --git a/native/src/event.rs b/native/src/event.rs index b2550ead..606a71d6 100644 --- a/native/src/event.rs +++ b/native/src/event.rs @@ -1,7 +1,4 @@ -use crate::{ -    input::{keyboard, mouse}, -    window, -}; +use crate::{keyboard, mouse, window};  /// A user interface event.  /// diff --git a/native/src/input.rs b/native/src/input.rs deleted file mode 100644 index 097fa730..00000000 --- a/native/src/input.rs +++ /dev/null @@ -1,7 +0,0 @@ -//! Map your system events into input events that the runtime can understand. -pub mod keyboard; -pub mod mouse; - -mod button_state; - -pub use button_state::ButtonState; diff --git a/native/src/input/button_state.rs b/native/src/input/button_state.rs deleted file mode 100644 index 988043ba..00000000 --- a/native/src/input/button_state.rs +++ /dev/null @@ -1,9 +0,0 @@ -/// The state of a button. -#[derive(Debug, Hash, Ord, PartialOrd, PartialEq, Eq, Clone, Copy)] -pub enum ButtonState { -    /// The button is pressed. -    Pressed, - -    /// The button is __not__ pressed. -    Released, -} diff --git a/native/src/input/keyboard.rs b/native/src/input/keyboard.rs deleted file mode 100644 index 928bf492..00000000 --- a/native/src/input/keyboard.rs +++ /dev/null @@ -1,5 +0,0 @@ -//! Build keyboard events. -mod event; - -pub use event::Event; -pub use iced_core::keyboard::{KeyCode, ModifiersState}; diff --git a/native/src/input/keyboard/event.rs b/native/src/input/keyboard/event.rs deleted file mode 100644 index 862f30c4..00000000 --- a/native/src/input/keyboard/event.rs +++ /dev/null @@ -1,26 +0,0 @@ -use super::{KeyCode, ModifiersState}; -use crate::input::ButtonState; - -/// A keyboard event. -/// -/// _**Note:** This type is largely incomplete! If you need to track -/// additional events, feel free to [open an issue] and share your use case!_ -/// -/// [open an issue]: https://github.com/hecrj/iced/issues -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum Event { -    /// A keyboard key was pressed or released. -    Input { -        /// The state of the key -        state: ButtonState, - -        /// The key identifier -        key_code: KeyCode, - -        /// The state of the modifier keys -        modifiers: ModifiersState, -    }, - -    /// A unicode character was received. -    CharacterReceived(char), -} diff --git a/native/src/input/mouse.rs b/native/src/input/mouse.rs deleted file mode 100644 index 7198b233..00000000 --- a/native/src/input/mouse.rs +++ /dev/null @@ -1,9 +0,0 @@ -//! Build mouse events. -mod button; -mod event; - -pub mod click; - -pub use button::Button; -pub use click::Click; -pub use event::{Event, ScrollDelta}; diff --git a/native/src/input/mouse/button.rs b/native/src/input/mouse/button.rs deleted file mode 100644 index aeb8a55d..00000000 --- a/native/src/input/mouse/button.rs +++ /dev/null @@ -1,15 +0,0 @@ -/// The button of a mouse. -#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] -pub enum Button { -    /// The left mouse button. -    Left, - -    /// The right mouse button. -    Right, - -    /// The middle (wheel) button. -    Middle, - -    /// Some other button. -    Other(u8), -} diff --git a/native/src/input/mouse/event.rs b/native/src/input/mouse/event.rs deleted file mode 100644 index aafc4fe3..00000000 --- a/native/src/input/mouse/event.rs +++ /dev/null @@ -1,61 +0,0 @@ -use super::Button; -use crate::input::ButtonState; - -/// A mouse event. -/// -/// _**Note:** This type is largely incomplete! If you need to track -/// additional events, feel free to [open an issue] and share your use case!_ -/// -/// [open an issue]: https://github.com/hecrj/iced/issues -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum Event { -    /// The mouse cursor entered the window. -    CursorEntered, - -    /// The mouse cursor left the window. -    CursorLeft, - -    /// The mouse cursor was moved -    CursorMoved { -        /// The X coordinate of the mouse position -        x: f32, - -        /// The Y coordinate of the mouse position -        y: f32, -    }, - -    /// A mouse button was pressed or released. -    Input { -        /// The state of the button -        state: ButtonState, - -        /// The button identifier -        button: Button, -    }, - -    /// The mouse wheel was scrolled. -    WheelScrolled { -        /// The scroll movement. -        delta: ScrollDelta, -    }, -} - -/// A scroll movement. -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum ScrollDelta { -    /// A line-based scroll movement -    Lines { -        /// The number of horizontal lines scrolled -        x: f32, - -        /// The number of vertical lines scrolled -        y: f32, -    }, -    /// A pixel-based scroll movement -    Pixels { -        /// The number of horizontal pixels scrolled -        x: f32, -        /// The number of vertical pixels scrolled -        y: f32, -    }, -} diff --git a/native/src/keyboard.rs b/native/src/keyboard.rs new file mode 100644 index 00000000..012538e3 --- /dev/null +++ b/native/src/keyboard.rs @@ -0,0 +1,2 @@ +//! Track keyboard events. +pub use iced_core::keyboard::*; diff --git a/native/src/lib.rs b/native/src/lib.rs index 89612391..9882803f 100644 --- a/native/src/lib.rs +++ b/native/src/lib.rs @@ -39,8 +39,9 @@  #![deny(unused_results)]  #![forbid(unsafe_code)]  #![forbid(rust_2018_idioms)] -pub mod input; +pub mod keyboard;  pub mod layout; +pub mod mouse;  pub mod renderer;  pub mod subscription;  pub mod widget; @@ -50,7 +51,6 @@ mod clipboard;  mod element;  mod event;  mod hasher; -mod mouse_cursor;  mod runtime;  mod user_interface; @@ -68,7 +68,6 @@ pub use element::Element;  pub use event::Event;  pub use hasher::Hasher;  pub use layout::Layout; -pub use mouse_cursor::MouseCursor;  pub use renderer::Renderer;  pub use runtime::Runtime;  pub use subscription::Subscription; diff --git a/native/src/mouse.rs b/native/src/mouse.rs new file mode 100644 index 00000000..9ee406cf --- /dev/null +++ b/native/src/mouse.rs @@ -0,0 +1,6 @@ +//! Track mouse events. + +pub mod click; + +pub use click::Click; +pub use iced_core::mouse::*; diff --git a/native/src/input/mouse/click.rs b/native/src/mouse/click.rs index d27bc67e..d27bc67e 100644 --- a/native/src/input/mouse/click.rs +++ b/native/src/mouse/click.rs diff --git a/native/src/mouse_cursor.rs b/native/src/mouse_cursor.rs deleted file mode 100644 index 0dad3edc..00000000 --- a/native/src/mouse_cursor.rs +++ /dev/null @@ -1,36 +0,0 @@ -/// The state of the mouse cursor. -#[derive(Debug, Eq, PartialEq, Clone, Copy, PartialOrd, Ord)] -pub enum MouseCursor { -    /// The cursor is out of the bounds of the user interface. -    OutOfBounds, - -    /// The cursor is over a non-interactive widget. -    Idle, - -    /// The cursor is over a clickable widget. -    Pointer, - -    /// The cursor is over a busy widget. -    Working, - -    /// The cursor is over a grabbable widget. -    Grab, - -    /// The cursor is grabbing a widget. -    Grabbing, - -    /// The cursor is over a text widget. -    Text, - -    /// The cursor is resizing a widget horizontally. -    ResizingHorizontally, - -    /// The cursor is resizing a widget vertically. -    ResizingVertically, -} - -impl Default for MouseCursor { -    fn default() -> MouseCursor { -        MouseCursor::OutOfBounds -    } -} diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index 5d9221e9..48cd6111 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -1,6 +1,4 @@ -use crate::{ -    input::mouse, layout, Clipboard, Element, Event, Layout, Point, Size, -}; +use crate::{layout, mouse, Clipboard, Element, Event, Layout, Point, Size};  use std::hash::Hasher; diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index 3cf4f780..c932da2b 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -5,8 +5,7 @@  //! [`Button`]: struct.Button.html  //! [`State`]: struct.State.html  use crate::{ -    input::{mouse, ButtonState}, -    layout, Clipboard, Element, Event, Hasher, Layout, Length, Point, +    layout, mouse, Clipboard, Element, Event, Hasher, Layout, Length, Point,      Rectangle, Widget,  };  use std::hash::Hash; @@ -185,28 +184,24 @@ where          _clipboard: Option<&dyn Clipboard>,      ) {          match event { -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Left, -                state, -            }) => { +            Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => { +                if self.on_press.is_some() { +                    let bounds = layout.bounds(); + +                    self.state.is_pressed = bounds.contains(cursor_position); +                } +            } +            Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) => {                  if let Some(on_press) = self.on_press.clone() {                      let bounds = layout.bounds(); -                    match state { -                        ButtonState::Pressed => { -                            self.state.is_pressed = -                                bounds.contains(cursor_position); -                        } -                        ButtonState::Released => { -                            let is_clicked = self.state.is_pressed -                                && bounds.contains(cursor_position); +                    let is_clicked = self.state.is_pressed +                        && bounds.contains(cursor_position); -                            self.state.is_pressed = false; +                    self.state.is_pressed = false; -                            if is_clicked { -                                messages.push(on_press); -                            } -                        } +                    if is_clicked { +                        messages.push(on_press);                      }                  }              } diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index 4d167df7..5fb13290 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -2,8 +2,7 @@  use std::hash::Hash;  use crate::{ -    input::{mouse, ButtonState}, -    layout, row, text, Align, Clipboard, Element, Event, Hasher, +    layout, mouse, row, text, Align, Clipboard, Element, Event, Hasher,      HorizontalAlignment, Layout, Length, Point, Rectangle, Row, Text,      VerticalAlignment, Widget,  }; @@ -152,10 +151,7 @@ where          _clipboard: Option<&dyn Clipboard>,      ) {          match event { -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Left, -                state: ButtonState::Pressed, -            }) => { +            Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {                  let mouse_over = layout.bounds().contains(cursor_position);                  if mouse_over { diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index f84775ed..c398a30b 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -22,9 +22,8 @@ pub use split::Split;  pub use state::{Focus, State};  use crate::{ -    input::{keyboard, mouse, ButtonState}, -    layout, Clipboard, Element, Event, Hasher, Layout, Length, Point, Size, -    Widget, +    keyboard, layout, mouse, Clipboard, Element, Event, Hasher, Layout, Length, +    Point, Size, Widget,  };  /// A collection of panes distributed using either vertical or horizontal splits @@ -405,11 +404,8 @@ where          clipboard: Option<&dyn Clipboard>,      ) {          match event { -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Left, -                state, -            }) => match state { -                ButtonState::Pressed => { +            Event::Mouse(mouse_event) => match mouse_event { +                mouse::Event::ButtonPressed(mouse::Button::Left) => {                      let mut clicked_region =                          self.elements.iter().zip(layout.children()).filter(                              |(_, layout)| { @@ -438,7 +434,7 @@ where                          self.state.unfocus();                      }                  } -                ButtonState::Released => { +                mouse::Event::ButtonReleased(mouse::Button::Left) => {                      if let Some(pane) = self.state.picked_pane() {                          self.state.focus(&pane); @@ -465,97 +461,110 @@ where                          }                      }                  } -            }, -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Right, -                state: ButtonState::Pressed, -            }) if self.on_resize.is_some() -                && self.state.picked_pane().is_none() -                && self.pressed_modifiers.matches(self.modifier_keys) => -            { -                let bounds = layout.bounds(); +                mouse::Event::ButtonPressed(mouse::Button::Right) +                    if self.on_resize.is_some() +                        && self.state.picked_pane().is_none() +                        && self +                            .pressed_modifiers +                            .matches(self.modifier_keys) => +                { +                    let bounds = layout.bounds(); + +                    if bounds.contains(cursor_position) { +                        let relative_cursor = Point::new( +                            cursor_position.x - bounds.x, +                            cursor_position.y - bounds.y, +                        ); -                if bounds.contains(cursor_position) { -                    let relative_cursor = Point::new( -                        cursor_position.x - bounds.x, -                        cursor_position.y - bounds.y, -                    ); - -                    let splits = self.state.splits( -                        f32::from(self.spacing), -                        Size::new(bounds.width, bounds.height), -                    ); - -                    let mut sorted_splits: Vec<_> = splits -                        .iter() -                        .filter(|(_, (axis, rectangle, _))| match axis { -                            Axis::Horizontal => { -                                relative_cursor.x > rectangle.x -                                    && relative_cursor.x -                                        < rectangle.x + rectangle.width -                            } -                            Axis::Vertical => { -                                relative_cursor.y > rectangle.y -                                    && relative_cursor.y -                                        < rectangle.y + rectangle.height -                            } -                        }) -                        .collect(); - -                    sorted_splits.sort_by_key( -                        |(_, (axis, rectangle, ratio))| { -                            let distance = match axis { -                                Axis::Horizontal => (relative_cursor.y -                                    - (rectangle.y + rectangle.height * ratio)) -                                    .abs(), -                                Axis::Vertical => (relative_cursor.x -                                    - (rectangle.x + rectangle.width * ratio)) -                                    .abs(), -                            }; +                        let splits = self.state.splits( +                            f32::from(self.spacing), +                            Size::new(bounds.width, bounds.height), +                        ); -                            distance.round() as u32 -                        }, -                    ); +                        let mut sorted_splits: Vec<_> = splits +                            .iter() +                            .filter(|(_, (axis, rectangle, _))| match axis { +                                Axis::Horizontal => { +                                    relative_cursor.x > rectangle.x +                                        && relative_cursor.x +                                            < rectangle.x + rectangle.width +                                } +                                Axis::Vertical => { +                                    relative_cursor.y > rectangle.y +                                        && relative_cursor.y +                                            < rectangle.y + rectangle.height +                                } +                            }) +                            .collect(); + +                        sorted_splits.sort_by_key( +                            |(_, (axis, rectangle, ratio))| { +                                let distance = match axis { +                                    Axis::Horizontal => (relative_cursor.y +                                        - (rectangle.y +                                            + rectangle.height * ratio)) +                                        .abs(), +                                    Axis::Vertical => (relative_cursor.x +                                        - (rectangle.x +                                            + rectangle.width * ratio)) +                                        .abs(), +                                }; + +                                distance.round() as u32 +                            }, +                        ); -                    if let Some((split, (axis, _, _))) = sorted_splits.first() { -                        self.state.pick_split(split, *axis); -                        self.trigger_resize(layout, cursor_position, messages); +                        if let Some((split, (axis, _, _))) = +                            sorted_splits.first() +                        { +                            self.state.pick_split(split, *axis); +                            self.trigger_resize( +                                layout, +                                cursor_position, +                                messages, +                            ); +                        }                      }                  } -            } -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Right, -                state: ButtonState::Released, -            }) if self.state.picked_split().is_some() => { -                self.state.drop_split(); -            } -            Event::Mouse(mouse::Event::CursorMoved { .. }) => { -                self.trigger_resize(layout, cursor_position, messages); -            } -            Event::Keyboard(keyboard::Event::Input { -                modifiers, -                key_code, -                state, -            }) => { -                if let Some(on_key_press) = &self.on_key_press { -                    // TODO: Discard when event is captured -                    if state == ButtonState::Pressed { -                        if let Some(_) = self.state.active_pane() { -                            if modifiers.matches(self.modifier_keys) { -                                if let Some(message) = -                                    on_key_press(KeyPressEvent { -                                        key_code, -                                        modifiers, -                                    }) -                                { -                                    messages.push(message); +                mouse::Event::ButtonPressed(mouse::Button::Right) +                    if self.state.picked_split().is_some() => +                { +                    self.state.drop_split(); +                } +                mouse::Event::CursorMoved { .. } => { +                    self.trigger_resize(layout, cursor_position, messages); +                } +                _ => {} +            }, +            Event::Keyboard(keyboard_event) => { +                match keyboard_event { +                    keyboard::Event::KeyPressed { +                        modifiers, +                        key_code, +                    } => { +                        if let Some(on_key_press) = &self.on_key_press { +                            // TODO: Discard when event is captured +                            if let Some(_) = self.state.active_pane() { +                                if modifiers.matches(self.modifier_keys) { +                                    if let Some(message) = +                                        on_key_press(KeyPressEvent { +                                            key_code, +                                            modifiers, +                                        }) +                                    { +                                        messages.push(message); +                                    }                                  }                              }                          } + +                        *self.pressed_modifiers = modifiers; +                    } +                    keyboard::Event::KeyReleased { modifiers, .. } => { +                        *self.pressed_modifiers = modifiers;                      } +                    _ => {}                  } - -                *self.pressed_modifiers = modifiers;              }              _ => {}          } diff --git a/native/src/widget/pane_grid/state.rs b/native/src/widget/pane_grid/state.rs index 0a8b8419..ed2813b8 100644 --- a/native/src/widget/pane_grid/state.rs +++ b/native/src/widget/pane_grid/state.rs @@ -1,5 +1,5 @@  use crate::{ -    input::keyboard, +    keyboard,      pane_grid::{node::Node, Axis, Direction, Pane, Split},      Hasher, Point, Rectangle, Size,  }; diff --git a/native/src/widget/radio.rs b/native/src/widget/radio.rs index a13d86a0..ab5bcf32 100644 --- a/native/src/widget/radio.rs +++ b/native/src/widget/radio.rs @@ -1,7 +1,6 @@  //! Create choices using radio buttons.  use crate::{ -    input::{mouse, ButtonState}, -    layout, row, text, Align, Clipboard, Element, Event, Hasher, +    layout, mouse, row, text, Align, Clipboard, Element, Event, Hasher,      HorizontalAlignment, Layout, Length, Point, Rectangle, Row, Text,      VerticalAlignment, Widget,  }; @@ -123,10 +122,7 @@ where          _clipboard: Option<&dyn Clipboard>,      ) {          match event { -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Left, -                state: ButtonState::Pressed, -            }) => { +            Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {                  if layout.bounds().contains(cursor_position) {                      messages.push(self.on_click.clone());                  } diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs index 393095a4..3c8e5e5b 100644 --- a/native/src/widget/scrollable.rs +++ b/native/src/widget/scrollable.rs @@ -1,9 +1,7 @@  //! Navigate an endless amount of content with a scrollbar.  use crate::{ -    column, -    input::{mouse, ButtonState}, -    layout, Align, Clipboard, Column, Element, Event, Hasher, Layout, Length, -    Point, Rectangle, Size, Widget, +    column, layout, mouse, Align, Clipboard, Column, Element, Event, Hasher, +    Layout, Length, Point, Rectangle, Size, Widget,  };  use std::{f32, hash::Hash, u32}; @@ -188,10 +186,9 @@ where          if self.state.is_scroller_grabbed() {              match event { -                Event::Mouse(mouse::Event::Input { -                    button: mouse::Button::Left, -                    state: ButtonState::Released, -                }) => { +                Event::Mouse(mouse::Event::ButtonReleased( +                    mouse::Button::Left, +                )) => {                      self.state.scroller_grabbed_at = None;                  }                  Event::Mouse(mouse::Event::CursorMoved { .. }) => { @@ -212,10 +209,9 @@ where              }          } else if is_mouse_over_scrollbar {              match event { -                Event::Mouse(mouse::Event::Input { -                    button: mouse::Button::Left, -                    state: ButtonState::Pressed, -                }) => { +                Event::Mouse(mouse::Event::ButtonPressed( +                    mouse::Button::Left, +                )) => {                      if let Some(scrollbar) = scrollbar {                          if let Some(scroller_grabbed_at) =                              scrollbar.grab_scroller(cursor_position) diff --git a/native/src/widget/slider.rs b/native/src/widget/slider.rs index 1feb7825..8cdfc3de 100644 --- a/native/src/widget/slider.rs +++ b/native/src/widget/slider.rs @@ -5,8 +5,7 @@  //! [`Slider`]: struct.Slider.html  //! [`State`]: struct.State.html  use crate::{ -    input::{mouse, ButtonState}, -    layout, Clipboard, Element, Event, Hasher, Layout, Length, Point, +    layout, mouse, Clipboard, Element, Event, Hasher, Layout, Length, Point,      Rectangle, Size, Widget,  }; @@ -164,25 +163,23 @@ where          };          match event { -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Left, -                state, -            }) => match state { -                ButtonState::Pressed => { +            Event::Mouse(mouse_event) => match mouse_event { +                mouse::Event::ButtonPressed(mouse::Button::Left) => {                      if layout.bounds().contains(cursor_position) {                          change();                          self.state.is_dragging = true;                      }                  } -                ButtonState::Released => { +                mouse::Event::ButtonReleased(mouse::Button::Left) => {                      self.state.is_dragging = false;                  } -            }, -            Event::Mouse(mouse::Event::CursorMoved { .. }) => { -                if self.state.is_dragging { -                    change(); +                mouse::Event::CursorMoved { .. } => { +                    if self.state.is_dragging { +                        change(); +                    }                  } -            } +                _ => {} +            },              _ => {}          }      } diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs index 7d1a7415..1cdbe007 100644 --- a/native/src/widget/text_input.rs +++ b/native/src/widget/text_input.rs @@ -15,13 +15,10 @@ pub use value::Value;  use editor::Editor;  use crate::{ -    input::{ -        keyboard, -        mouse::{self, click}, -        ButtonState, -    }, -    layout, Clipboard, Element, Event, Font, Hasher, Layout, Length, Point, -    Rectangle, Size, Widget, +    keyboard, layout, +    mouse::{self, click}, +    Clipboard, Element, Event, Font, Hasher, Layout, Length, Point, Rectangle, +    Size, Widget,  };  use std::u32; @@ -212,10 +209,7 @@ where          clipboard: Option<&dyn Clipboard>,      ) {          match event { -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Left, -                state: ButtonState::Pressed, -            }) => { +            Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {                  let is_clicked = layout.bounds().contains(cursor_position);                  if is_clicked { @@ -280,10 +274,7 @@ where                  self.state.is_dragging = is_clicked;                  self.state.is_focused = is_clicked;              } -            Event::Mouse(mouse::Event::Input { -                button: mouse::Button::Left, -                state: ButtonState::Released, -            }) => { +            Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) => {                  self.state.is_dragging = false;              }              Event::Mouse(mouse::Event::CursorMoved { x, .. }) => { @@ -327,9 +318,8 @@ where                  let message = (self.on_change)(editor.contents());                  messages.push(message);              } -            Event::Keyboard(keyboard::Event::Input { +            Event::Keyboard(keyboard::Event::KeyPressed {                  key_code, -                state: ButtonState::Pressed,                  modifiers,              }) if self.state.is_focused => match key_code {                  keyboard::KeyCode::Enter => { @@ -473,10 +463,8 @@ where                  }                  _ => {}              }, -            Event::Keyboard(keyboard::Event::Input { -                key_code, -                state: ButtonState::Released, -                .. +            Event::Keyboard(keyboard::Event::KeyReleased { +                key_code, ..              }) => match key_code {                  keyboard::KeyCode::V => {                      self.state.is_pasting = None; @@ -749,7 +737,7 @@ fn find_cursor_position<Renderer: self::Renderer>(  }  mod platform { -    use crate::input::keyboard; +    use crate::keyboard;      pub fn is_jump_modifier_pressed(          modifiers: keyboard::ModifiersState, diff --git a/native/src/window/backend.rs b/native/src/window/backend.rs index 3bc691cd..892d4bb9 100644 --- a/native/src/window/backend.rs +++ b/native/src/window/backend.rs @@ -1,4 +1,4 @@ -use crate::MouseCursor; +use crate::mouse;  use raw_window_handle::HasRawWindowHandle; @@ -51,5 +51,5 @@ pub trait Backend: Sized {          output: &<Self::Renderer as crate::Renderer>::Output,          scale_factor: f64,          overlay: &[T], -    ) -> MouseCursor; +    ) -> mouse::Interaction;  } | 
