summaryrefslogtreecommitdiffstats
path: root/widget/src/pick_list.rs
diff options
context:
space:
mode:
Diffstat (limited to 'widget/src/pick_list.rs')
-rw-r--r--widget/src/pick_list.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/widget/src/pick_list.rs b/widget/src/pick_list.rs
index 32f859da..6708e7cd 100644
--- a/widget/src/pick_list.rs
+++ b/widget/src/pick_list.rs
@@ -518,12 +518,16 @@ where
_ => {}
};
- let status = if state.is_open {
- Status::Opened
- } else if cursor.is_over(layout.bounds()) {
- Status::Hovered
- } else {
- Status::Active
+ let status = {
+ let is_hovered = cursor.is_over(layout.bounds());
+
+ if state.is_open {
+ Status::Opened { is_hovered }
+ } else if is_hovered {
+ Status::Hovered
+ } else {
+ Status::Active
+ }
};
if let Event::Window(window::Event::RedrawRequested(_now)) = event {
@@ -824,7 +828,10 @@ pub enum Status {
/// The [`PickList`] is being hovered.
Hovered,
/// The [`PickList`] is open.
- Opened,
+ Opened {
+ /// Whether the [`PickList`] is hovered, while open.
+ is_hovered: bool,
+ },
}
/// The appearance of a pick list.
@@ -898,7 +905,7 @@ pub fn default(theme: &Theme, status: Status) -> Style {
match status {
Status::Active => active,
- Status::Hovered | Status::Opened => Style {
+ Status::Hovered | Status::Opened { .. } => Style {
border: Border {
color: palette.primary.strong.color,
..active.border