Fix panel button context menu overlap with tooltip hint (#30108)

This fix works by disabling the tooltip whenever the menu is being
rendered.

### Before

![image](https://github.com/user-attachments/assets/0b275931-fd1f-4748-88dd-cb76a52f8810)
### After

![image](https://github.com/user-attachments/assets/7260eb48-3a24-43ee-8df7-b6c48e8a4024)


Release Notes:

- Fix panel button tooltip overlapping with the panel button's right
click menu
This commit is contained in:
Anthony Eid 2025-05-07 14:33:13 +02:00 committed by GitHub
parent 02765947e0
commit 7bc3f74cab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 239 additions and 229 deletions

View file

@ -21,8 +21,14 @@ impl<M: ManagedView> RightClickMenu<M> {
self
}
pub fn trigger<E: IntoElement + 'static>(mut self, e: E) -> Self {
self.child_builder = Some(Box::new(move |_| e.into_any_element()));
pub fn trigger<F, E>(mut self, e: F) -> Self
where
F: FnOnce(bool) -> E + 'static,
E: IntoElement + 'static,
{
self.child_builder = Some(Box::new(move |is_menu_active| {
e(is_menu_active).into_any_element()
}));
self
}

View file

@ -47,12 +47,12 @@ impl Render for ContextMenuStory {
.justify_between()
.child(
right_click_menu("test2")
.trigger(Label::new("TOP LEFT"))
.trigger(|_| Label::new("TOP LEFT"))
.menu(move |window, cx| build_menu(window, cx, "top left")),
)
.child(
right_click_menu("test1")
.trigger(Label::new("BOTTOM LEFT"))
.trigger(|_| Label::new("BOTTOM LEFT"))
.anchor(Corner::BottomLeft)
.attach(Corner::TopLeft)
.menu(move |window, cx| build_menu(window, cx, "bottom left")),
@ -65,13 +65,13 @@ impl Render for ContextMenuStory {
.justify_between()
.child(
right_click_menu("test3")
.trigger(Label::new("TOP RIGHT"))
.trigger(|_| Label::new("TOP RIGHT"))
.anchor(Corner::TopRight)
.menu(move |window, cx| build_menu(window, cx, "top right")),
)
.child(
right_click_menu("test4")
.trigger(Label::new("BOTTOM RIGHT"))
.trigger(|_| Label::new("BOTTOM RIGHT"))
.anchor(Corner::BottomRight)
.attach(Corner::TopRight)
.menu(move |window, cx| build_menu(window, cx, "bottom right")),