From 318d1bc214d41b12a97155904f80ac3246781ed9 Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Sat, 28 Nov 2020 22:38:43 +0100 Subject: [PATCH 01/13] touch events properly parsed and converted to logical size, button working --- core/src/lib.rs | 1 + core/src/touch.rs | 8 ++++++++ core/src/touch/event.rs | 17 +++++++++++++++++ core/src/touch/finger.rs | 4 ++++ core/src/touch/phase.rs | 15 +++++++++++++++ native/src/user_interface.rs | 1 - wgpu/src/text.rs | 1 + winit/src/conversion.rs | 2 +- 8 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 core/src/touch.rs create mode 100644 core/src/touch/event.rs create mode 100644 core/src/touch/finger.rs create mode 100644 core/src/touch/phase.rs diff --git a/core/src/lib.rs b/core/src/lib.rs index f2d21a5fe7..6d203bb67d 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -16,6 +16,7 @@ #![forbid(rust_2018_idioms)] pub mod keyboard; pub mod mouse; +pub mod touch; mod align; mod background; diff --git a/core/src/touch.rs b/core/src/touch.rs new file mode 100644 index 0000000000..1fd1dc06d9 --- /dev/null +++ b/core/src/touch.rs @@ -0,0 +1,8 @@ +//! Reuse basic touch types. +mod event; +mod finger; +mod phase; + +pub use event::Event; +pub use finger::Finger; +pub use phase::Phase; \ No newline at end of file diff --git a/core/src/touch/event.rs b/core/src/touch/event.rs new file mode 100644 index 0000000000..213e9d3d5e --- /dev/null +++ b/core/src/touch/event.rs @@ -0,0 +1,17 @@ +//! Build touch events. +use crate::Point; + +use super::{Phase, Finger}; + +/// A touch event. +#[derive(Debug, Clone, Copy, PartialEq)] +pub struct Event { + /// The finger of the touch. + pub finger: Finger, + + /// The position of the touch. + pub position: Point, + + /// The state of the touch. + pub phase: Phase, +} \ No newline at end of file diff --git a/core/src/touch/finger.rs b/core/src/touch/finger.rs new file mode 100644 index 0000000000..5ddb297082 --- /dev/null +++ b/core/src/touch/finger.rs @@ -0,0 +1,4 @@ + +/// A unique identifier representing a finger on a touch interaction. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct Finger(pub u64); \ No newline at end of file diff --git a/core/src/touch/phase.rs b/core/src/touch/phase.rs new file mode 100644 index 0000000000..addabf636b --- /dev/null +++ b/core/src/touch/phase.rs @@ -0,0 +1,15 @@ +/// The state of a touch interaction. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum Phase { + /// A touch interaction was started. + Started, + + /// An on-going touch interaction was moved. + Moved, + + /// A touch interaction was ended. + Ended, + + /// A touch interaction was canceled. + Canceled, +} \ No newline at end of file diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index 7a64ac5925..0d26fb3a8e 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -206,7 +206,6 @@ where &mut overlay, renderer, ); - let event_statuses = events .iter() .cloned() diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs index 78999cf871..4d92d9e9b9 100644 --- a/wgpu/src/text.rs +++ b/wgpu/src/text.rs @@ -19,6 +19,7 @@ impl Pipeline { let default_font = default_font.map(|slice| slice.to_vec()); // TODO: Font customization + #[cfg(not(target_os = "ios"))] #[cfg(feature = "default_system_font")] let default_font = { default_font.or_else(|| { diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index f073c47469..9935c3b4cf 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -19,7 +19,7 @@ pub fn window_event( match event { WindowEvent::Resized(new_size) => { let logical_size = new_size.to_logical(scale_factor); - + println!("Resized Mother FUCKER {:?}", logical_size); Some(Event::Window(window::Event::Resized { width: logical_size.width, height: logical_size.height, From 0e0c5fec3e96c935661e12e5945de456d934970b Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Tue, 1 Dec 2020 00:14:43 +0100 Subject: [PATCH 02/13] scrolling with a nice touch --- native/src/overlay/menu.rs | 25 +++++++++++++++++++++++++ native/src/widget/pick_list.rs | 4 +++- winit/src/conversion.rs | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index abac849f3e..fbba9e2a3b 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -6,6 +6,7 @@ use crate::mouse; use crate::overlay; use crate::scrollable; use crate::text; +use crate::touch; use crate::{ Clipboard, Container, Element, Hasher, Layout, Length, Point, Rectangle, Scrollable, Size, Vector, Widget, @@ -348,6 +349,30 @@ where ); } } + Event::Touch(touch::Event { + position, + phase: touch::Phase::Started, + .. + }) => { + let bounds = layout.bounds(); + + if bounds.contains(position) { + let text_size = + self.text_size.unwrap_or(renderer.default_size()); + + *self.hovered_option = Some( + ((position.y - bounds.y) + / f32::from(text_size + self.padding * 2)) + as usize, + ); + + if let Some(index) = *self.hovered_option { + if let Some(option) = self.options.get(index) { + *self.last_selection = Some(option.clone()); + } + } + } + } _ => {} } diff --git a/native/src/widget/pick_list.rs b/native/src/widget/pick_list.rs index 58c0dfe12d..64b89c789b 100644 --- a/native/src/widget/pick_list.rs +++ b/native/src/widget/pick_list.rs @@ -6,6 +6,7 @@ use crate::overlay; use crate::overlay::menu::{self, Menu}; use crate::scrollable; use crate::text; +use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, }; @@ -214,7 +215,8 @@ where _clipboard: Option<&dyn Clipboard>, ) -> event::Status { match event { - Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => { + Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) + | Event::Touch(touch::Event::FingerPressed { .. }) => { let event_status = if *self.is_open { // TODO: Encode cursor availability in the type system *self.is_open = diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index 9935c3b4cf..b2a17c1467 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -19,7 +19,7 @@ pub fn window_event( match event { WindowEvent::Resized(new_size) => { let logical_size = new_size.to_logical(scale_factor); - println!("Resized Mother FUCKER {:?}", logical_size); + Some(Event::Window(window::Event::Resized { width: logical_size.width, height: logical_size.height, From 71c918206f82b7fedd191bd30338d9930bcff29a Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Wed, 2 Dec 2020 13:06:55 +0100 Subject: [PATCH 03/13] fixed application state level touch cursor. panel_grid is touchable now. --- graphics/src/widget/pane_grid.rs | 1 + native/src/widget/pane_grid.rs | 131 +++++++++++++++---------------- winit/src/application/state.rs | 3 + 3 files changed, 68 insertions(+), 67 deletions(-) diff --git a/graphics/src/widget/pane_grid.rs b/graphics/src/widget/pane_grid.rs index f09984fc76..06aa971f25 100644 --- a/graphics/src/widget/pane_grid.rs +++ b/graphics/src/widget/pane_grid.rs @@ -36,6 +36,7 @@ impl pane_grid::Renderer for Renderer where B: Backend + backend::Text, { + // TODO Touch bugs here fn draw( &mut self, defaults: &Self::Defaults, diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index ff19cbc27e..13c7b728bb 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -34,6 +34,7 @@ use crate::mouse; use crate::overlay; use crate::row; use crate::text; +use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector, Widget, @@ -358,42 +359,34 @@ where let mut event_status = event::Status::Ignored; match event { - Event::Mouse(mouse_event) => match mouse_event { - mouse::Event::ButtonPressed(mouse::Button::Left) => { - let bounds = layout.bounds(); - - if bounds.contains(cursor_position) { - event_status = event::Status::Captured; - - match self.on_resize { - Some((leeway, _)) => { - let relative_cursor = Point::new( - cursor_position.x - bounds.x, - cursor_position.y - bounds.y, - ); - - let splits = self.state.split_regions( - f32::from(self.spacing), - Size::new(bounds.width, bounds.height), - ); - - let clicked_split = hovered_split( - splits.iter(), - f32::from(self.spacing + leeway), - relative_cursor, - ); + Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) + | Event::Touch(touch::Event::FingerPressed{ .. }) => { + let bounds = layout.bounds(); - if let Some((split, axis)) = clicked_split { - self.state.pick_split(&split, axis); - } else { - self.click_pane( - layout, - cursor_position, - messages, - ); - } - } - None => { + if bounds.contains(cursor_position) { + event_status = event::Status::Captured; + + match self.on_resize { + Some((leeway, _)) => { + let relative_cursor = Point::new( + cursor_position.x - bounds.x, + cursor_position.y - bounds.y, + ); + + let splits = self.state.split_regions( + f32::from(self.spacing), + Size::new(bounds.width, bounds.height), + ); + + let clicked_split = hovered_split( + splits.iter(), + f32::from(self.spacing + leeway), + relative_cursor, + ); + + if let Some((split, axis)) = clicked_split { + self.state.pick_split(&split, axis); + } else { self.click_pane( layout, cursor_position, @@ -401,47 +394,51 @@ where ); } } + None => { + self.click_pane(layout, cursor_position, messages); + } } } - mouse::Event::ButtonReleased(mouse::Button::Left) => { - if let Some((pane, _)) = self.state.picked_pane() { - if let Some(on_drag) = &self.on_drag { - let mut dropped_region = self - .elements - .iter() - .zip(layout.children()) - .filter(|(_, layout)| { + } + Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) + | Event::Touch(touch::Event::FingerLifted{ .. }) + | Event::Touch(touch::Event::FingerLost{ .. }) => { + if let Some((pane, _)) = self.state.picked_pane() { + if let Some(on_drag) = &self.on_drag { + let mut dropped_region = + self.elements.iter().zip(layout.children()).filter( + |(_, layout)| { layout.bounds().contains(cursor_position) - }); - - let event = match dropped_region.next() { - Some(((target, _), _)) if pane != *target => { - DragEvent::Dropped { - pane, - target: *target, - } + }, + ); + + let event = match dropped_region.next() { + Some(((target, _), _)) if pane != *target => { + DragEvent::Dropped { + pane, + target: *target, } - _ => DragEvent::Canceled { pane }, - }; + } + _ => DragEvent::Canceled { pane }, + }; - messages.push(on_drag(event)); - } + messages.push(on_drag(event)); + } - self.state.idle(); + self.state.idle(); - event_status = event::Status::Captured; - } else if self.state.picked_split().is_some() { - self.state.idle(); + event_status = event::Status::Captured; + } else if self.state.picked_split().is_some() { + self.state.idle(); - event_status = event::Status::Captured; - } - } - mouse::Event::CursorMoved { .. } => { - event_status = - self.trigger_resize(layout, cursor_position, messages); + event_status = event::Status::Captured; } - _ => {} - }, + } + Event::Mouse(mouse::Event::CursorMoved { .. }) + | Event::Touch(touch::Event::FingerMoved{ .. }) => { + event_status = + self.trigger_resize(layout, cursor_position, messages); + } _ => {} } diff --git a/winit/src/application/state.rs b/winit/src/application/state.rs index 4629737008..82ab0710e4 100644 --- a/winit/src/application/state.rs +++ b/winit/src/application/state.rs @@ -139,6 +139,9 @@ impl State { self.cursor_position = winit::dpi::PhysicalPosition::new(-1.0, -1.0); } + WindowEvent::Touch(touch) => { + self.cursor_position = touch.location; + } WindowEvent::ModifiersChanged(new_modifiers) => { self.modifiers = *new_modifiers; } From f18e690306f4a4cb2283727b72b4dd4a95e11cd8 Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Sat, 5 Dec 2020 20:19:20 +0100 Subject: [PATCH 04/13] format glicthes fixes --- core/src/touch.rs | 2 +- core/src/touch/event.rs | 4 +--- core/src/touch/finger.rs | 2 +- core/src/touch/phase.rs | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/core/src/touch.rs b/core/src/touch.rs index 1fd1dc06d9..53ea53f509 100644 --- a/core/src/touch.rs +++ b/core/src/touch.rs @@ -5,4 +5,4 @@ mod phase; pub use event::Event; pub use finger::Finger; -pub use phase::Phase; \ No newline at end of file +pub use phase::Phase; diff --git a/core/src/touch/event.rs b/core/src/touch/event.rs index 213e9d3d5e..1b928607ee 100644 --- a/core/src/touch/event.rs +++ b/core/src/touch/event.rs @@ -1,6 +1,4 @@ -//! Build touch events. use crate::Point; - use super::{Phase, Finger}; /// A touch event. @@ -14,4 +12,4 @@ pub struct Event { /// The state of the touch. pub phase: Phase, -} \ No newline at end of file +} diff --git a/core/src/touch/finger.rs b/core/src/touch/finger.rs index 5ddb297082..6923db0ea0 100644 --- a/core/src/touch/finger.rs +++ b/core/src/touch/finger.rs @@ -1,4 +1,4 @@ /// A unique identifier representing a finger on a touch interaction. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Finger(pub u64); \ No newline at end of file +pub struct Finger(pub u64); diff --git a/core/src/touch/phase.rs b/core/src/touch/phase.rs index addabf636b..47d49806bd 100644 --- a/core/src/touch/phase.rs +++ b/core/src/touch/phase.rs @@ -12,4 +12,4 @@ pub enum Phase { /// A touch interaction was canceled. Canceled, -} \ No newline at end of file +} From 203bfb356b3e521e0dca3ae15650c3c8c0deba99 Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Sat, 5 Dec 2020 20:32:01 +0100 Subject: [PATCH 05/13] format glitches --- core/src/touch/event.rs | 2 +- core/src/touch/finger.rs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/touch/event.rs b/core/src/touch/event.rs index 1b928607ee..2e4aa893c2 100644 --- a/core/src/touch/event.rs +++ b/core/src/touch/event.rs @@ -1,5 +1,5 @@ use crate::Point; -use super::{Phase, Finger}; +use super::{Finger, Phase}; /// A touch event. #[derive(Debug, Clone, Copy, PartialEq)] diff --git a/core/src/touch/finger.rs b/core/src/touch/finger.rs index 6923db0ea0..05cc0aaea2 100644 --- a/core/src/touch/finger.rs +++ b/core/src/touch/finger.rs @@ -1,4 +1,3 @@ - /// A unique identifier representing a finger on a touch interaction. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Finger(pub u64); From 594d2f9b6223254bb12b07ef13b59b157aee3158 Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Sat, 5 Dec 2020 20:37:18 +0100 Subject: [PATCH 06/13] tight format --- core/src/touch/event.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/touch/event.rs b/core/src/touch/event.rs index 2e4aa893c2..fb8ded82df 100644 --- a/core/src/touch/event.rs +++ b/core/src/touch/event.rs @@ -1,5 +1,5 @@ -use crate::Point; use super::{Finger, Phase}; +use crate::Point; /// A touch event. #[derive(Debug, Clone, Copy, PartialEq)] From cf036c6dd9a53b222019a5cd722b9cb7515ca4d5 Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Sat, 5 Dec 2020 21:20:24 +0100 Subject: [PATCH 07/13] fixed pane grid --- graphics/src/widget/pane_grid.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/graphics/src/widget/pane_grid.rs b/graphics/src/widget/pane_grid.rs index 06aa971f25..f09984fc76 100644 --- a/graphics/src/widget/pane_grid.rs +++ b/graphics/src/widget/pane_grid.rs @@ -36,7 +36,6 @@ impl pane_grid::Renderer for Renderer where B: Backend + backend::Text, { - // TODO Touch bugs here fn draw( &mut self, defaults: &Self::Defaults, From 35719eca5d4703c3fcc2e8a07000ac59bb01d6b1 Mon Sep 17 00:00:00 2001 From: Aymeric Nunge Date: Wed, 10 Feb 2021 10:58:59 +0200 Subject: [PATCH 08/13] fixing with upstream --- native/src/overlay/menu.rs | 10 +++------- native/src/widget/pane_grid.rs | 8 ++++---- winit/src/conversion.rs | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index fbba9e2a3b..3a511dd898 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -349,19 +349,15 @@ where ); } } - Event::Touch(touch::Event { - position, - phase: touch::Phase::Started, - .. - }) => { + Event::Touch(touch::Event::FingerPressed { .. }) => { let bounds = layout.bounds(); - if bounds.contains(position) { + if bounds.contains(cursor_position) { let text_size = self.text_size.unwrap_or(renderer.default_size()); *self.hovered_option = Some( - ((position.y - bounds.y) + ((cursor_position.y - bounds.y) / f32::from(text_size + self.padding * 2)) as usize, ); diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 13c7b728bb..acd956b919 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -360,7 +360,7 @@ where match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) - | Event::Touch(touch::Event::FingerPressed{ .. }) => { + | Event::Touch(touch::Event::FingerPressed { .. }) => { let bounds = layout.bounds(); if bounds.contains(cursor_position) { @@ -401,8 +401,8 @@ where } } Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) - | Event::Touch(touch::Event::FingerLifted{ .. }) - | Event::Touch(touch::Event::FingerLost{ .. }) => { + | Event::Touch(touch::Event::FingerLifted { .. }) + | Event::Touch(touch::Event::FingerLost { .. }) => { if let Some((pane, _)) = self.state.picked_pane() { if let Some(on_drag) = &self.on_drag { let mut dropped_region = @@ -435,7 +435,7 @@ where } } Event::Mouse(mouse::Event::CursorMoved { .. }) - | Event::Touch(touch::Event::FingerMoved{ .. }) => { + | Event::Touch(touch::Event::FingerMoved { .. }) => { event_status = self.trigger_resize(layout, cursor_position, messages); } diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index b2a17c1467..f073c47469 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -19,7 +19,7 @@ pub fn window_event( match event { WindowEvent::Resized(new_size) => { let logical_size = new_size.to_logical(scale_factor); - + Some(Event::Window(window::Event::Resized { width: logical_size.width, height: logical_size.height, From 409caf3e45e58f3ff56f56859d32336e0451f316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Fri, 12 Feb 2021 20:31:36 +0100 Subject: [PATCH 09/13] Remove unused `touch` module from `iced_core` --- core/src/lib.rs | 1 - core/src/touch.rs | 8 -------- core/src/touch/event.rs | 15 --------------- core/src/touch/finger.rs | 3 --- core/src/touch/phase.rs | 15 --------------- 5 files changed, 42 deletions(-) delete mode 100644 core/src/touch.rs delete mode 100644 core/src/touch/event.rs delete mode 100644 core/src/touch/finger.rs delete mode 100644 core/src/touch/phase.rs diff --git a/core/src/lib.rs b/core/src/lib.rs index 6d203bb67d..f2d21a5fe7 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -16,7 +16,6 @@ #![forbid(rust_2018_idioms)] pub mod keyboard; pub mod mouse; -pub mod touch; mod align; mod background; diff --git a/core/src/touch.rs b/core/src/touch.rs deleted file mode 100644 index 53ea53f509..0000000000 --- a/core/src/touch.rs +++ /dev/null @@ -1,8 +0,0 @@ -//! Reuse basic touch types. -mod event; -mod finger; -mod phase; - -pub use event::Event; -pub use finger::Finger; -pub use phase::Phase; diff --git a/core/src/touch/event.rs b/core/src/touch/event.rs deleted file mode 100644 index fb8ded82df..0000000000 --- a/core/src/touch/event.rs +++ /dev/null @@ -1,15 +0,0 @@ -use super::{Finger, Phase}; -use crate::Point; - -/// A touch event. -#[derive(Debug, Clone, Copy, PartialEq)] -pub struct Event { - /// The finger of the touch. - pub finger: Finger, - - /// The position of the touch. - pub position: Point, - - /// The state of the touch. - pub phase: Phase, -} diff --git a/core/src/touch/finger.rs b/core/src/touch/finger.rs deleted file mode 100644 index 05cc0aaea2..0000000000 --- a/core/src/touch/finger.rs +++ /dev/null @@ -1,3 +0,0 @@ -/// A unique identifier representing a finger on a touch interaction. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Finger(pub u64); diff --git a/core/src/touch/phase.rs b/core/src/touch/phase.rs deleted file mode 100644 index 47d49806bd..0000000000 --- a/core/src/touch/phase.rs +++ /dev/null @@ -1,15 +0,0 @@ -/// The state of a touch interaction. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum Phase { - /// A touch interaction was started. - Started, - - /// An on-going touch interaction was moved. - Moved, - - /// A touch interaction was ended. - Ended, - - /// A touch interaction was canceled. - Canceled, -} From d1face084e438922e515652ae80ea3fafba9053f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Fri, 12 Feb 2021 20:32:21 +0100 Subject: [PATCH 10/13] Remove unused `crate::text` import in `iced_native` --- native/src/widget/pane_grid.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 1e1d8440b3..c6fe4b60bb 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -33,7 +33,6 @@ use crate::layout; use crate::mouse; use crate::overlay; use crate::row; -use crate::text; use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector, From 4edd3119859ea182253ef0eae19858907e83e9de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Fri, 12 Feb 2021 20:33:20 +0100 Subject: [PATCH 11/13] Remove redundant match branch in `iced_winit` --- winit/src/application/state.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/winit/src/application/state.rs b/winit/src/application/state.rs index 82ab0710e4..4629737008 100644 --- a/winit/src/application/state.rs +++ b/winit/src/application/state.rs @@ -139,9 +139,6 @@ impl State { self.cursor_position = winit::dpi::PhysicalPosition::new(-1.0, -1.0); } - WindowEvent::Touch(touch) => { - self.cursor_position = touch.location; - } WindowEvent::ModifiersChanged(new_modifiers) => { self.modifiers = *new_modifiers; } From 08d138b4b3c23e318c2f2ad432a1a144f70ee778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Fri, 12 Feb 2021 20:34:10 +0100 Subject: [PATCH 12/13] Keep removed line break in `UserInterface::update` --- native/src/user_interface.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index 0d26fb3a8e..7a64ac5925 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -206,6 +206,7 @@ where &mut overlay, renderer, ); + let event_statuses = events .iter() .cloned() From 00940006b9d22525e639f9cf907b947c8d672c08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Fri, 12 Feb 2021 20:36:06 +0100 Subject: [PATCH 13/13] Compute `text_size` only when bounds contains cursor in `overlay::menu` --- native/src/overlay/menu.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index 3a511dd898..5ad1391f95 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -338,10 +338,11 @@ where } Event::Mouse(mouse::Event::CursorMoved { .. }) => { let bounds = layout.bounds(); - let text_size = - self.text_size.unwrap_or(renderer.default_size()); if bounds.contains(cursor_position) { + let text_size = + self.text_size.unwrap_or(renderer.default_size()); + *self.hovered_option = Some( ((cursor_position.y - bounds.y) / f32::from(text_size + self.padding * 2))