m_bExitThread=FALSE;\r
m_IsOldFirst = FALSE;\r
m_IsRebaseReplaceGraph = FALSE;\r
- m_IsEnableRebaseMenu = FALSE;\r
+\r
\r
for(int i=0;i<Lanes::COLORS_NUM;i++)\r
{\r
// get relative time display setting from registry\r
DWORD regRelativeTimes = CRegDWORD(_T("Software\\TortoiseGit\\RelativeTimes"), FALSE);\r
m_bRelativeTimes = (regRelativeTimes != 0);\r
+ m_ContextMenuMask = 0xFFFFFFFFFFFFFFFF;\r
+\r
+ m_ContextMenuMask &= ~GetContextMenuBit(ID_REBASE_PICK);\r
+ m_ContextMenuMask &= ~GetContextMenuBit(ID_REBASE_SQUASH);\r
+ m_ContextMenuMask &= ~GetContextMenuBit(ID_REBASE_EDIT);\r
+ m_ContextMenuMask &= ~GetContextMenuBit(ID_REBASE_SKIP);\r
}\r
\r
CGitLogListBase::~CGitLogListBase()\r
if (popup.CreatePopupMenu())\r
{\r
\r
- if(this->m_IsEnableRebaseMenu)\r
- {\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_REBASE_PICK))\r
popup.AppendMenuIcon(ID_REBASE_PICK, _T("Pick"), IDI_OPEN);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_REBASE_SQUASH))\r
popup.AppendMenuIcon(ID_REBASE_SQUASH, _T("Squash"), IDI_OPEN);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_REBASE_EDIT))\r
popup.AppendMenuIcon(ID_REBASE_EDIT, _T("Edit"), IDI_OPEN);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_REBASE_SKIP))\r
popup.AppendMenuIcon(ID_REBASE_SKIP, _T("SKIP"), IDI_OPEN);\r
- }\r
+ \r
+ if(m_ContextMenuMask&(GetContextMenuBit(ID_REBASE_SKIP)|GetContextMenuBit(ID_REBASE_EDIT)|\r
+ GetContextMenuBit(ID_REBASE_SQUASH)|GetContextMenuBit(ID_REBASE_PICK)))\r
+ popup.AppendMenu(MF_SEPARATOR, NULL);\r
\r
if (GetSelectedCount() == 1)\r
{\r
{\r
if (m_hasWC)\r
{\r
- popup.AppendMenuIcon(ID_COMPARE, IDS_LOG_POPUP_COMPARE, IDI_DIFF);\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_COMPARE))\r
+ popup.AppendMenuIcon(ID_COMPARE, IDS_LOG_POPUP_COMPARE, IDI_DIFF);\r
// TODO:\r
// TortoiseMerge could be improved to take a /blame switch\r
// and then not 'cat' the files from a unified diff but\r
// this feature is commented out.\r
//popup.AppendMenu(ID_BLAMECOMPARE, IDS_LOG_POPUP_BLAMECOMPARE, IDI_BLAME);\r
}\r
- popup.AppendMenuIcon(ID_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF_CH, IDI_DIFF);\r
- popup.AppendMenuIcon(ID_COMPAREWITHPREVIOUS, IDS_LOG_POPUP_COMPAREWITHPREVIOUS, IDI_DIFF);\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_GNUDIFF1))\r
+ popup.AppendMenuIcon(ID_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF_CH, IDI_DIFF);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_COMPAREWITHPREVIOUS))\r
+ popup.AppendMenuIcon(ID_COMPAREWITHPREVIOUS, IDS_LOG_POPUP_COMPAREWITHPREVIOUS, IDI_DIFF);\r
//popup.AppendMenuIcon(ID_BLAMEWITHPREVIOUS, IDS_LOG_POPUP_BLAMEWITHPREVIOUS, IDI_BLAME);\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
}\r
\r
CString str;\r
str.Format(_T("Reset %s to this"),g_Git.GetCurrentBranch());\r
- popup.AppendMenuIcon(ID_RESET,str,IDI_REVERT);\r
- popup.AppendMenuIcon(ID_SWITCHTOREV, _T("Switch/Checkout to this") , IDI_SWITCH);\r
- popup.AppendMenuIcon(ID_CREATE_BRANCH, _T("Create Branch at this version") , IDI_COPY);\r
- popup.AppendMenuIcon(ID_CREATE_TAG, _T("Create Tag at this version"), IDI_COPY);\r
- popup.AppendMenuIcon(ID_CHERRY_PICK, _T("Cherry Pick this version"), IDI_EXPORT);\r
- popup.AppendMenuIcon(ID_EXPORT, _T("Export this version"), IDI_EXPORT);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_RESET))\r
+ popup.AppendMenuIcon(ID_RESET,str,IDI_REVERT);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_SWITCHTOREV))\r
+ popup.AppendMenuIcon(ID_SWITCHTOREV, _T("Switch/Checkout to this") , IDI_SWITCH);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_CREATE_BRANCH))\r
+ popup.AppendMenuIcon(ID_CREATE_BRANCH, _T("Create Branch at this version") , IDI_COPY);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_CREATE_TAG))\r
+ popup.AppendMenuIcon(ID_CREATE_TAG, _T("Create Tag at this version"), IDI_COPY);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_CHERRY_PICK))\r
+ popup.AppendMenuIcon(ID_CHERRY_PICK, _T("Cherry Pick this version"), IDI_EXPORT);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_EXPORT))\r
+ popup.AppendMenuIcon(ID_EXPORT, _T("Export this version"), IDI_EXPORT); \r
\r
\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
bool bAddSeparator = false;\r
if (IsSelectionContinuous() || (GetSelectedCount() == 2))\r
{\r
- popup.AppendMenuIcon(ID_COMPARETWO, IDS_LOG_POPUP_COMPARETWO, IDI_DIFF);\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_COMPARETWO))\r
+ popup.AppendMenuIcon(ID_COMPARETWO, IDS_LOG_POPUP_COMPARETWO, IDI_DIFF);\r
}\r
if (GetSelectedCount() == 2)\r
{\r
//popup.AppendMenuIcon(ID_BLAMETWO, IDS_LOG_POPUP_BLAMEREVS, IDI_BLAME);\r
- popup.AppendMenuIcon(ID_GNUDIFF2, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_GNUDIFF2))\r
+ popup.AppendMenuIcon(ID_GNUDIFF2, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
bAddSeparator = true;\r
}\r
if (m_hasWC)\r
\r
if (GetSelectedCount() == 1)\r
{\r
- popup.AppendMenuIcon(ID_COPYHASH, _T("Copy Commit Hash"));\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_COPYHASH))\r
+ popup.AppendMenuIcon(ID_COPYHASH, _T("Copy Commit Hash"));\r
}\r
if (GetSelectedCount() != 0)\r
{\r
- popup.AppendMenuIcon(ID_COPYCLIPBOARD, IDS_LOG_POPUP_COPYTOCLIPBOARD);\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_COPYCLIPBOARD))\r
+ popup.AppendMenuIcon(ID_COPYCLIPBOARD, IDS_LOG_POPUP_COPYTOCLIPBOARD);\r
}\r
- popup.AppendMenuIcon(ID_FINDENTRY, IDS_LOG_POPUP_FIND);\r
+\r
+ if(m_ContextMenuMask&GetContextMenuBit(ID_FINDENTRY))\r
+ popup.AppendMenuIcon(ID_FINDENTRY, IDS_LOG_POPUP_FIND);\r
\r
int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
// DialogEnableWindow(IDOK, FALSE);\r
FetchLogList();\r
SetContinueButtonText();\r
this->SetControlEnable();\r
+\r
+ m_CommitList.m_ContextMenuMask &= ~(m_CommitList.GetContextMenuBit(CGitLogListBase::ID_CHERRY_PICK)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_SWITCHTOREV)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_RESET)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REVERTREV)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REVERTTOREV));\r
+\r
return TRUE;\r
}\r
// CRebaseDlg message handlers\r
this->GetDlgItem(IDC_SQUASH_ALL)->EnableWindow(TRUE);\r
this->GetDlgItem(IDC_REBASE_COMBOXEX_BRANCH)->EnableWindow(TRUE);\r
this->GetDlgItem(IDC_REBASE_COMBOXEX_UPSTREAM)->EnableWindow(TRUE);\r
- this->m_CommitList.m_IsEnableRebaseMenu=TRUE;\r
+ //this->m_CommitList.m_IsEnableRebaseMenu=TRUE;\r
+ this->m_CommitList.m_ContextMenuMask |= m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_PICK)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_SQUASH)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_EDIT)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_SKIP);\r
break;\r
\r
case REBASE_START:\r
this->GetDlgItem(IDC_SQUASH_ALL)->EnableWindow(FALSE);\r
this->GetDlgItem(IDC_REBASE_COMBOXEX_BRANCH)->EnableWindow(FALSE);\r
this->GetDlgItem(IDC_REBASE_COMBOXEX_UPSTREAM)->EnableWindow(FALSE);\r
- this->m_CommitList.m_IsEnableRebaseMenu=FALSE;\r
+ //this->m_CommitList.m_IsEnableRebaseMenu=FALSE;\r
+ this->m_CommitList.m_ContextMenuMask &= ~(m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_PICK)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_SQUASH)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_EDIT)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_SKIP));\r
break;\r
}\r
\r