Skip to content

Commit 8ccb225

Browse files
authored
Merge pull request #2123 from luca020400/luca/context_menu_overflow
2 parents d64e83d + f6d1a66 commit 8ccb225

2 files changed

Lines changed: 17 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Fixed:
2323
- Prevent anti-flood rate limiting from refilling the token bucket beyond its configured capacity
2424
- Show unread indicators for panes hidden by maximize
2525
- Allow commands (e.g. `/join`) to be used in the input box of not-joined channels
26+
- Disabled menu entries now block clicks from passing through
2627

2728
Changed:
2829

src/widget/context_menu.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -359,9 +359,12 @@ where
359359
) -> mouse::Interaction {
360360
if cursor.is_over(layout.bounds()) {
361361
self.mouse_interaction_on_hover.unwrap_or({
362-
let base_state = tree.children.first().unwrap();
363362
self.base.as_widget().mouse_interaction(
364-
base_state, layout, cursor, viewport, renderer,
363+
&tree.children[0],
364+
layout,
365+
cursor,
366+
viewport,
367+
renderer,
365368
)
366369
})
367370
} else {
@@ -377,9 +380,8 @@ where
377380
viewport: &Rectangle,
378381
translation: Vector,
379382
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
380-
let base_state = tree.children.first_mut().unwrap();
381383
let base = self.base.as_widget_mut().overlay(
382-
base_state,
384+
&mut tree.children[0],
383385
layout,
384386
renderer,
385387
viewport,
@@ -668,13 +670,21 @@ where
668670
cursor: mouse::Cursor,
669671
renderer: &Renderer,
670672
) -> iced::advanced::mouse::Interaction {
671-
self.menu.as_widget().mouse_interaction(
673+
let interaction = self.menu.as_widget().mouse_interaction(
672674
&self.state.menu_tree,
673675
layout,
674676
cursor,
675677
&layout.bounds(),
676678
renderer,
677-
)
679+
);
680+
681+
if interaction == mouse::Interaction::None
682+
&& cursor.is_over(layout.bounds())
683+
{
684+
mouse::Interaction::Idle
685+
} else {
686+
interaction
687+
}
678688
}
679689
}
680690

0 commit comments

Comments
 (0)