treeLeaf.m_csRef=iterRefName->second;\r
}\r
\r
- m_RefTreeCtrl.Expand(m_TreeRoot.m_hTree,TVE_EXPAND);\r
+ CString currHead;\r
+ g_Git.Run(L"git symbolic-ref HEAD",&currHead,CP_UTF8);\r
\r
+ currHead.Trim(L"\r\n\t ");\r
+\r
+ if(!SelectRef(currHead))\r
+ //Probably not on a branch. Select root node.\r
+ m_RefTreeCtrl.Expand(m_TreeRoot.m_hTree,TVE_EXPAND);\r
+\r
+}\r
+\r
+bool CBrowseRefsDlg::SelectRef(CString refName)\r
+{\r
+ if(wcsnicmp(refName,L"refs/",5)!=0)\r
+ return false; // Not a ref name\r
+\r
+ CShadowTree& treeLeafHead=GetTreeNode(refName);\r
+ if(treeLeafHead.m_pParent==NULL)\r
+ return false; //Weird... should not occur.\r
+\r
+ //This is the current head.\r
+ m_RefTreeCtrl.Select(treeLeafHead.m_pParent->m_hTree,TVGN_CARET);\r
+\r
+ for(int indexPos = 0; indexPos < m_ListRefLeafs.GetItemCount(); ++indexPos)\r
+ {\r
+ CShadowTree* pCurrShadowTree = (CShadowTree*)m_ListRefLeafs.GetItemData(indexPos);\r
+ if(pCurrShadowTree == &treeLeafHead)\r
+ {\r
+ m_ListRefLeafs.SetItemState(indexPos,LVIS_SELECTED,LVIS_SELECTED);\r
+ }\r
+ }\r
+\r
+ return true;\r
}\r
\r
CShadowTree& CBrowseRefsDlg::GetTreeNode(CString refName, CShadowTree* pTreePos)\r