OSDN Git Service

BrowseRefs: Added option to delete branch or tag.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / BrowseRefsDlg.cpp
index 12a23d6..159eaa9 100644 (file)
@@ -9,6 +9,7 @@
 #include "CreateBranchTagDlg.h"\r
 #include "Settings\SettingGitRemote.h"\r
 #include "SinglePropSheetDlg.h"\r
+#include "ConfirmDelRefDlg.h"\r
 \r
 \r
 // CBrowseRefsDlg dialog\r
@@ -272,11 +273,9 @@ void CBrowseRefsDlg::OnContextMenu_ListRefLeafs(CPoint point)
        CPoint clientPoint=point;\r
        m_RefTreeCtrl.ScreenToClient(&clientPoint);\r
 \r
-       int selectedItemCount=m_ListRefLeafs.GetSelectedCount();\r
-\r
 \r
        std::vector<CShadowTree*> selectedTrees;\r
-       selectedTrees.reserve(selectedItemCount);\r
+       selectedTrees.reserve(m_ListRefLeafs.GetSelectedCount());\r
        POSITION pos=m_ListRefLeafs.GetFirstSelectedItemPosition();\r
        while(pos)\r
        {\r
@@ -288,9 +287,13 @@ void CBrowseRefsDlg::OnContextMenu_ListRefLeafs(CPoint point)
        CMenu popupMenu;\r
        popupMenu.CreatePopupMenu();\r
 \r
-       if(selectedItemCount==1)\r
+       if(selectedTrees.size()==1)\r
        {\r
                popupMenu.AppendMenu(MF_STRING,eCmd_ViewLog,L"View log");\r
+               if(selectedTrees[0]->IsFrom(L"refs/heads"))\r
+                       popupMenu.AppendMenu(MF_STRING,eCmd_DeleteBranch,L"Delete Branch");\r
+               else if(selectedTrees[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
@@ -308,6 +311,18 @@ void CBrowseRefsDlg::OnContextMenu_ListRefLeafs(CPoint point)
                        dlg.DoModal();\r
                }\r
                break;\r
+       case eCmd_DeleteBranch:\r
+               {\r
+                       CConfirmDelRefDlg(selectedTrees[0]->GetRefName(),this).DoModal();\r
+                       Refresh();\r
+               }\r
+               break;\r
+       case eCmd_DeleteTag:\r
+               {\r
+                       CConfirmDelRefDlg(selectedTrees[0]->GetRefName(),this).DoModal();\r
+                       Refresh();\r
+               }\r
+               break;\r
        }\r
 }\r
 \r
@@ -355,6 +370,7 @@ void CBrowseRefsDlg::OnContextMenu_RefTreeCtrl(CPoint point)
                        CSinglePropSheetDlg(L"Git Remote Settings",new CSettingGitRemote(m_cmdPath),this).DoModal();\r
 //                     CSettingGitRemote W_Remotes(m_cmdPath);\r
 //                     W_Remotes.DoModal();\r
+                       Refresh();\r
                }\r
                break;\r
        case eCmd_CreateBranch:\r