Fix viewport argument in PaneGrid draw calls

This commit is contained in:
Héctor Ramón Jiménez 2021-02-27 03:36:46 +01:00
parent a5fddf9ee6
commit f52f8c1337
5 changed files with 29 additions and 8 deletions

View File

@ -45,6 +45,7 @@ where
layout: Layout<'_>,
style_sheet: &<Self as pane_grid::Renderer>::Style,
cursor_position: Point,
viewport: &Rectangle,
) -> Self::Output {
let pane_cursor_position = if dragging.is_some() {
// TODO: Remove once cursor availability is encoded in the type
@ -62,8 +63,13 @@ where
.zip(layout.children())
.enumerate()
.map(|(i, ((id, pane), layout))| {
let (primitive, new_mouse_interaction) =
pane.draw(self, defaults, layout, pane_cursor_position);
let (primitive, new_mouse_interaction) = pane.draw(
self,
defaults,
layout,
pane_cursor_position,
viewport,
);
if new_mouse_interaction > mouse_interaction {
mouse_interaction = new_mouse_interaction;
@ -180,12 +186,13 @@ where
title_bar: Option<(&TitleBar<'_, Message, Self>, Layout<'_>)>,
body: (&Element<'_, Message, Self>, Layout<'_>),
cursor_position: Point,
viewport: &Rectangle,
) -> Self::Output {
let style = style_sheet.style();
let (body, body_layout) = body;
let (body_primitive, body_interaction) =
body.draw(self, defaults, body_layout, cursor_position, &bounds);
body.draw(self, defaults, body_layout, cursor_position, viewport);
let background = crate::widget::container::background(bounds, &style);
@ -199,6 +206,7 @@ where
defaults,
title_bar_layout,
cursor_position,
viewport,
show_controls,
);
@ -240,6 +248,7 @@ where
content: (&Element<'_, Message, Self>, Layout<'_>),
controls: Option<(&Element<'_, Message, Self>, Layout<'_>)>,
cursor_position: Point,
viewport: &Rectangle,
) -> Self::Output {
let style = style_sheet.style();
let (title_content, title_layout) = content;
@ -257,7 +266,7 @@ where
&defaults,
title_layout,
cursor_position,
&bounds,
viewport,
);
if let Some((controls, controls_layout)) = controls {
@ -266,7 +275,7 @@ where
&defaults,
controls_layout,
cursor_position,
&bounds,
viewport,
);
(

View File

@ -257,6 +257,7 @@ impl pane_grid::Renderer for Null {
_layout: Layout<'_>,
_style: &<Self as pane_grid::Renderer>::Style,
_cursor_position: Point,
_viewport: &Rectangle,
) {
}
@ -271,6 +272,7 @@ impl pane_grid::Renderer for Null {
)>,
_body: (&Element<'_, Message, Self>, Layout<'_>),
_cursor_position: Point,
_viewport: &Rectangle,
) {
}
@ -282,6 +284,7 @@ impl pane_grid::Renderer for Null {
_content: (&Element<'_, Message, Self>, Layout<'_>),
_controls: Option<(&Element<'_, Message, Self>, Layout<'_>)>,
_cursor_position: Point,
_viewport: &Rectangle,
) {
}
}

View File

@ -478,7 +478,7 @@ where
defaults: &Renderer::Defaults,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle,
viewport: &Rectangle,
) -> Renderer::Output {
let picked_split = self
.state
@ -537,6 +537,7 @@ where
layout,
&self.style,
cursor_position,
viewport,
)
}
@ -594,6 +595,7 @@ pub trait Renderer: crate::Renderer + container::Renderer + Sized {
layout: Layout<'_>,
style: &<Self as self::Renderer>::Style,
cursor_position: Point,
viewport: &Rectangle,
) -> Self::Output;
/// Draws a [`Pane`].
@ -611,6 +613,7 @@ pub trait Renderer: crate::Renderer + container::Renderer + Sized {
title_bar: Option<(&TitleBar<'_, Message, Self>, Layout<'_>)>,
body: (&Element<'_, Message, Self>, Layout<'_>),
cursor_position: Point,
viewport: &Rectangle,
) -> Self::Output;
/// Draws a [`TitleBar`].
@ -629,6 +632,7 @@ pub trait Renderer: crate::Renderer + container::Renderer + Sized {
content: (&Element<'_, Message, Self>, Layout<'_>),
controls: Option<(&Element<'_, Message, Self>, Layout<'_>)>,
cursor_position: Point,
viewport: &Rectangle,
) -> Self::Output;
}

View File

@ -3,7 +3,7 @@ use crate::event::{self, Event};
use crate::layout;
use crate::overlay;
use crate::pane_grid::{self, TitleBar};
use crate::{Clipboard, Element, Hasher, Layout, Point, Size};
use crate::{Clipboard, Element, Hasher, Layout, Point, Rectangle, Size};
/// The content of a [`Pane`].
///
@ -60,6 +60,7 @@ where
defaults: &Renderer::Defaults,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle,
) -> Renderer::Output {
if let Some(title_bar) = &self.title_bar {
let mut children = layout.children();
@ -73,6 +74,7 @@ where
Some((title_bar, title_bar_layout)),
(&self.body, body_layout),
cursor_position,
viewport,
)
} else {
renderer.draw_pane(
@ -82,6 +84,7 @@ where
None,
(&self.body, layout),
cursor_position,
viewport,
)
}
}

View File

@ -2,7 +2,7 @@ use crate::container;
use crate::event::{self, Event};
use crate::layout;
use crate::pane_grid;
use crate::{Clipboard, Element, Hasher, Layout, Point, Size};
use crate::{Clipboard, Element, Hasher, Layout, Point, Rectangle, Size};
/// The title bar of a [`Pane`].
///
@ -85,6 +85,7 @@ where
defaults: &Renderer::Defaults,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle,
show_controls: bool,
) -> Renderer::Output {
let mut children = layout.children();
@ -112,6 +113,7 @@ where
(&self.content, title_layout),
controls,
cursor_position,
viewport,
)
}