branch list: dismiss correct window on PickerEvent.

Query proper window
This commit is contained in:
Piotr Osiewicz 2023-07-03 19:22:43 +02:00
parent 806268f0db
commit 14eab4e94f
2 changed files with 9 additions and 11 deletions

View File

@ -60,24 +60,24 @@ impl PickerDelegate for BranchListDelegate {
.read_with(&mut cx, |view, cx| {
let delegate = view.delegate();
let project = delegate.workspace.read(cx).project().read(&cx);
let mut cwd = project
let mut cwd =
project
.visible_worktrees(cx)
.next()
.unwrap()
.read(cx)
.root_entry()
.unwrap()
.path
.abs_path()
.to_path_buf();
cwd.push(".git");
let Some(repo) = project.fs().open_repo(&cwd) else {bail!("Project does not have associated git repository.")};
let mut branches = repo
.lock()
.branches()?;
if query.is_empty() {
const RECENT_BRANCHES_COUNT: usize = 10;
if query.is_empty() && branches.len() > RECENT_BRANCHES_COUNT {
// Truncate list of recent branches
// Do a partial sort to show recent-ish branches first.
branches.select_nth_unstable_by(RECENT_BRANCHES_COUNT, |lhs, rhs| {
branches.select_nth_unstable_by(RECENT_BRANCHES_COUNT - 1, |lhs, rhs| {
rhs.unix_timestamp.cmp(&lhs.unix_timestamp)
});
branches.truncate(RECENT_BRANCHES_COUNT);
@ -145,9 +145,7 @@ impl PickerDelegate for BranchListDelegate {
.next()
.ok_or_else(|| anyhow!("There are no visisible worktrees."))?
.read(cx)
.root_entry()
.ok_or_else(|| anyhow!("Worktree has no root entry."))?
.path
.abs_path()
.to_path_buf();
cwd.push(".git");
let status = project

View File

@ -444,7 +444,7 @@ impl CollabTitlebarItem {
cx.subscribe(&view, |this, _, event, cx| {
match event {
PickerEvent::Dismiss => {
this.contacts_popover = None;
this.branch_popover = None;
}
}