summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer/row.rs
diff options
context:
space:
mode:
Diffstat (limited to 'wgpu/src/renderer/row.rs')
-rw-r--r--wgpu/src/renderer/row.rs34
1 files changed, 23 insertions, 11 deletions
diff --git a/wgpu/src/renderer/row.rs b/wgpu/src/renderer/row.rs
index b6baf61f..bbfef9a1 100644
--- a/wgpu/src/renderer/row.rs
+++ b/wgpu/src/renderer/row.rs
@@ -1,5 +1,5 @@
use crate::{Primitive, Renderer};
-use iced_native::{row, Layout, Point, Row};
+use iced_native::{row, Layout, MouseCursor, Point, Row};
impl row::Renderer for Renderer {
fn draw<Message>(
@@ -8,15 +8,27 @@ impl row::Renderer for Renderer {
layout: Layout<'_>,
cursor_position: Point,
) -> Self::Output {
- Primitive::Group {
- primitives: row
- .children
- .iter()
- .zip(layout.children())
- .map(|(child, layout)| {
- child.draw(self, layout, cursor_position)
- })
- .collect(),
- }
+ let mut mouse_cursor = MouseCursor::OutOfBounds;
+
+ (
+ Primitive::Group {
+ primitives: row
+ .children
+ .iter()
+ .zip(layout.children())
+ .map(|(child, layout)| {
+ let (primitive, new_mouse_cursor) =
+ child.draw(self, layout, cursor_position);
+
+ if new_mouse_cursor > mouse_cursor {
+ mouse_cursor = new_mouse_cursor;
+ }
+
+ primitive
+ })
+ .collect(),
+ },
+ mouse_cursor,
+ )
}
}