Use a MouseEventHandler
for activating tabs on mouse down
Previously, we were using an `EventHandler` which doesn't take into account other mouse regions floating above the rendered element. This was problematic because, when clicking the `x` icon on a tab that was not active, we were first activating it and then closing it.
This commit is contained in:
parent
98de269b4a
commit
82d6e606fc
1 changed files with 5 additions and 5 deletions
|
@ -689,6 +689,7 @@ impl Pane {
|
||||||
let theme = cx.global::<Settings>().theme.clone();
|
let theme = cx.global::<Settings>().theme.clone();
|
||||||
|
|
||||||
enum Tabs {}
|
enum Tabs {}
|
||||||
|
enum Tab {}
|
||||||
let pane = cx.handle();
|
let pane = cx.handle();
|
||||||
let tabs = MouseEventHandler::new::<Tabs, _, _>(0, cx, |mouse_state, cx| {
|
let tabs = MouseEventHandler::new::<Tabs, _, _>(0, cx, |mouse_state, cx| {
|
||||||
let autoscroll = if mem::take(&mut self.autoscroll) {
|
let autoscroll = if mem::take(&mut self.autoscroll) {
|
||||||
|
@ -717,7 +718,7 @@ impl Pane {
|
||||||
style.container.border.left = false;
|
style.container.border.left = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
EventHandler::new(
|
MouseEventHandler::new::<Tab, _, _>(ix, cx, |_, cx| {
|
||||||
Container::new(
|
Container::new(
|
||||||
Flex::row()
|
Flex::row()
|
||||||
.with_child(
|
.with_child(
|
||||||
|
@ -807,11 +808,10 @@ impl Pane {
|
||||||
.boxed(),
|
.boxed(),
|
||||||
)
|
)
|
||||||
.with_style(style.container)
|
.with_style(style.container)
|
||||||
.boxed(),
|
.boxed()
|
||||||
)
|
})
|
||||||
.on_mouse_down(move |cx| {
|
.on_mouse_down(move |_, cx| {
|
||||||
cx.dispatch_action(ActivateItem(ix));
|
cx.dispatch_action(ActivateItem(ix));
|
||||||
true
|
|
||||||
})
|
})
|
||||||
.boxed()
|
.boxed()
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue