From feb7527328a7a21f2d0b688048308228de4a7786 Mon Sep 17 00:00:00 2001 From: David Aguilar Date: Mon, 27 Feb 2023 22:15:16 -0800 Subject: [PATCH] dag: prefer the clicked commit when checking out branches Use the commit that was clicked when choosing the branch to checkout. Related-to: #1113 Signed-off-by: David Aguilar --- cola/widgets/dag.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/cola/widgets/dag.py b/cola/widgets/dag.py index 9b2dc280..d4c5d4aa 100644 --- a/cola/widgets/dag.py +++ b/cola/widgets/dag.py @@ -108,9 +108,15 @@ class ViewerMixin(object): """Return the currently selected comit object IDs""" return [i.commit for i in self.selected_items()] + def clicked_oid(self): + """Return the clicked or selected commit object ID""" + if self.clicked: + return self.clicked.oid + return self.selected_oid() + def with_oid(self, fn): """Run an operation with a commit object ID""" - oid = self.selected_oid() + oid = self.clicked_oid() if oid: result = fn(oid) else: @@ -144,11 +150,14 @@ class ViewerMixin(object): self.with_oid(qtutils.set_clipboard) def checkout_branch(self): - """Checkout the selected branch""" - item = self.selected_item() - if not item: - return - branches = item.commit.branches + """Checkout the clicked/selected branch""" + branches = [] + clicked = self.clicked + selected = self.selected_item() + if clicked: + branches.extend(clicked.branches) + if selected: + branches.extend(selected.commit.branches) if not branches: return guicmds.checkout_branch(self.context, default=branches[0]) -- 2.11.4.GIT