+\r
+ ShowContextMenu(point,hTreeItem,VectorPShadowTree());\r
+}\r
+\r
+\r
+void CBrowseRefsDlg::OnContextMenu_ListRefLeafs(CPoint point)\r
+{\r
+ std::vector<CShadowTree*> selectedLeafs;\r
+ selectedLeafs.reserve(m_ListRefLeafs.GetSelectedCount());\r
+ POSITION pos=m_ListRefLeafs.GetFirstSelectedItemPosition();\r
+ while(pos)\r
+ {\r
+ selectedLeafs.push_back(\r
+ (CShadowTree*)m_ListRefLeafs.GetItemData(\r
+ m_ListRefLeafs.GetNextSelectedItem(pos)));\r
+ }\r
+\r
+ ShowContextMenu(point,m_RefTreeCtrl.GetSelectedItem(),selectedLeafs);\r
+}\r
+\r
+void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPShadowTree& selectedLeafs)\r
+{\r
+ CMenu popupMenu;\r
+ popupMenu.CreatePopupMenu();\r
+\r
+ if(selectedLeafs.size()==1)\r
+ {\r
+ popupMenu.AppendMenu(MF_STRING,eCmd_ViewLog,L"View log");\r
+ if(selectedLeafs[0]->IsFrom(L"refs/heads"))\r
+ popupMenu.AppendMenu(MF_STRING,eCmd_DeleteBranch,L"Delete Branch");\r
+ else if(selectedLeafs[0]->IsFrom(L"refs/tags"))\r
+ popupMenu.AppendMenu(MF_STRING,eCmd_DeleteTag,L"Delete Tag");\r
+\r
+// CShadowTree* pTree = (CShadowTree*)m_ListRefLeafs.GetItemData(pNMHDR->idFrom);\r
+// if(pTree==NULL)\r
+// return;\r
+ }\r
+\r
+ if(hTreePos!=NULL)\r
+ {\r
+ CShadowTree* pTree=(CShadowTree*)m_RefTreeCtrl.GetItemData(hTreePos);\r