[yew-devel] [PATCH yew-widget-toolkit v2] widget: dropdown: update picker placement after showing
Dominik Csapak
d.csapak at proxmox.com
Fri Dec 20 11:31:39 CET 2024
It seems that under certain circumstances (e.g. a dropdown in a dialog)
updating the position of the picker before it's opened (it's a
popover) does not work properly in safari/webkit/epiphany.
When trying to open such a dropdown, it (or some parts of it) would
be rendered with a height of 0px, even though the elements have
a height set explicitly.
To fix this, update the picker placement after opening it. What exactly
is the cause (e.g. if it's a browser bug or our css/aligning) is yet to
be determined.
This fixes an issue on webkit (tested with epiphany) that opening
dropdowns in a dialog did not show the dropdown properly.
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
src/widget/dropdown.rs | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/widget/dropdown.rs b/src/widget/dropdown.rs
index f9b49f1..a125bf6 100644
--- a/src/widget/dropdown.rs
+++ b/src/widget/dropdown.rs
@@ -510,12 +510,6 @@ impl Component for PwtDropdown {
}
}
- if let Some(placer) = &self.picker_placer {
- if let Err(err) = placer.update() {
- log::error!("error updating placement: {}", err.to_string());
- }
- }
-
if self.show != self.last_show {
self.last_show = self.show;
if let Some(popover_node) = self.picker_ref.get() {
@@ -533,6 +527,14 @@ impl Component for PwtDropdown {
}
}
}
+
+ // update picker placement after we opened/closed it
+ if let Some(placer) = &self.picker_placer {
+ if let Err(err) = placer.update() {
+ log::error!("error updating placement: {}", err.to_string());
+ }
+ }
+
self.focus_on_field = false;
}
}
--
2.39.5
More information about the yew-devel
mailing list