Make Widget::on_event
return an event::Status
This commit is contained in:
parent
1db11ba69a
commit
3f968b8c87
@ -7,9 +7,11 @@
|
|||||||
//! [`Canvas`]: struct.Canvas.html
|
//! [`Canvas`]: struct.Canvas.html
|
||||||
//! [`Frame`]: struct.Frame.html
|
//! [`Frame`]: struct.Frame.html
|
||||||
use crate::{Backend, Defaults, Primitive, Renderer};
|
use crate::{Backend, Defaults, Primitive, Renderer};
|
||||||
|
use iced_native::layout;
|
||||||
|
use iced_native::mouse;
|
||||||
use iced_native::{
|
use iced_native::{
|
||||||
layout, mouse, Clipboard, Element, Hasher, Layout, Length, Point,
|
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector,
|
||||||
Rectangle, Size, Vector, Widget,
|
Widget,
|
||||||
};
|
};
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
@ -166,7 +168,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
_renderer: &Renderer<B>,
|
_renderer: &Renderer<B>,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
let bounds = layout.bounds();
|
let bounds = layout.bounds();
|
||||||
|
|
||||||
let canvas_event = match event {
|
let canvas_event = match event {
|
||||||
@ -188,6 +190,8 @@ where
|
|||||||
messages.push(message);
|
messages.push(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
use iced_native::keyboard;
|
use iced_native::keyboard;
|
||||||
use iced_native::mouse;
|
use iced_native::mouse;
|
||||||
|
|
||||||
|
pub use iced_native::event::Status;
|
||||||
|
|
||||||
/// A [`Canvas`] event.
|
/// A [`Canvas`] event.
|
||||||
///
|
///
|
||||||
/// [`Canvas`]: struct.Event.html
|
/// [`Canvas`]: struct.Event.html
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
use crate::event::{self, Event};
|
||||||
use crate::layout;
|
use crate::layout;
|
||||||
use crate::overlay;
|
use crate::overlay;
|
||||||
use crate::{
|
use crate::{
|
||||||
Clipboard, Color, Event, Hasher, Layout, Length, Point, Rectangle, Widget,
|
Clipboard, Color, Hasher, Layout, Length, Point, Rectangle, Widget,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A generic [`Widget`].
|
/// A generic [`Widget`].
|
||||||
@ -240,7 +241,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
self.widget.on_event(
|
self.widget.on_event(
|
||||||
event,
|
event,
|
||||||
layout,
|
layout,
|
||||||
@ -248,7 +249,7 @@ where
|
|||||||
messages,
|
messages,
|
||||||
renderer,
|
renderer,
|
||||||
clipboard,
|
clipboard,
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Draws the [`Element`] and its children using the given [`Layout`].
|
/// Draws the [`Element`] and its children using the given [`Layout`].
|
||||||
@ -335,10 +336,10 @@ where
|
|||||||
messages: &mut Vec<B>,
|
messages: &mut Vec<B>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
let mut original_messages = Vec::new();
|
let mut original_messages = Vec::new();
|
||||||
|
|
||||||
self.widget.on_event(
|
let status = self.widget.on_event(
|
||||||
event,
|
event,
|
||||||
layout,
|
layout,
|
||||||
cursor_position,
|
cursor_position,
|
||||||
@ -350,6 +351,8 @@ where
|
|||||||
original_messages
|
original_messages
|
||||||
.drain(..)
|
.drain(..)
|
||||||
.for_each(|message| messages.push((self.mapper)(message)));
|
.for_each(|message| messages.push((self.mapper)(message)));
|
||||||
|
|
||||||
|
status
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
@ -423,7 +426,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
self.element.widget.on_event(
|
self.element.widget.on_event(
|
||||||
event,
|
event,
|
||||||
layout,
|
layout,
|
||||||
|
@ -19,22 +19,19 @@ pub enum Event {
|
|||||||
Window(window::Event),
|
Window(window::Event),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The status of an [`Event`] after being processed by a [`UserInterface`].
|
/// The status of an [`Event`] after being processed.
|
||||||
///
|
///
|
||||||
/// [`Event`]: enum.Event.html
|
/// [`Event`]: enum.Event.html
|
||||||
/// [`UserInterface`]: ../struct.UserInterface.html
|
/// [`UserInterface`]: ../struct.UserInterface.html
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
pub enum Status {
|
pub enum Status {
|
||||||
/// The [`Event`] was _NOT_ handled by any widget in the [`UserInterface`].
|
/// The [`Event`] was _NOT_ handled by any widget.
|
||||||
///
|
///
|
||||||
/// [`Event`]: enum.Event.html
|
/// [`Event`]: enum.Event.html
|
||||||
/// [`UserInterface`]: ../struct.UserInterface.html
|
|
||||||
Ignored,
|
Ignored,
|
||||||
|
|
||||||
/// The [`Event`] was handled and processed by a widget in the
|
/// The [`Event`] was handled and processed by a widget.
|
||||||
/// [`UserInterface`].
|
|
||||||
///
|
///
|
||||||
/// [`Event`]: enum.Event.html
|
/// [`Event`]: enum.Event.html
|
||||||
/// [`UserInterface`]: ../struct.UserInterface.html
|
|
||||||
Captured,
|
Captured,
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,14 @@
|
|||||||
//! Build and show dropdown menus.
|
//! Build and show dropdown menus.
|
||||||
|
use crate::container;
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
|
use crate::overlay;
|
||||||
|
use crate::scrollable;
|
||||||
|
use crate::text;
|
||||||
use crate::{
|
use crate::{
|
||||||
container, layout, mouse, overlay, scrollable, text, Clipboard, Container,
|
Clipboard, Container, Element, Hasher, Layout, Length, Point, Rectangle,
|
||||||
Element, Event, Hasher, Layout, Length, Point, Rectangle, Scrollable, Size,
|
Scrollable, Size, Vector, Widget,
|
||||||
Vector, Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A list of selectable options.
|
/// A list of selectable options.
|
||||||
@ -236,7 +242,7 @@ where
|
|||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) {
|
||||||
self.container.on_event(
|
let _ = self.container.on_event(
|
||||||
event.clone(),
|
event.clone(),
|
||||||
layout,
|
layout,
|
||||||
cursor_position,
|
cursor_position,
|
||||||
@ -336,7 +342,7 @@ where
|
|||||||
_messages: &mut Vec<Message>,
|
_messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
match event {
|
match event {
|
||||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||||
let bounds = layout.bounds();
|
let bounds = layout.bounds();
|
||||||
@ -364,6 +370,8 @@ where
|
|||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -242,7 +242,7 @@ where
|
|||||||
};
|
};
|
||||||
|
|
||||||
for event in events {
|
for event in events {
|
||||||
self.root.widget.on_event(
|
let _ = self.root.widget.on_event(
|
||||||
event.clone(),
|
event.clone(),
|
||||||
Layout::new(&self.base.layout),
|
Layout::new(&self.base.layout),
|
||||||
base_cursor,
|
base_cursor,
|
||||||
|
@ -73,9 +73,10 @@ pub use text::Text;
|
|||||||
#[doc(no_inline)]
|
#[doc(no_inline)]
|
||||||
pub use text_input::TextInput;
|
pub use text_input::TextInput;
|
||||||
|
|
||||||
use crate::{
|
use crate::event::{self, Event};
|
||||||
layout, overlay, Clipboard, Event, Hasher, Layout, Length, Point, Rectangle,
|
use crate::layout;
|
||||||
};
|
use crate::overlay;
|
||||||
|
use crate::{Clipboard, Hasher, Layout, Length, Point, Rectangle};
|
||||||
|
|
||||||
/// A component that displays information and allows interaction.
|
/// A component that displays information and allows interaction.
|
||||||
///
|
///
|
||||||
@ -182,7 +183,8 @@ where
|
|||||||
_messages: &mut Vec<Message>,
|
_messages: &mut Vec<Message>,
|
||||||
_renderer: &Renderer,
|
_renderer: &Renderer,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the overlay of the [`Element`], if there is any.
|
/// Returns the overlay of the [`Element`], if there is any.
|
||||||
|
@ -4,9 +4,11 @@
|
|||||||
//!
|
//!
|
||||||
//! [`Button`]: struct.Button.html
|
//! [`Button`]: struct.Button.html
|
||||||
//! [`State`]: struct.State.html
|
//! [`State`]: struct.State.html
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
use crate::{
|
use crate::{
|
||||||
layout, mouse, Clipboard, Element, Event, Hasher, Layout, Length, Point,
|
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Widget,
|
||||||
Rectangle, Widget,
|
|
||||||
};
|
};
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
|
|
||||||
@ -184,7 +186,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
_renderer: &Renderer,
|
_renderer: &Renderer,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
match event {
|
match event {
|
||||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||||
if self.on_press.is_some() {
|
if self.on_press.is_some() {
|
||||||
@ -209,6 +211,8 @@ where
|
|||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
//! Show toggle controls using checkboxes.
|
//! Show toggle controls using checkboxes.
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
|
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
|
use crate::row;
|
||||||
|
use crate::text;
|
||||||
use crate::{
|
use crate::{
|
||||||
layout, mouse, row, text, Align, Clipboard, Element, Event, Hasher,
|
Align, Clipboard, Element, Hasher, HorizontalAlignment, Layout, Length,
|
||||||
HorizontalAlignment, Layout, Length, Point, Rectangle, Row, Text,
|
Point, Rectangle, Row, Text, VerticalAlignment, Widget,
|
||||||
VerticalAlignment, Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A box that can be checked.
|
/// A box that can be checked.
|
||||||
@ -161,7 +165,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
_renderer: &Renderer,
|
_renderer: &Renderer,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
match event {
|
match event {
|
||||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||||
let mouse_over = layout.bounds().contains(cursor_position);
|
let mouse_over = layout.bounds().contains(cursor_position);
|
||||||
@ -172,6 +176,8 @@ where
|
|||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
//! Distribute content vertically.
|
//! Distribute content vertically.
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
|
|
||||||
|
use crate::event::{self, Event};
|
||||||
use crate::layout;
|
use crate::layout;
|
||||||
use crate::overlay;
|
use crate::overlay;
|
||||||
use crate::{
|
use crate::{
|
||||||
Align, Clipboard, Element, Event, Hasher, Layout, Length, Point, Rectangle,
|
Align, Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Widget,
|
||||||
Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::u32;
|
use std::u32;
|
||||||
@ -162,19 +162,21 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
self.children.iter_mut().zip(layout.children()).for_each(
|
self.children.iter_mut().zip(layout.children()).for_each(
|
||||||
|(child, layout)| {
|
|(child, layout)| {
|
||||||
child.widget.on_event(
|
let _ = child.widget.on_event(
|
||||||
event.clone(),
|
event.clone(),
|
||||||
layout,
|
layout,
|
||||||
cursor_position,
|
cursor_position,
|
||||||
messages,
|
messages,
|
||||||
renderer,
|
renderer,
|
||||||
clipboard,
|
clipboard,
|
||||||
)
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
//! Decorate content and apply alignment.
|
//! Decorate content and apply alignment.
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
|
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::overlay;
|
||||||
use crate::{
|
use crate::{
|
||||||
layout, overlay, Align, Clipboard, Element, Event, Hasher, Layout, Length,
|
Align, Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Widget,
|
||||||
Point, Rectangle, Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::u32;
|
use std::u32;
|
||||||
@ -174,7 +176,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
self.content.widget.on_event(
|
self.content.widget.on_event(
|
||||||
event,
|
event,
|
||||||
layout.children().next().unwrap(),
|
layout.children().next().unwrap(),
|
||||||
|
@ -28,9 +28,16 @@ pub use split::Split;
|
|||||||
pub use state::{Focus, State};
|
pub use state::{Focus, State};
|
||||||
pub use title_bar::TitleBar;
|
pub use title_bar::TitleBar;
|
||||||
|
|
||||||
|
use crate::container;
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
|
use crate::overlay;
|
||||||
|
use crate::row;
|
||||||
|
use crate::text;
|
||||||
use crate::{
|
use crate::{
|
||||||
container, layout, mouse, overlay, row, text, Clipboard, Element, Event,
|
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector,
|
||||||
Hasher, Layout, Length, Point, Rectangle, Size, Vector, Widget,
|
Widget,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A collection of panes distributed using either vertical or horizontal splits
|
/// A collection of panes distributed using either vertical or horizontal splits
|
||||||
@ -386,7 +393,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
match event {
|
match event {
|
||||||
Event::Mouse(mouse_event) => match mouse_event {
|
Event::Mouse(mouse_event) => match mouse_event {
|
||||||
mouse::Event::ButtonPressed(mouse::Button::Left) => {
|
mouse::Event::ButtonPressed(mouse::Button::Left) => {
|
||||||
@ -484,6 +491,8 @@ where
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -172,7 +172,7 @@ where
|
|||||||
layout
|
layout
|
||||||
};
|
};
|
||||||
|
|
||||||
self.body.on_event(
|
let _ = self.body.on_event(
|
||||||
event,
|
event,
|
||||||
body_layout,
|
body_layout,
|
||||||
cursor_position,
|
cursor_position,
|
||||||
|
@ -254,7 +254,7 @@ where
|
|||||||
let _ = children.next();
|
let _ = children.next();
|
||||||
let controls_layout = children.next().unwrap();
|
let controls_layout = children.next().unwrap();
|
||||||
|
|
||||||
controls.on_event(
|
let _ = controls.on_event(
|
||||||
event,
|
event,
|
||||||
controls_layout,
|
controls_layout,
|
||||||
cursor_position,
|
cursor_position,
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
//! Display a dropdown list of selectable values.
|
//! Display a dropdown list of selectable values.
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
|
use crate::overlay;
|
||||||
|
use crate::overlay::menu::{self, Menu};
|
||||||
|
use crate::scrollable;
|
||||||
|
use crate::text;
|
||||||
use crate::{
|
use crate::{
|
||||||
layout, mouse, overlay,
|
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
|
||||||
overlay::menu::{self, Menu},
|
|
||||||
scrollable, text, Clipboard, Element, Event, Hasher, Layout, Length, Point,
|
|
||||||
Rectangle, Size, Widget,
|
|
||||||
};
|
};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
|
||||||
@ -223,7 +227,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
_renderer: &Renderer,
|
_renderer: &Renderer,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
match event {
|
match event {
|
||||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||||
if *self.is_open {
|
if *self.is_open {
|
||||||
@ -248,6 +252,8 @@ where
|
|||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
//! Create choices using radio buttons.
|
//! Create choices using radio buttons.
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
|
use crate::row;
|
||||||
|
use crate::text;
|
||||||
use crate::{
|
use crate::{
|
||||||
layout, mouse, row, text, Align, Clipboard, Element, Event, Hasher,
|
Align, Clipboard, Element, Hasher, HorizontalAlignment, Layout, Length,
|
||||||
HorizontalAlignment, Layout, Length, Point, Rectangle, Row, Text,
|
Point, Rectangle, Row, Text, VerticalAlignment, Widget,
|
||||||
VerticalAlignment, Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
@ -166,7 +170,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
_renderer: &Renderer,
|
_renderer: &Renderer,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
match event {
|
match event {
|
||||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||||
if layout.bounds().contains(cursor_position) {
|
if layout.bounds().contains(cursor_position) {
|
||||||
@ -175,6 +179,8 @@ where
|
|||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
//! Distribute content horizontally.
|
//! Distribute content horizontally.
|
||||||
|
use crate::event::{self, Event};
|
||||||
use crate::layout;
|
use crate::layout;
|
||||||
use crate::overlay;
|
use crate::overlay;
|
||||||
use crate::{
|
use crate::{
|
||||||
Align, Clipboard, Element, Event, Hasher, Layout, Length, Point, Rectangle,
|
Align, Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Widget,
|
||||||
Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
@ -162,19 +162,21 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
self.children.iter_mut().zip(layout.children()).for_each(
|
self.children.iter_mut().zip(layout.children()).for_each(
|
||||||
|(child, layout)| {
|
|(child, layout)| {
|
||||||
child.widget.on_event(
|
let _ = child.widget.on_event(
|
||||||
event.clone(),
|
event.clone(),
|
||||||
layout,
|
layout,
|
||||||
cursor_position,
|
cursor_position,
|
||||||
messages,
|
messages,
|
||||||
renderer,
|
renderer,
|
||||||
clipboard,
|
clipboard,
|
||||||
)
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
//! Navigate an endless amount of content with a scrollbar.
|
//! Navigate an endless amount of content with a scrollbar.
|
||||||
|
use crate::column;
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
|
use crate::overlay;
|
||||||
use crate::{
|
use crate::{
|
||||||
column, layout, mouse, overlay, Align, Clipboard, Column, Element, Event,
|
Align, Clipboard, Column, Element, Hasher, Layout, Length, Point,
|
||||||
Hasher, Layout, Length, Point, Rectangle, Size, Vector, Widget,
|
Rectangle, Size, Vector, Widget,
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::{f32, hash::Hash, u32};
|
use std::{f32, hash::Hash, u32};
|
||||||
@ -184,7 +189,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
let bounds = layout.bounds();
|
let bounds = layout.bounds();
|
||||||
let is_mouse_over = bounds.contains(cursor_position);
|
let is_mouse_over = bounds.contains(cursor_position);
|
||||||
|
|
||||||
|
@ -4,9 +4,11 @@
|
|||||||
//!
|
//!
|
||||||
//! [`Slider`]: struct.Slider.html
|
//! [`Slider`]: struct.Slider.html
|
||||||
//! [`State`]: struct.State.html
|
//! [`State`]: struct.State.html
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse;
|
||||||
use crate::{
|
use crate::{
|
||||||
layout, mouse, Clipboard, Element, Event, Hasher, Layout, Length, Point,
|
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
|
||||||
Rectangle, Size, Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::{hash::Hash, ops::RangeInclusive};
|
use std::{hash::Hash, ops::RangeInclusive};
|
||||||
@ -202,7 +204,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
_renderer: &Renderer,
|
_renderer: &Renderer,
|
||||||
_clipboard: Option<&dyn Clipboard>,
|
_clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
let mut change = || {
|
let mut change = || {
|
||||||
let bounds = layout.bounds();
|
let bounds = layout.bounds();
|
||||||
if cursor_position.x <= bounds.x {
|
if cursor_position.x <= bounds.x {
|
||||||
@ -251,6 +253,8 @@ where
|
|||||||
},
|
},
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
@ -14,11 +14,13 @@ pub use value::Value;
|
|||||||
|
|
||||||
use editor::Editor;
|
use editor::Editor;
|
||||||
|
|
||||||
|
use crate::event::{self, Event};
|
||||||
|
use crate::keyboard;
|
||||||
|
use crate::layout;
|
||||||
|
use crate::mouse::{self, click};
|
||||||
|
use crate::text;
|
||||||
use crate::{
|
use crate::{
|
||||||
keyboard, layout,
|
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
|
||||||
mouse::{self, click},
|
|
||||||
text, Clipboard, Element, Event, Hasher, Layout, Length, Point, Rectangle,
|
|
||||||
Size, Widget,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::u32;
|
use std::u32;
|
||||||
@ -218,7 +220,7 @@ where
|
|||||||
messages: &mut Vec<Message>,
|
messages: &mut Vec<Message>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
clipboard: Option<&dyn Clipboard>,
|
clipboard: Option<&dyn Clipboard>,
|
||||||
) {
|
) -> event::Status {
|
||||||
match event {
|
match event {
|
||||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||||
let is_clicked = layout.bounds().contains(cursor_position);
|
let is_clicked = layout.bounds().contains(cursor_position);
|
||||||
@ -489,6 +491,8 @@ where
|
|||||||
},
|
},
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event::Status::Ignored
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user