OSDN Git Service

Add Delete Ref support at Log List dialog
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / GitLogListBase.cpp
index 3a542f5..e9a914e 100644 (file)
@@ -1039,6 +1039,7 @@ void CGitLogListBase::OnContextMenu(CWnd* pWnd, CPoint point)
        }\r
        //entry is selected, now show the popup menu\r
        CIconMenu popup;\r
+       CIconMenu submenu;\r
        if (popup.CreatePopupMenu())\r
        {\r
 \r
@@ -1229,6 +1230,38 @@ void CGitLogListBase::OnContextMenu(CWnd* pWnd, CPoint point)
                if(m_ContextMenuMask&GetContextMenuBit(ID_FINDENTRY))\r
                        popup.AppendMenuIcon(ID_FINDENTRY, IDS_LOG_POPUP_FIND);\r
 \r
+\r
+               if (GetSelectedCount() == 1)\r
+               {\r
+                       if(m_ContextMenuMask &GetContextMenuBit(ID_DELETE))\r
+                       {\r
+                               if( this->m_HashMap.find(pSelLogEntry->m_CommitHash) != m_HashMap.end() )\r
+                               {\r
+                                       CString str;\r
+                                       str.LoadString(IDS_DELETE_BRANCHTAG);\r
+                                       if( m_HashMap[pSelLogEntry->m_CommitHash].size() == 1 )\r
+                                       {\r
+                                               str+=_T(" ");\r
+                                               str+=m_HashMap[pSelLogEntry->m_CommitHash].at(0);\r
+                                               popup.AppendMenuIcon(ID_DELETE,str+_T("..."),IDI_DELETE);\r
+                                       }\r
+                                       else if( m_HashMap[pSelLogEntry->m_CommitHash].size() > 1 )\r
+                                       {\r
+                                               \r
+                                               submenu.CreatePopupMenu();\r
+                                               for(int i=0;i<m_HashMap[pSelLogEntry->m_CommitHash].size();i++)\r
+                                               {\r
+                                                       submenu.AppendMenuIcon(ID_DELETE+(i<<16),m_HashMap[pSelLogEntry->m_CommitHash][i]+_T("..."));\r
+                                               }\r
+\r
+                                               popup.AppendMenu(MF_BYPOSITION|MF_POPUP|MF_STRING,(UINT) submenu.m_hMenu,str); \r
+\r
+                                       }\r
+                                       \r
+                               }\r
+                       }\r
+               }\r
+\r
                int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
 //             DialogEnableWindow(IDOK, FALSE);\r
 //             SetPromptApp(&theApp);\r