fix(button): Closing tab with middle-click
Only close on middle button release if the middle button press event was on the same tab.
This commit is contained in:
parent
3e0a480d42
commit
bfbff0773a
1 changed files with 16 additions and 2 deletions
|
|
@ -583,6 +583,7 @@ where
|
||||||
focused_item: Default::default(),
|
focused_item: Default::default(),
|
||||||
hovered: Default::default(),
|
hovered: Default::default(),
|
||||||
known_length: Default::default(),
|
known_length: Default::default(),
|
||||||
|
middle_clicked: Default::default(),
|
||||||
internal_layout: Default::default(),
|
internal_layout: Default::default(),
|
||||||
context_cursor: Point::default(),
|
context_cursor: Point::default(),
|
||||||
show_context: Default::default(),
|
show_context: Default::default(),
|
||||||
|
|
@ -877,13 +878,24 @@ where
|
||||||
return event::Status::Captured;
|
return event::Status::Captured;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Event::Mouse(mouse::Event::ButtonPressed(
|
||||||
|
mouse::Button::Middle,
|
||||||
|
)) = event
|
||||||
|
{
|
||||||
|
state.middle_clicked = Some(Item::Tab(key));
|
||||||
|
}
|
||||||
|
|
||||||
// Emit close message if the tab is middle clicked.
|
// Emit close message if the tab is middle clicked.
|
||||||
if let Event::Mouse(mouse::Event::ButtonReleased(
|
if let Event::Mouse(mouse::Event::ButtonReleased(
|
||||||
mouse::Button::Middle,
|
mouse::Button::Middle,
|
||||||
)) = event
|
)) = event
|
||||||
{
|
{
|
||||||
shell.publish(on_close(key));
|
if state.middle_clicked == Some(Item::Tab(key)) {
|
||||||
return event::Status::Captured;
|
shell.publish(on_close(key));
|
||||||
|
return event::Status::Captured;
|
||||||
|
}
|
||||||
|
|
||||||
|
state.middle_clicked = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1601,6 +1613,8 @@ pub struct LocalState {
|
||||||
focused_item: Item,
|
focused_item: Item,
|
||||||
/// The ID of the button that is being hovered. Defaults to null.
|
/// The ID of the button that is being hovered. Defaults to null.
|
||||||
hovered: Item,
|
hovered: Item,
|
||||||
|
/// The ID of the button that was middle-clicked, but not yet released.
|
||||||
|
middle_clicked: Option<Item>,
|
||||||
/// Last known length of the model.
|
/// Last known length of the model.
|
||||||
pub(super) known_length: usize,
|
pub(super) known_length: usize,
|
||||||
/// Dimensions of internal buttons when shrinking
|
/// Dimensions of internal buttons when shrinking
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue