m_ContextMenuMask &= ~GetContextMenuBit(ID_REBASE_SQUASH);\r
m_ContextMenuMask &= ~GetContextMenuBit(ID_REBASE_EDIT);\r
m_ContextMenuMask &= ~GetContextMenuBit(ID_REBASE_SKIP);\r
+\r
+ m_ColumnRegKey=_T("log");\r
}\r
\r
CGitLogListBase::~CGitLogListBase()\r
{\r
// get width for this col last time from registry\r
CString regentry;\r
- regentry.Format( _T("Software\\TortoiseGit\\log\\ColWidth%d"), col);\r
+ regentry.Format( _T("Software\\TortoiseGit\\%s\\ColWidth%d"),m_ColumnRegKey, col);\r
CRegDWORD regwidth(regentry, 0);\r
int cx = regwidth;\r
if ( cx == 0 )\r
{\r
int width = GetColumnWidth( col );\r
CString regentry;\r
- regentry.Format( _T("Software\\TortoiseGit\\log\\ColWidth%d"), col);\r
+ regentry.Format( _T("Software\\TortoiseGit\\%s\\ColWidth%d"),m_ColumnRegKey, col);\r
CRegDWORD regwidth(regentry, 0);\r
regwidth = width; // this writes it to reg\r
}\r
protected:\r
DECLARE_MESSAGE_MAP()\r
afx_msg void OnDestroy();\r
- afx_msg void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
- afx_msg void OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+ virtual afx_msg void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+ virtual afx_msg void OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);\r
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);\r
afx_msg LRESULT OnLoad(WPARAM wParam, LPARAM lParam);\r
CString m_CurrentBranch;\r
CString m_HeadHash;\r
\r
+ CString m_ColumnRegKey;\r
+\r
COLORREF m_LineColors[Lanes::COLORS_NUM];\r
DWORD m_DateFormat; // DATE_SHORTDATE or DATE_LONGDATE\r
bool m_bRelativeTimes; // Show relative times\r
rev.m_Subject=one.Right(one.GetLength()-message-1);
}
}
+ this->push_back(rev);
}
return 0;
}
STRING_VECTOR list;\r
g_Git.GetRefList(list);\r
\r
+ CString currentbranch;\r
+ currentbranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());\r
+\r
this->m_ChooseRef.AddString(list);\r
m_ChooseRef.SetMaxHistoryItems(0x7FFFFFFF);\r
\r
this->m_RefList.InsertRefLogColumn();\r
- m_RefList.m_logEntries.ParserFromRefLog(_T("master"));\r
+ //m_RefList.m_logEntries.ParserFromRefLog(_T("master"));\r
+ \r
+ for(int i=0;i<list.size();i++)\r
+ {\r
+ if(list[i] == currentbranch)\r
+ {\r
+ m_ChooseRef.SetCurSel(i);\r
+ break;\r
+ }\r
+ }\r
+\r
+ OnCbnSelchangeRef();\r
+\r
return TRUE;\r
}\r
// CRefLogDlg message handlers\r
\r
void CRefLogDlg::OnCbnSelchangeRef()\r
{\r
- \r
+ CString ref=m_ChooseRef.GetString();\r
+ if(m_RefList.m_RefMap.find(ref) == m_RefList.m_RefMap.end())\r
+ {\r
+ m_RefList.m_RefMap[ref].ParserFromRefLog(ref);\r
+ }\r
+ m_RefList.ClearText();\r
+\r
+ //this->m_logEntries.ParserFromLog();\r
+ m_RefList.SetRedraw(false);\r
+\r
+ CLogDataVector *plog;\r
+ plog = &m_RefList.m_RefMap[ref];\r
+\r
+ m_RefList.SetItemCountEx(plog->size());\r
+\r
+ this->m_RefList.m_arShownList.RemoveAll();\r
+\r
+ for(unsigned int i=0;i<m_RefList.m_RefMap[ref].size();i++)\r
+ {\r
+ plog->at(i).m_IsFull=TRUE;\r
+ this->m_RefList.m_arShownList.Add(&(plog->at(i)));\r
+ \r
+ }\r
+\r
+ m_RefList.SetRedraw(true);\r
+\r
+ m_RefList.Invalidate();\r
+\r
}
\ No newline at end of file
\r
CRefLogList::CRefLogList()\r
{\r
+ m_ColumnRegKey=_T("reflog");\r
\r
}\r
\r
SetRedraw(false);\r
ResizeAllListCtrlCols();\r
SetRedraw(true);\r
+}\r
+\r
+void CRefLogList::OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+ NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);\r
+\r
+ // Create a pointer to the item\r
+ LV_ITEM* pItem = &(pDispInfo)->item;\r
+\r
+ // Do the list need text information?\r
+ if (!(pItem->mask & LVIF_TEXT))\r
+ return;\r
+\r
+ // By default, clear text buffer.\r
+ lstrcpyn(pItem->pszText, _T(""), pItem->cchTextMax);\r
+\r
+ bool bOutOfRange = pItem->iItem >= ShownCountWithStopped();\r
+ \r
+ *pResult = 0;\r
+ if (m_bNoDispUpdates || bOutOfRange)\r
+ return;\r
+\r
+ // Which item number?\r
+ int itemid = pItem->iItem;\r
+ GitRev * pLogEntry = NULL;\r
+ if (itemid < m_arShownList.GetCount())\r
+ pLogEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(pItem->iItem));\r
+\r
+ CString temp;\r
+ \r
+ // Which column?\r
+ switch (pItem->iSubItem)\r
+ {\r
+ case this->REFLOG_HASH: //Graphic\r
+ if (pLogEntry)\r
+ {\r
+ lstrcpyn(pItem->pszText,pLogEntry->m_CommitHash, pItem->cchTextMax);\r
+ }\r
+ break;\r
+ case REFLOG_REF: //action -- no text in the column\r
+ if(pLogEntry)\r
+ lstrcpyn(pItem->pszText, pLogEntry->m_Ref, pItem->cchTextMax);\r
+ break;\r
+ case REFLOG_ACTION: //Message\r
+ if (pLogEntry)\r
+ lstrcpyn(pItem->pszText, (LPCTSTR)pLogEntry->m_RefAction, pItem->cchTextMax);\r
+ break;\r
+ case REFLOG_MESSAGE: //Author\r
+ if (pLogEntry)\r
+ lstrcpyn(pItem->pszText, (LPCTSTR)pLogEntry->m_Subject, pItem->cchTextMax);\r
+ break;\r
+ \r
+ default:\r
+ ASSERT(false);\r
+ }\r
+}\r
+\r
+void CRefLogList::OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+\r
+ NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );\r
+ // Take the default processing unless we set this to something else below.\r
+ *pResult = CDRF_DODEFAULT;\r
}
\ No newline at end of file
REFLOG_ACTION,\r
REFLOG_MESSAGE\r
};\r
+ \r
+ std::map<CString,CLogDataVector> m_RefMap;\r
protected:\r
+ virtual void OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+ virtual void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
\r
};
\ No newline at end of file