@@ -18,10 +18,30 @@ use workspace::{ModalView, Workspace};
pub fn init(cx: &mut App) {
cx.observe_new(|workspace: &mut Workspace, _, _| {
workspace.register_action(open);
+ workspace.register_action(switch);
+ workspace.register_action(checkout_branch);
})
.detach();
}
+pub fn checkout_branch(
+ workspace: &mut Workspace,
+ _: &zed_actions::git::CheckoutBranch,
+ window: &mut Window,
+ cx: &mut Context<Workspace>,
+) {
+ open(workspace, &zed_actions::git::Branch, window, cx);
+}
+
+pub fn switch(
+ workspace: &mut Workspace,
+ _: &zed_actions::git::Switch,
+ window: &mut Window,
+ cx: &mut Context<Workspace>,
+) {
+ open(workspace, &zed_actions::git::Branch, window, cx);
+}
+
pub fn open(
workspace: &mut Workspace,
_: &zed_actions::git::Branch,
@@ -374,9 +374,17 @@ impl Render for CommitModal {
.on_action(cx.listener(Self::commit))
.on_action(
cx.listener(|this, _: &zed_actions::git::Branch, window, cx| {
- this.branch_list.update(cx, |branch_list, cx| {
- branch_list.popover_handle.toggle(window, cx);
- })
+ toggle_branch_picker(this, window, cx);
+ }),
+ )
+ .on_action(
+ cx.listener(|this, _: &zed_actions::git::CheckoutBranch, window, cx| {
+ toggle_branch_picker(this, window, cx);
+ }),
+ )
+ .on_action(
+ cx.listener(|this, _: &zed_actions::git::Switch, window, cx| {
+ toggle_branch_picker(this, window, cx);
}),
)
.elevation_3(cx)
@@ -415,3 +423,13 @@ impl Render for CommitModal {
)
}
}
+
+fn toggle_branch_picker(
+ this: &mut CommitModal,
+ window: &mut Window,
+ cx: &mut Context<'_, CommitModal>,
+) {
+ this.branch_list.update(cx, |branch_list, cx| {
+ branch_list.popover_handle.toggle(window, cx);
+ })
+}
@@ -114,8 +114,9 @@ pub mod workspace {
}
pub mod git {
- use gpui::action_with_deprecated_aliases;
+ use gpui::{action_with_deprecated_aliases, actions};
+ actions!(git, [CheckoutBranch, Switch]);
action_with_deprecated_aliases!(git, Branch, ["branches::OpenRecent"]);
}