OSDN Git Service

Add bugtraq to support commit dialog bug track.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / LogDlg.cpp
index 7be01d9..2a209e8 100644 (file)
@@ -45,7 +45,7 @@
 //#include "RepositoryInfo.h"\r
 //#include "EditPropertiesDlg.h"\r
 #include "FileDiffDlg.h"\r
-\r
+#include "BrowseRefsDlg.h"\r
 \r
 const UINT CLogDlg::m_FindDialogMessage = RegisterWindowMessage(FINDMSGSTRING);\r
 \r
@@ -144,6 +144,7 @@ BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog)
        ON_WM_SIZE()\r
        ON_BN_CLICKED(IDC_LOG_FIRSTPARENT, &CLogDlg::OnBnClickedFirstParent)\r
        ON_BN_CLICKED(IDC_REFRESH, &CLogDlg::OnBnClickedRefresh)\r
+       ON_BN_CLICKED(IDC_BUTTON_BROWSE_REF, &CLogDlg::OnBnClickedBrowseRef)\r
        ON_COMMAND(ID_LOGDLG_REFRESH,&CLogDlg::OnRefresh)\r
        ON_COMMAND(ID_LOGDLG_FIND,&CLogDlg::OnFind)\r
        ON_COMMAND(ID_LOGDLG_FOCUSFILTER,&CLogDlg::OnFocusFilter)\r
@@ -170,7 +171,7 @@ BOOL CLogDlg::OnInitDialog()
 \r
        m_hAccel = LoadAccelerators(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_ACC_LOGDLG));\r
 \r
-       \r
+\r
        // use the state of the "stop on copy/rename" option from the last time\r
        UpdateData(FALSE);\r
        \r
@@ -236,6 +237,8 @@ BOOL CLogDlg::OnInitDialog()
        m_DateTo.SendMessage(DTM_SETMCSTYLE, 0, MCS_WEEKNUMBERS|MCS_NOTODAY|MCS_NOTRAILINGDATES|MCS_NOSELCHANGEONNAV);\r
 \r
        // resizable stuff\r
+       AddAnchor(IDC_STATIC_REF, TOP_LEFT);\r
+       AddAnchor(IDC_BUTTON_BROWSE_REF, TOP_LEFT);\r
        AddAnchor(IDC_FROMLABEL, TOP_LEFT);\r
        AddAnchor(IDC_DATEFROM, TOP_LEFT);\r
        AddAnchor(IDC_TOLABEL, TOP_LEFT);\r
@@ -331,6 +334,8 @@ BOOL CLogDlg::OnInitDialog()
        m_LogList.FetchLogAsync(this);\r
 \r
        GetDlgItem(IDC_LOGLIST)->SetFocus();\r
+\r
+       ShowStartRef();\r
        return FALSE;\r
 }\r
 \r
@@ -2923,6 +2928,7 @@ void CLogDlg::OnSize(UINT nType, int cx, int cy)
 void CLogDlg::OnRefresh()\r
 {\r
        //if (GetDlgItem(IDC_GETALL)->IsWindowEnabled())\r
+       ShowStartRef();\r
        {\r
                m_limit = 0;\r
                this->m_LogProgress.SetPos(0);\r
@@ -3042,6 +3048,54 @@ void CLogDlg::OnBnClickedAllBranch()
        FillLogMessageCtrl(false);\r
 }\r
 \r
+void CLogDlg::OnBnClickedBrowseRef()\r
+{\r
+       CString newRef = CBrowseRefsDlg::PickRef(false,m_LogList.GetStartRef());        \r
+       if(newRef.IsEmpty())\r
+               return;\r
+\r
+       SetStartRef(newRef);\r
+       ((CButton*)GetDlgItem(IDC_LOG_ALLBRANCH))->SetCheck(0);\r
+\r
+       OnBnClickedAllBranch();\r
+}\r
+\r
+void CLogDlg::ShowStartRef()\r
+{\r
+       //Show ref name on top\r
+       if(!::IsWindow(m_hWnd))\r
+               return;\r
+       if(m_bAllBranch)\r
+       {\r
+               GetDlgItem(IDC_STATIC_REF)->SetWindowText(L"<All Branches>");\r
+               return;\r
+       }\r
+\r
+       CString showStartRef = m_LogList.GetStartRef();\r
+       if(showStartRef.IsEmpty())\r
+       {\r
+               //Ref name is HEAD\r
+               g_Git.Run(L"git symbolic-ref HEAD",&showStartRef,CP_UTF8);\r
+               showStartRef.Trim(L"\r\n\t ");\r
+       }\r
+\r
+\r
+       if(wcsncmp(showStartRef,L"refs/",5) == 0)\r
+               showStartRef = showStartRef.Mid(5);\r
+       if(wcsncmp(showStartRef,L"heads/",6) == 0)\r
+               showStartRef = showStartRef.Mid(6);\r
+\r
+       GetDlgItem(IDC_STATIC_REF)->SetWindowText(showStartRef);\r
+}\r
+\r
+void CLogDlg::SetStartRef(const CString& StartRef)\r
+{\r
+       m_LogList.SetStartRef(StartRef);\r
+\r
+       ShowStartRef();\r
+}\r
+\r
+\r
 \r
 void CLogDlg::OnBnClickedFirstParent()\r
 {\r