OSDN Git Service

Fix Issue 77: "Show differencess" against a deleted file will cause TortoiseMerge...
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / RefLogDlg.cpp
index 0cadf34..d3bb480 100644 (file)
@@ -31,8 +31,16 @@ void CRefLogDlg::DoDataExchange(CDataExchange* pDX)
 BEGIN_MESSAGE_MAP(CRefLogDlg, CResizableStandAloneDialog)\r
        ON_BN_CLICKED(IDOK, &CRefLogDlg::OnBnClickedOk)\r
        ON_CBN_SELCHANGE(IDC_COMBOBOXEX_REF,   &CRefLogDlg::OnCbnSelchangeRef)\r
+       ON_MESSAGE(MSG_REFLOG_CHANGED,OnRefLogChanged)\r
 END_MESSAGE_MAP()\r
 \r
+LRESULT CRefLogDlg::OnRefLogChanged(WPARAM wParam, LPARAM lParam)\r
+{\r
+       m_RefList.m_RefMap.clear();\r
+       OnCbnSelchangeRef();\r
+       return 0;\r
+}\r
+\r
 BOOL CRefLogDlg::OnInitDialog()\r
 {\r
        CResizableStandAloneDialog::OnInitDialog();\r
@@ -48,11 +56,29 @@ BOOL CRefLogDlg::OnInitDialog()
        STRING_VECTOR list;\r
        g_Git.GetRefList(list);\r
 \r
-       this->m_ChooseRef.AddString(list);\r
+       if(this->m_CurrentBranch.IsEmpty())\r
+       {\r
+               m_CurrentBranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());\r
+       }\r
+\r
        m_ChooseRef.SetMaxHistoryItems(0x7FFFFFFF);\r
+       this->m_ChooseRef.AddString(list);\r
+       \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] == m_CurrentBranch)\r
+               {\r
+                       m_ChooseRef.SetCurSel(i);\r
+                       break;\r
+               }\r
+       }\r
+\r
+       OnCbnSelchangeRef();\r
+\r
        return TRUE;\r
 }\r
 // CRefLogDlg message handlers\r
@@ -65,5 +91,32 @@ void CRefLogDlg::OnBnClickedOk()
 \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