Re-enable navigation with mouse navigation buttons

This commit is contained in:
Piotr Osiewicz 2023-12-08 17:59:52 +01:00
parent 5e3d0a6d03
commit a283cbaf8f

View file

@ -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")
} }