mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-17 15:53:13 +00:00
Re-enable navigation with mouse navigation buttons
This commit is contained in:
parent
5e3d0a6d03
commit
a283cbaf8f
1 changed files with 170 additions and 179 deletions
|
@ -9,8 +9,8 @@ use collections::{HashMap, HashSet, VecDeque};
|
||||||
use gpui::{
|
use gpui::{
|
||||||
actions, overlay, prelude::*, rems, Action, AnchorCorner, AnyWeakView, AppContext,
|
actions, overlay, prelude::*, rems, Action, AnchorCorner, AnyWeakView, AppContext,
|
||||||
AsyncWindowContext, DismissEvent, Div, EntityId, EventEmitter, FocusHandle, Focusable,
|
AsyncWindowContext, DismissEvent, Div, EntityId, EventEmitter, FocusHandle, Focusable,
|
||||||
FocusableView, Model, Pixels, Point, PromptLevel, Render, Task, View, ViewContext,
|
FocusableView, Model, MouseButton, NavigationDirection, Pixels, Point, PromptLevel, Render,
|
||||||
VisualContext, WeakView, WindowContext,
|
Task, View, ViewContext, VisualContext, WeakView, WindowContext,
|
||||||
};
|
};
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
use project::{Project, ProjectEntryId, ProjectPath};
|
use project::{Project, ProjectEntryId, ProjectPath};
|
||||||
|
@ -2139,183 +2139,174 @@ impl Render for Pane {
|
||||||
.justify_center()
|
.justify_center()
|
||||||
.child(Label::new("Open a file or project to get started.").color(Color::Muted))
|
.child(Label::new("Open a file or project to get started.").color(Color::Muted))
|
||||||
})
|
})
|
||||||
|
// enum MouseNavigationHandler {}
|
||||||
// enum MouseNavigationHandler {}
|
// MouseEventHandler::new::<MouseNavigationHandler, _>(0, cx, |_, cx| {
|
||||||
|
// let active_item_index = self.active_item_index;
|
||||||
// MouseEventHandler::new::<MouseNavigationHandler, _>(0, cx, |_, cx| {
|
// if let Some(active_item) = self.active_item() {
|
||||||
// let active_item_index = self.active_item_index;
|
// Flex::column()
|
||||||
|
// .with_child({
|
||||||
// if let Some(active_item) = self.active_item() {
|
// let theme = theme::current(cx).clone();
|
||||||
// Flex::column()
|
// let mut stack = Stack::new();
|
||||||
// .with_child({
|
// enum TabBarEventHandler {}
|
||||||
// let theme = theme::current(cx).clone();
|
// stack.add_child(
|
||||||
|
// MouseEventHandler::new::<TabBarEventHandler, _>(0, cx, |_, _| {
|
||||||
// let mut stack = Stack::new();
|
// Empty::new()
|
||||||
|
// .contained()
|
||||||
// enum TabBarEventHandler {}
|
// .with_style(theme.workspace.tab_bar.container)
|
||||||
// stack.add_child(
|
// })
|
||||||
// MouseEventHandler::new::<TabBarEventHandler, _>(0, cx, |_, _| {
|
// .on_down(
|
||||||
// Empty::new()
|
// MouseButton::Left,
|
||||||
// .contained()
|
// move |_, this, cx| {
|
||||||
// .with_style(theme.workspace.tab_bar.container)
|
// this.activate_item(active_item_index, true, true, cx);
|
||||||
// })
|
// },
|
||||||
// .on_down(
|
// ),
|
||||||
// MouseButton::Left,
|
// );
|
||||||
// move |_, this, cx| {
|
// let tooltip_style = theme.tooltip.clone();
|
||||||
// this.activate_item(active_item_index, true, true, cx);
|
// let tab_bar_theme = theme.workspace.tab_bar.clone();
|
||||||
// },
|
// let nav_button_height = tab_bar_theme.height;
|
||||||
// ),
|
// let button_style = tab_bar_theme.nav_button;
|
||||||
// );
|
// let border_for_nav_buttons = tab_bar_theme
|
||||||
// let tooltip_style = theme.tooltip.clone();
|
// .tab_style(false, false)
|
||||||
// let tab_bar_theme = theme.workspace.tab_bar.clone();
|
// .container
|
||||||
|
// .border
|
||||||
// let nav_button_height = tab_bar_theme.height;
|
// .clone();
|
||||||
// let button_style = tab_bar_theme.nav_button;
|
// let mut tab_row = Flex::row()
|
||||||
// let border_for_nav_buttons = tab_bar_theme
|
// .with_child(nav_button(
|
||||||
// .tab_style(false, false)
|
// "icons/arrow_left.svg",
|
||||||
// .container
|
// button_style.clone(),
|
||||||
// .border
|
// nav_button_height,
|
||||||
// .clone();
|
// tooltip_style.clone(),
|
||||||
|
// self.can_navigate_backward(),
|
||||||
// let mut tab_row = Flex::row()
|
// {
|
||||||
// .with_child(nav_button(
|
// move |pane, cx| {
|
||||||
// "icons/arrow_left.svg",
|
// if let Some(workspace) = pane.workspace.upgrade(cx) {
|
||||||
// button_style.clone(),
|
// let pane = cx.weak_handle();
|
||||||
// nav_button_height,
|
// cx.window_context().defer(move |cx| {
|
||||||
// tooltip_style.clone(),
|
// workspace.update(cx, |workspace, cx| {
|
||||||
// self.can_navigate_backward(),
|
// workspace
|
||||||
// {
|
// .go_back(pane, cx)
|
||||||
// move |pane, cx| {
|
// .detach_and_log_err(cx)
|
||||||
// if let Some(workspace) = pane.workspace.upgrade(cx) {
|
// })
|
||||||
// let pane = cx.weak_handle();
|
// })
|
||||||
// cx.window_context().defer(move |cx| {
|
// }
|
||||||
// workspace.update(cx, |workspace, cx| {
|
// }
|
||||||
// workspace
|
// },
|
||||||
// .go_back(pane, cx)
|
// super::GoBack,
|
||||||
// .detach_and_log_err(cx)
|
// "Go Back",
|
||||||
// })
|
// cx,
|
||||||
// })
|
// ))
|
||||||
// }
|
// .with_child(
|
||||||
// }
|
// nav_button(
|
||||||
// },
|
// "icons/arrow_right.svg",
|
||||||
// super::GoBack,
|
// button_style.clone(),
|
||||||
// "Go Back",
|
// nav_button_height,
|
||||||
// cx,
|
// tooltip_style,
|
||||||
// ))
|
// self.can_navigate_forward(),
|
||||||
// .with_child(
|
// {
|
||||||
// nav_button(
|
// move |pane, cx| {
|
||||||
// "icons/arrow_right.svg",
|
// if let Some(workspace) = pane.workspace.upgrade(cx) {
|
||||||
// button_style.clone(),
|
// let pane = cx.weak_handle();
|
||||||
// nav_button_height,
|
// cx.window_context().defer(move |cx| {
|
||||||
// tooltip_style,
|
// workspace.update(cx, |workspace, cx| {
|
||||||
// self.can_navigate_forward(),
|
// workspace
|
||||||
// {
|
// .go_forward(pane, cx)
|
||||||
// move |pane, cx| {
|
// .detach_and_log_err(cx)
|
||||||
// if let Some(workspace) = pane.workspace.upgrade(cx) {
|
// })
|
||||||
// let pane = cx.weak_handle();
|
// })
|
||||||
// cx.window_context().defer(move |cx| {
|
// }
|
||||||
// workspace.update(cx, |workspace, cx| {
|
// }
|
||||||
// workspace
|
// },
|
||||||
// .go_forward(pane, cx)
|
// super::GoForward,
|
||||||
// .detach_and_log_err(cx)
|
// "Go Forward",
|
||||||
// })
|
// cx,
|
||||||
// })
|
// )
|
||||||
// }
|
// .contained()
|
||||||
// }
|
// .with_border(border_for_nav_buttons),
|
||||||
// },
|
// )
|
||||||
// super::GoForward,
|
// .with_child(self.render_tabs(cx).flex(1., true).into_any_named("tabs"));
|
||||||
// "Go Forward",
|
// if self.has_focus {
|
||||||
// cx,
|
// let render_tab_bar_buttons = self.render_tab_bar_buttons.clone();
|
||||||
// )
|
// tab_row.add_child(
|
||||||
// .contained()
|
// (render_tab_bar_buttons)(self, cx)
|
||||||
// .with_border(border_for_nav_buttons),
|
// .contained()
|
||||||
// )
|
// .with_style(theme.workspace.tab_bar.pane_button_container)
|
||||||
// .with_child(self.render_tabs(cx).flex(1., true).into_any_named("tabs"));
|
// .flex(1., false)
|
||||||
|
// .into_any(),
|
||||||
// if self.has_focus {
|
// )
|
||||||
// let render_tab_bar_buttons = self.render_tab_bar_buttons.clone();
|
// }
|
||||||
// tab_row.add_child(
|
// stack.add_child(tab_row);
|
||||||
// (render_tab_bar_buttons)(self, cx)
|
// stack
|
||||||
// .contained()
|
// .constrained()
|
||||||
// .with_style(theme.workspace.tab_bar.pane_button_container)
|
// .with_height(theme.workspace.tab_bar.height)
|
||||||
// .flex(1., false)
|
// .flex(1., false)
|
||||||
// .into_any(),
|
// .into_any_named("tab bar")
|
||||||
// )
|
// })
|
||||||
// }
|
// .with_child({
|
||||||
|
// enum PaneContentTabDropTarget {}
|
||||||
// stack.add_child(tab_row);
|
// dragged_item_receiver::<PaneContentTabDropTarget, _, _>(
|
||||||
// stack
|
// self,
|
||||||
// .constrained()
|
// 0,
|
||||||
// .with_height(theme.workspace.tab_bar.height)
|
// self.active_item_index + 1,
|
||||||
// .flex(1., false)
|
// !self.can_split,
|
||||||
// .into_any_named("tab bar")
|
// if self.can_split { Some(100.) } else { None },
|
||||||
// })
|
// cx,
|
||||||
// .with_child({
|
// {
|
||||||
// enum PaneContentTabDropTarget {}
|
// let toolbar = self.toolbar.clone();
|
||||||
// dragged_item_receiver::<PaneContentTabDropTarget, _, _>(
|
// let toolbar_hidden = toolbar.read(cx).hidden();
|
||||||
// self,
|
// move |_, cx| {
|
||||||
// 0,
|
// Flex::column()
|
||||||
// self.active_item_index + 1,
|
// .with_children(
|
||||||
// !self.can_split,
|
// (!toolbar_hidden)
|
||||||
// if self.can_split { Some(100.) } else { None },
|
// .then(|| ChildView::new(&toolbar, cx).expanded()),
|
||||||
// cx,
|
// )
|
||||||
// {
|
// .with_child(
|
||||||
// let toolbar = self.toolbar.clone();
|
// ChildView::new(active_item.as_any(), cx).flex(1., true),
|
||||||
// let toolbar_hidden = toolbar.read(cx).hidden();
|
// )
|
||||||
// move |_, cx| {
|
// }
|
||||||
// Flex::column()
|
// },
|
||||||
// .with_children(
|
// )
|
||||||
// (!toolbar_hidden)
|
// .flex(1., true)
|
||||||
// .then(|| ChildView::new(&toolbar, cx).expanded()),
|
// })
|
||||||
// )
|
// .with_child(ChildView::new(&self.tab_context_menu, cx))
|
||||||
// .with_child(
|
// .into_any()
|
||||||
// ChildView::new(active_item.as_any(), cx).flex(1., true),
|
// } else {
|
||||||
// )
|
// enum EmptyPane {}
|
||||||
// }
|
// let theme = theme::current(cx).clone();
|
||||||
// },
|
// dragged_item_receiver::<EmptyPane, _, _>(self, 0, 0, false, None, cx, |_, cx| {
|
||||||
// )
|
// self.render_blank_pane(&theme, cx)
|
||||||
// .flex(1., true)
|
// })
|
||||||
// })
|
// .on_down(MouseButton::Left, |_, _, cx| {
|
||||||
// .with_child(ChildView::new(&self.tab_context_menu, cx))
|
// cx.focus_parent();
|
||||||
// .into_any()
|
// })
|
||||||
// } else {
|
// .into_any()
|
||||||
// enum EmptyPane {}
|
// }
|
||||||
// let theme = theme::current(cx).clone();
|
// })
|
||||||
|
.on_mouse_down(
|
||||||
// dragged_item_receiver::<EmptyPane, _, _>(self, 0, 0, false, None, cx, |_, cx| {
|
MouseButton::Navigate(NavigationDirection::Back),
|
||||||
// self.render_blank_pane(&theme, cx)
|
cx.listener(|pane, _, cx| {
|
||||||
// })
|
if let Some(workspace) = pane.workspace.upgrade() {
|
||||||
// .on_down(MouseButton::Left, |_, _, cx| {
|
let pane = cx.view().downgrade();
|
||||||
// cx.focus_parent();
|
cx.window_context().defer(move |cx| {
|
||||||
// })
|
workspace.update(cx, |workspace, cx| {
|
||||||
// .into_any()
|
workspace.go_back(pane, cx).detach_and_log_err(cx)
|
||||||
// }
|
})
|
||||||
// })
|
})
|
||||||
// .on_down(
|
}
|
||||||
// MouseButton::Navigate(NavigationDirection::Back),
|
}),
|
||||||
// move |_, pane, cx| {
|
)
|
||||||
// if let Some(workspace) = pane.workspace.upgrade(cx) {
|
.on_mouse_down(
|
||||||
// let pane = cx.weak_handle();
|
MouseButton::Navigate(NavigationDirection::Forward),
|
||||||
// cx.window_context().defer(move |cx| {
|
cx.listener(|pane, _, cx| {
|
||||||
// workspace.update(cx, |workspace, cx| {
|
if let Some(workspace) = pane.workspace.upgrade() {
|
||||||
// workspace.go_back(pane, cx).detach_and_log_err(cx)
|
let pane = cx.view().downgrade();
|
||||||
// })
|
cx.window_context().defer(move |cx| {
|
||||||
// })
|
workspace.update(cx, |workspace, cx| {
|
||||||
// }
|
workspace.go_forward(pane, cx).detach_and_log_err(cx)
|
||||||
// },
|
})
|
||||||
// )
|
})
|
||||||
// .on_down(MouseButton::Navigate(NavigationDirection::Forward), {
|
}
|
||||||
// move |_, pane, cx| {
|
}),
|
||||||
// if let Some(workspace) = pane.workspace.upgrade(cx) {
|
)
|
||||||
// let pane = cx.weak_handle();
|
|
||||||
// cx.window_context().defer(move |cx| {
|
|
||||||
// workspace.update(cx, |workspace, cx| {
|
|
||||||
// workspace.go_forward(pane, cx).detach_and_log_err(cx)
|
|
||||||
// })
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// .into_any_named("pane")
|
// .into_any_named("pane")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue