summaryrefslogtreecommitdiffstats
path: root/pure/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-07-08 19:31:45 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-07-08 19:31:45 +0200
commitfa55dff61db47197a961152285c6a6abfab0b217 (patch)
tree44904afb16a0cab9e22fce0d73a5616676cd426b /pure/src
parent1dd1a2f97fc747e15e12b5188dad6c41b0d052ea (diff)
parent66eb6263003c1bbedd1fd14d6b12f172d20a6211 (diff)
downloadiced-fa55dff61db47197a961152285c6a6abfab0b217.tar.gz
iced-fa55dff61db47197a961152285c6a6abfab0b217.tar.bz2
iced-fa55dff61db47197a961152285c6a6abfab0b217.zip
Merge branch 'master' into theming
Diffstat (limited to 'pure/src')
-rw-r--r--pure/src/widget/pane_grid/title_bar.rs80
-rw-r--r--pure/src/widget/text_input.rs28
2 files changed, 79 insertions, 29 deletions
diff --git a/pure/src/widget/pane_grid/title_bar.rs b/pure/src/widget/pane_grid/title_bar.rs
index 950fd990..de9591a2 100644
--- a/pure/src/widget/pane_grid/title_bar.rs
+++ b/pure/src/widget/pane_grid/title_bar.rs
@@ -141,19 +141,15 @@ where
let mut children = padded.children();
let title_layout = children.next().unwrap();
-
- self.content.as_widget().draw(
- &tree.children[0],
- renderer,
- theme,
- &inherited_style,
- title_layout,
- cursor_position,
- viewport,
- );
+ let mut show_title = true;
if let Some(controls) = &self.controls {
let controls_layout = children.next().unwrap();
+ if title_layout.bounds().width + controls_layout.bounds().width
+ > padded.bounds().width
+ {
+ show_title = false;
+ }
if show_controls || self.always_show_controls {
controls.as_widget().draw(
@@ -167,6 +163,18 @@ where
);
}
}
+
+ if show_title {
+ self.content.as_widget().draw(
+ &tree.children[0],
+ renderer,
+ theme,
+ &inherited_style,
+ title_layout,
+ cursor_position,
+ viewport,
+ );
+ }
}
/// Returns whether the mouse cursor is over the pick area of the
@@ -258,9 +266,15 @@ where
let mut children = padded.children();
let title_layout = children.next().unwrap();
+ let mut show_title = true;
let control_status = if let Some(controls) = &mut self.controls {
let controls_layout = children.next().unwrap();
+ if title_layout.bounds().width + controls_layout.bounds().width
+ > padded.bounds().width
+ {
+ show_title = false;
+ }
controls.as_widget_mut().on_event(
&mut tree.children[1],
@@ -275,15 +289,19 @@ where
event::Status::Ignored
};
- let title_status = self.content.as_widget_mut().on_event(
- &mut tree.children[0],
- event,
- title_layout,
- cursor_position,
- renderer,
- clipboard,
- shell,
- );
+ let title_status = if show_title {
+ self.content.as_widget_mut().on_event(
+ &mut tree.children[0],
+ event,
+ title_layout,
+ cursor_position,
+ renderer,
+ clipboard,
+ shell,
+ )
+ } else {
+ event::Status::Ignored
+ };
control_status.merge(title_status)
}
@@ -312,17 +330,21 @@ where
if let Some(controls) = &self.controls {
let controls_layout = children.next().unwrap();
+ let controls_interaction = controls.as_widget().mouse_interaction(
+ &tree.children[1],
+ controls_layout,
+ cursor_position,
+ viewport,
+ renderer,
+ );
- controls
- .as_widget()
- .mouse_interaction(
- &tree.children[1],
- controls_layout,
- cursor_position,
- viewport,
- renderer,
- )
- .max(title_interaction)
+ if title_layout.bounds().width + controls_layout.bounds().width
+ > padded.bounds().width
+ {
+ controls_interaction
+ } else {
+ controls_interaction.max(title_interaction)
+ }
} else {
title_interaction
}
diff --git a/pure/src/widget/text_input.rs b/pure/src/widget/text_input.rs
index d3e642a5..9b0a466a 100644
--- a/pure/src/widget/text_input.rs
+++ b/pure/src/widget/text_input.rs
@@ -126,6 +126,34 @@ where
self.style = style.into();
self
}
+
+ /// Draws the [`TextInput`] with the given [`Renderer`], overriding its
+ /// [`text_input::Value`] if provided.
+ ///
+ /// [`Renderer`]: text::Renderer
+ pub fn draw(
+ &self,
+ tree: &Tree,
+ renderer: &mut Renderer,
+ theme: &Renderer::Theme,
+ layout: Layout<'_>,
+ cursor_position: Point,
+ value: Option<&text_input::Value>,
+ ) {
+ text_input::draw(
+ renderer,
+ theme,
+ layout,
+ cursor_position,
+ tree.state.downcast_ref::<text_input::State>(),
+ value.unwrap_or(&self.value),
+ &self.placeholder,
+ self.size,
+ &self.font,
+ self.is_secure,
+ self.style,
+ )
+ }
}
impl<'a, Message, Renderer> Widget<Message, Renderer>