OSDN Git Service

Diff file list dialog click log is okay
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / FileDiffDlg.cpp
index 7a0ac48..c9c8fed 100644 (file)
@@ -32,6 +32,8 @@
 #include ".\filediffdlg.h"\r
 #include "gitdiff.h"\r
 #include "CommonResource.h"\r
+#include "BrowseRefsDlg.h"\r
+#include "LogDlg.h"\r
 \r
 #define ID_COMPARE 1\r
 #define ID_BLAME 2\r
@@ -1068,33 +1070,56 @@ bool CFileDiffDlg::SortCompare(const CTGitPath*& Data1, const CTGitPath*& Data2)
 \r
 void CFileDiffDlg::OnBnClickedRev1btn()\r
 {\r
-#if 0\r
-       if (m_bThreadRunning)\r
-               return; // do nothing as long as the thread is still running\r
+       \r
+       ClickRevButton(&this->m_cRev1Btn,&this->m_rev1, &this->m_ctrRev1Edit);\r
 \r
-       // show a dialog where the user can enter a revision\r
-       CRevisionDlg dlg(this);\r
-       dlg.AllowWCRevs(false);\r
-       *((GitRev*)&dlg) = m_rev1;\r
+}\r
 \r
-       if (dlg.DoModal() == IDOK)\r
+void CFileDiffDlg::ClickRevButton(CMenuButton *button, GitRev *rev, CEdit *edit)\r
+{\r
+       int entry=button->GetCurrentEntry();\r
+       if(entry == 0) /* Browse Refence*/\r
        {\r
-               m_rev1 = dlg;\r
-               m_cRev1Btn.SetWindowText(m_rev1.ToString());\r
-               m_cFileList.DeleteAllItems();\r
-               // start a new thread to re-fetch the diff\r
-               InterlockedExchange(&m_bThreadRunning, TRUE);\r
-               if (AfxBeginThread(DiffThreadEntry, this)==NULL)\r
                {\r
-                       InterlockedExchange(&m_bThreadRunning, FALSE);\r
-                       CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
+                       CString str = CBrowseRefsDlg::PickRef();\r
+                       if(str.IsEmpty())\r
+                               return;\r
+                       \r
+                       if(FillRevFromString(rev,str))\r
+                               return;\r
+\r
+                       edit->SetWindowText(str);\r
                }\r
        }\r
-#endif\r
+\r
+       if(entry == 1) /*Log*/\r
+       {\r
+               CLogDlg dlg;\r
+               dlg.SetSelect(true);\r
+               if(dlg.DoModal() == IDOK)\r
+               {\r
+                       if( dlg.GetSelectedHash().IsEmpty() )\r
+                               return;\r
+\r
+                       if(FillRevFromString(rev,dlg.GetSelectedHash()))\r
+                               return;\r
+\r
+                       edit->SetWindowText(dlg.GetSelectedHash());\r
+\r
+               }else\r
+                       return;\r
+       }\r
+\r
+       if(entry == 2) /*RefLog*/\r
+       {\r
+       }\r
+\r
+       SetURLLabels();\r
 }\r
 \r
 void CFileDiffDlg::OnBnClickedRev2btn()\r
 {\r
+       ClickRevButton(&this->m_cRev2Btn,&this->m_rev2, &this->m_ctrRev2Edit);\r
 #if 0\r
        if (m_bThreadRunning)\r
                return; // do nothing as long as the thread is still running\r