mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-27 19:02:07 +00:00
💄
This commit is contained in:
parent
20e38d2def
commit
6cbc1dcd87
2 changed files with 40 additions and 22 deletions
|
@ -67,9 +67,17 @@ impl View for ToggleDockButton {
|
|||
}
|
||||
})
|
||||
.with_cursor_style(CursorStyle::PointingHand)
|
||||
.on_up(MouseButton::Left, move |event, _, cx| {
|
||||
.on_up(MouseButton::Left, move |event, this, cx| {
|
||||
let drop_index = dock_pane.read(cx).items_len() + 1;
|
||||
handle_dropped_item(event, &dock_pane.downgrade(), drop_index, false, None, cx);
|
||||
handle_dropped_item(
|
||||
event,
|
||||
this.workspace.clone(),
|
||||
&dock_pane.downgrade(),
|
||||
drop_index,
|
||||
false,
|
||||
None,
|
||||
cx,
|
||||
);
|
||||
});
|
||||
|
||||
if dock_position.is_visible() {
|
||||
|
|
|
@ -69,9 +69,18 @@ where
|
|||
}))
|
||||
})
|
||||
.on_up(MouseButton::Left, {
|
||||
move |event, _, cx| {
|
||||
move |event, pane, cx| {
|
||||
let workspace = pane.workspace.clone();
|
||||
let pane = cx.weak_handle();
|
||||
handle_dropped_item(event, &pane, drop_index, allow_same_pane, split_margin, cx);
|
||||
handle_dropped_item(
|
||||
event,
|
||||
workspace,
|
||||
&pane,
|
||||
drop_index,
|
||||
allow_same_pane,
|
||||
split_margin,
|
||||
cx,
|
||||
);
|
||||
cx.notify();
|
||||
}
|
||||
})
|
||||
|
@ -94,6 +103,7 @@ where
|
|||
|
||||
pub fn handle_dropped_item<V: View>(
|
||||
event: MouseUp,
|
||||
workspace: WeakViewHandle<Workspace>,
|
||||
pane: &WeakViewHandle<Pane>,
|
||||
index: usize,
|
||||
allow_same_pane: bool,
|
||||
|
@ -141,12 +151,14 @@ pub fn handle_dropped_item<V: View>(
|
|||
if pane != &from || allow_same_pane {
|
||||
let pane = pane.clone();
|
||||
cx.window_context().defer(move |cx| {
|
||||
if let Some((from, to)) = from.upgrade(cx).zip(pane.upgrade(cx)) {
|
||||
if let Some(workspace) = from.read(cx).workspace.upgrade(cx) {
|
||||
workspace.update(cx, |workspace, cx| {
|
||||
Pane::move_item(workspace, from, to, item_id, index, cx);
|
||||
})
|
||||
}
|
||||
if let Some(((workspace, from), to)) = workspace
|
||||
.upgrade(cx)
|
||||
.zip(from.upgrade(cx))
|
||||
.zip(pane.upgrade(cx))
|
||||
{
|
||||
workspace.update(cx, |workspace, cx| {
|
||||
Pane::move_item(workspace, from, to, item_id, index, cx);
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -156,18 +168,16 @@ pub fn handle_dropped_item<V: View>(
|
|||
Action::Open(project_entry) => {
|
||||
let pane = pane.clone();
|
||||
cx.window_context().defer(move |cx| {
|
||||
if let Some(pane) = pane.upgrade(cx) {
|
||||
if let Some(workspace) = pane.read(cx).workspace.upgrade(cx) {
|
||||
workspace.update(cx, |workspace, cx| {
|
||||
if let Some(path) =
|
||||
workspace.project.read(cx).path_for_entry(project_entry, cx)
|
||||
{
|
||||
workspace
|
||||
.open_path(path, Some(pane.downgrade()), true, cx)
|
||||
.detach_and_log_err(cx);
|
||||
}
|
||||
});
|
||||
}
|
||||
if let Some(workspace) = workspace.upgrade(cx) {
|
||||
workspace.update(cx, |workspace, cx| {
|
||||
if let Some(path) =
|
||||
workspace.project.read(cx).path_for_entry(project_entry, cx)
|
||||
{
|
||||
workspace
|
||||
.open_path(path, Some(pane), true, cx)
|
||||
.detach_and_log_err(cx);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue