summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--widget/src/button.rs2
-rw-r--r--widget/src/canvas.rs1
-rw-r--r--widget/src/checkbox.rs1
-rw-r--r--widget/src/column.rs2
-rw-r--r--widget/src/container.rs2
-rw-r--r--widget/src/image/viewer.rs1
-rw-r--r--widget/src/lazy.rs2
-rw-r--r--widget/src/lazy/component.rs2
-rw-r--r--widget/src/lazy/responsive.rs2
-rw-r--r--widget/src/mouse_area.rs2
-rw-r--r--widget/src/overlay/menu.rs4
-rw-r--r--widget/src/pane_grid.rs2
-rw-r--r--widget/src/pane_grid/content.rs3
-rw-r--r--widget/src/pane_grid/title_bar.rs3
-rw-r--r--widget/src/pick_list.rs1
-rw-r--r--widget/src/radio.rs1
-rw-r--r--widget/src/row.rs2
-rw-r--r--widget/src/scrollable.rs20
-rw-r--r--widget/src/slider.rs1
-rw-r--r--widget/src/text_input.rs1
-rw-r--r--widget/src/toggler.rs1
-rw-r--r--widget/src/tooltip.rs2
-rw-r--r--widget/src/vertical_slider.rs1
23 files changed, 57 insertions, 2 deletions
diff --git a/widget/src/button.rs b/widget/src/button.rs
index 8ebc9657..1312095f 100644
--- a/widget/src/button.rs
+++ b/widget/src/button.rs
@@ -200,6 +200,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
if let event::Status::Captured = self.content.as_widget_mut().on_event(
&mut tree.children[0],
@@ -209,6 +210,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
) {
return event::Status::Captured;
}
diff --git a/widget/src/canvas.rs b/widget/src/canvas.rs
index 96062038..1a186432 100644
--- a/widget/src/canvas.rs
+++ b/widget/src/canvas.rs
@@ -147,6 +147,7 @@ where
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
let bounds = layout.bounds();
diff --git a/widget/src/checkbox.rs b/widget/src/checkbox.rs
index aa0bff42..310a67ed 100644
--- a/widget/src/checkbox.rs
+++ b/widget/src/checkbox.rs
@@ -208,6 +208,7 @@ where
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
match event {
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left))
diff --git a/widget/src/column.rs b/widget/src/column.rs
index d92d794b..9271d5ef 100644
--- a/widget/src/column.rs
+++ b/widget/src/column.rs
@@ -170,6 +170,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
self.children
.iter_mut()
@@ -184,6 +185,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
})
.fold(event::Status::Ignored, event::Status::merge)
diff --git a/widget/src/container.rs b/widget/src/container.rs
index da9a31d6..64cf5cd5 100644
--- a/widget/src/container.rs
+++ b/widget/src/container.rs
@@ -200,6 +200,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
self.content.as_widget_mut().on_event(
&mut tree.children[0],
@@ -209,6 +210,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
}
diff --git a/widget/src/image/viewer.rs b/widget/src/image/viewer.rs
index 8040d6bd..0038f858 100644
--- a/widget/src/image/viewer.rs
+++ b/widget/src/image/viewer.rs
@@ -148,6 +148,7 @@ where
renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
_shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
let bounds = layout.bounds();
diff --git a/widget/src/lazy.rs b/widget/src/lazy.rs
index da287f06..761f45ad 100644
--- a/widget/src/lazy.rs
+++ b/widget/src/lazy.rs
@@ -186,6 +186,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
self.with_element_mut(|element| {
element.as_widget_mut().on_event(
@@ -196,6 +197,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
})
}
diff --git a/widget/src/lazy/component.rs b/widget/src/lazy/component.rs
index c7814966..bc0e23df 100644
--- a/widget/src/lazy/component.rs
+++ b/widget/src/lazy/component.rs
@@ -270,6 +270,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
let mut local_messages = Vec::new();
let mut local_shell = Shell::new(&mut local_messages);
@@ -284,6 +285,7 @@ where
renderer,
clipboard,
&mut local_shell,
+ viewport,
)
});
diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs
index 07300857..b56545c8 100644
--- a/widget/src/lazy/responsive.rs
+++ b/widget/src/lazy/responsive.rs
@@ -182,6 +182,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
let state = tree.state.downcast_mut::<State>();
let mut content = self.content.borrow_mut();
@@ -203,6 +204,7 @@ where
renderer,
clipboard,
&mut local_shell,
+ viewport,
)
},
);
diff --git a/widget/src/mouse_area.rs b/widget/src/mouse_area.rs
index da7dc88f..490f7c48 100644
--- a/widget/src/mouse_area.rs
+++ b/widget/src/mouse_area.rs
@@ -150,6 +150,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
if let event::Status::Captured = self.content.as_widget_mut().on_event(
&mut tree.children[0],
@@ -159,6 +160,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
) {
return event::Status::Captured;
}
diff --git a/widget/src/overlay/menu.rs b/widget/src/overlay/menu.rs
index ccf4dfb5..72662422 100644
--- a/widget/src/overlay/menu.rs
+++ b/widget/src/overlay/menu.rs
@@ -268,8 +268,11 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
) -> event::Status {
+ let bounds = layout.bounds();
+
self.container.on_event(
self.state, event, layout, cursor, renderer, clipboard, shell,
+ &bounds,
)
}
@@ -377,6 +380,7 @@ where
renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
match event {
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
diff --git a/widget/src/pane_grid.rs b/widget/src/pane_grid.rs
index 31bb0e86..4f6dfbe8 100644
--- a/widget/src/pane_grid.rs
+++ b/widget/src/pane_grid.rs
@@ -317,6 +317,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
let action = tree.state.downcast_mut::<state::Action>();
@@ -357,6 +358,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
is_picked,
)
})
diff --git a/widget/src/pane_grid/content.rs b/widget/src/pane_grid/content.rs
index c28ae6e3..e890e41a 100644
--- a/widget/src/pane_grid/content.rs
+++ b/widget/src/pane_grid/content.rs
@@ -222,6 +222,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
is_picked: bool,
) -> event::Status {
let mut event_status = event::Status::Ignored;
@@ -237,6 +238,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
);
children.next().unwrap()
@@ -255,6 +257,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
};
diff --git a/widget/src/pane_grid/title_bar.rs b/widget/src/pane_grid/title_bar.rs
index 2fe79f80..cac24e68 100644
--- a/widget/src/pane_grid/title_bar.rs
+++ b/widget/src/pane_grid/title_bar.rs
@@ -304,6 +304,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
let mut children = layout.children();
let padded = children.next().unwrap();
@@ -328,6 +329,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
} else {
event::Status::Ignored
@@ -342,6 +344,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
} else {
event::Status::Ignored
diff --git a/widget/src/pick_list.rs b/widget/src/pick_list.rs
index 832aae6b..d99ada10 100644
--- a/widget/src/pick_list.rs
+++ b/widget/src/pick_list.rs
@@ -200,6 +200,7 @@ where
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
update(
event,
diff --git a/widget/src/radio.rs b/widget/src/radio.rs
index 5b883147..65d71ec2 100644
--- a/widget/src/radio.rs
+++ b/widget/src/radio.rs
@@ -233,6 +233,7 @@ where
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
match event {
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left))
diff --git a/widget/src/row.rs b/widget/src/row.rs
index 1db22416..7baaaae3 100644
--- a/widget/src/row.rs
+++ b/widget/src/row.rs
@@ -159,6 +159,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
self.children
.iter_mut()
@@ -173,6 +174,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
})
.fold(event::Status::Ignored, event::Status::merge)
diff --git a/widget/src/scrollable.rs b/widget/src/scrollable.rs
index e0aeeebd..f621fb26 100644
--- a/widget/src/scrollable.rs
+++ b/widget/src/scrollable.rs
@@ -278,6 +278,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
update(
tree.state.downcast_mut::<State>(),
@@ -288,7 +289,7 @@ where
shell,
self.direction,
&self.on_scroll,
- |event, layout, cursor, clipboard, shell| {
+ |event, layout, cursor, clipboard, shell, viewport| {
self.content.as_widget_mut().on_event(
&mut tree.children[0],
event,
@@ -297,6 +298,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
},
)
@@ -492,6 +494,7 @@ pub fn update<Message>(
mouse::Cursor,
&mut dyn Clipboard,
&mut Shell<'_, Message>,
+ &Rectangle,
) -> event::Status,
) -> event::Status {
let bounds = layout.bounds();
@@ -518,7 +521,20 @@ pub fn update<Message>(
_ => mouse::Cursor::Unavailable,
};
- update_content(event.clone(), content, cursor, clipboard, shell)
+ let translation = state.translation(direction, bounds, content_bounds);
+
+ update_content(
+ event.clone(),
+ content,
+ cursor,
+ clipboard,
+ shell,
+ &Rectangle {
+ y: bounds.y + translation.y,
+ x: bounds.x + translation.x,
+ ..bounds
+ },
+ )
};
if let event::Status::Captured = event_status {
diff --git a/widget/src/slider.rs b/widget/src/slider.rs
index 3ea4391b..e41be7c9 100644
--- a/widget/src/slider.rs
+++ b/widget/src/slider.rs
@@ -187,6 +187,7 @@ where
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
update(
event,
diff --git a/widget/src/text_input.rs b/widget/src/text_input.rs
index a335afbc..9958cbcc 100644
--- a/widget/src/text_input.rs
+++ b/widget/src/text_input.rs
@@ -302,6 +302,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
update(
event,
diff --git a/widget/src/toggler.rs b/widget/src/toggler.rs
index 1b31765f..c8187181 100644
--- a/widget/src/toggler.rs
+++ b/widget/src/toggler.rs
@@ -207,6 +207,7 @@ where
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
match event {
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left))
diff --git a/widget/src/tooltip.rs b/widget/src/tooltip.rs
index 2dc3da01..ff7f960f 100644
--- a/widget/src/tooltip.rs
+++ b/widget/src/tooltip.rs
@@ -147,6 +147,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ viewport: &Rectangle,
) -> event::Status {
let state = tree.state.downcast_mut::<State>();
@@ -163,6 +164,7 @@ where
renderer,
clipboard,
shell,
+ viewport,
)
}
diff --git a/widget/src/vertical_slider.rs b/widget/src/vertical_slider.rs
index 91f2b466..efca302a 100644
--- a/widget/src/vertical_slider.rs
+++ b/widget/src/vertical_slider.rs
@@ -184,6 +184,7 @@ where
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
+ _viewport: &Rectangle,
) -> event::Status {
update(
event,