Always focus a panel when zooming it
This allows us to zoom a panel when clicking a button, even if the panel isn't currently focused.
This commit is contained in:
parent
a49189a704
commit
1707652643
2 changed files with 5 additions and 10 deletions
|
@ -384,13 +384,7 @@ impl AssistantPanel {
|
||||||
})
|
})
|
||||||
.with_cursor_style(CursorStyle::PointingHand)
|
.with_cursor_style(CursorStyle::PointingHand)
|
||||||
.on_click(MouseButton::Left, |_, this, cx| {
|
.on_click(MouseButton::Left, |_, this, cx| {
|
||||||
if this.zoomed {
|
this.toggle_zoom(&ToggleZoom, cx);
|
||||||
cx.emit(AssistantPanelEvent::ZoomOut)
|
|
||||||
} else {
|
|
||||||
this.has_focus = true; // Hack: Because focus_in is processed last, we need to set this here.
|
|
||||||
cx.focus_self();
|
|
||||||
cx.emit(AssistantPanelEvent::ZoomIn);
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -905,10 +905,11 @@ impl Workspace {
|
||||||
});
|
});
|
||||||
} else if T::should_zoom_in_on_event(event) {
|
} else if T::should_zoom_in_on_event(event) {
|
||||||
dock.update(cx, |dock, cx| dock.set_panel_zoomed(&panel, true, cx));
|
dock.update(cx, |dock, cx| dock.set_panel_zoomed(&panel, true, cx));
|
||||||
if panel.has_focus(cx) {
|
if !panel.has_focus(cx) {
|
||||||
this.zoomed = Some(panel.downgrade().into_any());
|
cx.focus(&panel);
|
||||||
this.zoomed_position = Some(panel.read(cx).position(cx));
|
|
||||||
}
|
}
|
||||||
|
this.zoomed = Some(panel.downgrade().into_any());
|
||||||
|
this.zoomed_position = Some(panel.read(cx).position(cx));
|
||||||
} else if T::should_zoom_out_on_event(event) {
|
} else if T::should_zoom_out_on_event(event) {
|
||||||
dock.update(cx, |dock, cx| dock.set_panel_zoomed(&panel, false, cx));
|
dock.update(cx, |dock, cx| dock.set_panel_zoomed(&panel, false, cx));
|
||||||
if this.zoomed_position == Some(prev_position) {
|
if this.zoomed_position == Some(prev_position) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue