OSDN Git Service

Auto List okay for Diff dialog
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / FileDiffDlg.cpp
index 1286648..4613889 100644 (file)
@@ -53,6 +53,7 @@ CFileDiffDlg::CFileDiffDlg(CWnd* pParent /*=NULL*/)
        m_pProgDlg(NULL),\r
        m_bCancelled(false)\r
 {\r
+       m_bLoadingRef=FALSE;\r
 }\r
 \r
 CFileDiffDlg::~CFileDiffDlg()\r
@@ -90,6 +91,7 @@ BEGIN_MESSAGE_MAP(CFileDiffDlg, CResizableStandAloneDialog)
        ON_WM_TIMER()\r
        ON_EN_CHANGE(IDC_REV1EDIT, &CFileDiffDlg::OnEnChangeRev1edit)\r
        ON_EN_CHANGE(IDC_REV2EDIT, &CFileDiffDlg::OnEnChangeRev2edit)\r
+       ON_MESSAGE(MSG_REF_LOADED, OnRefLoad)\r
 END_MESSAGE_MAP()\r
 \r
 \r
@@ -250,6 +252,14 @@ BOOL CFileDiffDlg::OnInitDialog()
                CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
        }\r
 \r
+       InterlockedExchange(&m_bLoadingRef, TRUE);\r
+       if (AfxBeginThread(LoadRefThreadEntry, this)==NULL)\r
+       {\r
+               InterlockedExchange(&m_bLoadingRef, FALSE);\r
+               CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
+       }\r
+\r
+\r
        this->m_cRev1Btn.AddEntry(_T("RefBrowse"));\r
        this->m_cRev1Btn.AddEntry(_T("Log"));\r
        this->m_cRev1Btn.AddEntry(_T("RefLog"));\r
@@ -373,7 +383,6 @@ void CFileDiffDlg::EnableInputControl(bool b)
        this->m_cRev2Btn.EnableWindow(b);\r
        m_cFilter.EnableWindow(b);\r
        m_SwitchButton.EnableWindow(b);\r
-       \r
 }\r
 \r
 void CFileDiffDlg::DoDiff(int selIndex, bool blame)\r
@@ -668,6 +677,16 @@ void CFileDiffDlg::OnNMCustomdrawFilelist(NMHDR *pNMHDR, LRESULT *pResult)
        }\r
 }\r
 \r
+UINT CFileDiffDlg::LoadRefThread()\r
+{\r
+       g_Git.GetBranchList(m_Reflist,NULL,CGit::BRANCH_ALL);\r
+       g_Git.GetTagList(m_Reflist);\r
+\r
+       this->PostMessage(MSG_REF_LOADED);\r
+       InterlockedExchange(&m_bLoadingRef, FALSE);\r
+       return 0;\r
+}\r
+\r
 void CFileDiffDlg::OnContextMenu(CWnd* pWnd, CPoint point)\r
 {\r
        if ((pWnd==0)||(pWnd != &m_cFileList))\r
@@ -1284,3 +1303,18 @@ void CFileDiffDlg::OnEnChangeRev2edit()
 \r
        // TODO:  Add your control notification handler code here\r
 }\r
+\r
+LRESULT CFileDiffDlg::OnRefLoad(WPARAM wParam, LPARAM lParam)\r
+{\r
+       for(int i=0;i<m_Reflist.size();i++)\r
+       {\r
+               CString str=m_Reflist[i];\r
+               \r
+               if(str.Find(_T("remotes/")) == 0)\r
+                       str=str.Mid(8);\r
+\r
+               m_ctrRev1Edit.AddSearchString(str);\r
+               m_ctrRev2Edit.AddSearchString(str);\r
+       }\r
+       return 0;\r
+}\r