OSDN Git Service

PATCH: [ 1153091 ] Fix selecting default font from View menu
authorKimmo Varis <kimmov@gmail.com>
Mon, 28 Feb 2005 17:11:35 +0000 (17:11 +0000)
committerKimmo Varis <kimmov@gmail.com>
Mon, 28 Feb 2005 17:11:35 +0000 (17:11 +0000)
Src/MainFrm.cpp
Src/MainFrm.h
Src/OptionsDef.h
Src/readme.txt

index 2f56d26..536bf4e 100644 (file)
@@ -163,7 +163,6 @@ static const TCHAR DocsURL[] = _T("http://winmerge.org/2.2/manual/index.html");
  */
 CMainFrame::CMainFrame()
 {
-       m_bFontSpecified=FALSE;
        m_strSaveAsPath = _T("");
        m_bFirstTime = TRUE;
        m_bEscShutdown = FALSE;
@@ -241,6 +240,8 @@ CMainFrame::CMainFrame()
        m_options.InitOption(OPT_CP_DEFAULT_CUSTOM, (int)GetACP());
        m_options.InitOption(OPT_CP_DETECT, false);
 
+       m_options.InitOption(OPT_FONT_FILECMP_USECUSTOM, false);
+
        updateDefaultCodepage(&m_options);
 
        m_bShowErrors = TRUE;
@@ -1577,6 +1578,12 @@ int CMainFrame::SyncFileToVCS(LPCTSTR pszSrc, LPCTSTR pszDest,
        return nRetVal;
 }
 
+/**
+ * @brief Select font for Merge view
+ * 
+ * Shows font selection dialog to user, sets current font and saves
+ * selected font properties to registry.
+ */
 void CMainFrame::OnViewSelectfont() 
 {
        CHOOSEFONT cf;
@@ -1588,8 +1595,7 @@ void CMainFrame::OnViewSelectfont()
        cf.lpLogFont = &m_lfDiff;
        if (ChooseFont(&cf))
        {
-               m_bFontSpecified = TRUE;
-               theApp.WriteProfileInt(_T("Font"), _T("Specified"), m_bFontSpecified);
+               m_options.SaveOption(OPT_FONT_FILECMP_USECUSTOM, true);
                theApp.WriteProfileInt(_T("Font"), _T("Height"), m_lfDiff.lfHeight);
                theApp.WriteProfileInt(_T("Font"), _T("Width"), m_lfDiff.lfWidth);
                theApp.WriteProfileInt(_T("Font"), _T("Escapement"), m_lfDiff.lfEscapement);
@@ -1622,6 +1628,13 @@ void CMainFrame::OnViewSelectfont()
        }
 }
 
+/**
+ * @brief Selects font for Merge view.
+ *
+ * Cheks if default font or user-selected font should be used in
+ * Merge view and sets correct font properties. Loads user-selected
+ * font properties from registry if needed.
+ */
 void CMainFrame::GetFontProperties()
 {
        LOGFONT lfDefault;
@@ -1646,31 +1659,40 @@ void CMainFrame::GetFontProperties()
                lfDefault.lfPitchAndFamily = FF_MODERN | FIXED_PITCH;
                _tcscpy(lfDefault.lfFaceName, _T("Courier"));
        }
-       m_lfDiff.lfHeight = theApp.GetProfileInt(_T("Font"), _T("Height"), lfDefault.lfHeight);
-       m_lfDiff.lfWidth = theApp.GetProfileInt(_T("Font"), _T("Width"), lfDefault.lfWidth);
-       m_lfDiff.lfEscapement = theApp.GetProfileInt(_T("Font"), _T("Escapement"), lfDefault.lfEscapement);
-       m_lfDiff.lfOrientation = theApp.GetProfileInt(_T("Font"), _T("Orientation"), lfDefault.lfOrientation);
-       m_lfDiff.lfWeight = theApp.GetProfileInt(_T("Font"), _T("Weight"), lfDefault.lfWeight);
-       m_lfDiff.lfItalic = (BYTE)theApp.GetProfileInt(_T("Font"), _T("Italic"), lfDefault.lfItalic);
-       m_lfDiff.lfUnderline = (BYTE)theApp.GetProfileInt(_T("Font"), _T("Underline"), lfDefault.lfUnderline);
-       m_lfDiff.lfStrikeOut = (BYTE)theApp.GetProfileInt(_T("Font"), _T("StrikeOut"), lfDefault.lfStrikeOut);
-       m_lfDiff.lfCharSet = (BYTE)theApp.GetProfileInt(_T("Font"), _T("CharSet"), lfDefault.lfCharSet);
-       m_lfDiff.lfOutPrecision = (BYTE)theApp.GetProfileInt(_T("Font"), _T("OutPrecision"), lfDefault.lfOutPrecision);
-       m_lfDiff.lfClipPrecision = (BYTE)theApp.GetProfileInt(_T("Font"), _T("ClipPrecision"), lfDefault.lfClipPrecision);
-       m_lfDiff.lfQuality = (BYTE)theApp.GetProfileInt(_T("Font"), _T("Quality"), lfDefault.lfQuality);
-       m_lfDiff.lfPitchAndFamily = (BYTE)theApp.GetProfileInt(_T("Font"), _T("PitchAndFamily"), lfDefault.lfPitchAndFamily);
-       _tcscpy(m_lfDiff.lfFaceName, theApp.GetProfileString(_T("Font"), _T("FaceName"), lfDefault.lfFaceName));
+
+       bool bUseCustom = m_options.GetBool(OPT_FONT_FILECMP_USECUSTOM);
+
+       if (bUseCustom)
+       {
+               m_lfDiff.lfHeight = theApp.GetProfileInt(_T("Font"), _T("Height"), lfDefault.lfHeight);
+               m_lfDiff.lfWidth = theApp.GetProfileInt(_T("Font"), _T("Width"), lfDefault.lfWidth);
+               m_lfDiff.lfEscapement = theApp.GetProfileInt(_T("Font"), _T("Escapement"), lfDefault.lfEscapement);
+               m_lfDiff.lfOrientation = theApp.GetProfileInt(_T("Font"), _T("Orientation"), lfDefault.lfOrientation);
+               m_lfDiff.lfWeight = theApp.GetProfileInt(_T("Font"), _T("Weight"), lfDefault.lfWeight);
+               m_lfDiff.lfItalic = (BYTE)theApp.GetProfileInt(_T("Font"), _T("Italic"), lfDefault.lfItalic);
+               m_lfDiff.lfUnderline = (BYTE)theApp.GetProfileInt(_T("Font"), _T("Underline"), lfDefault.lfUnderline);
+               m_lfDiff.lfStrikeOut = (BYTE)theApp.GetProfileInt(_T("Font"), _T("StrikeOut"), lfDefault.lfStrikeOut);
+               m_lfDiff.lfCharSet = (BYTE)theApp.GetProfileInt(_T("Font"), _T("CharSet"), lfDefault.lfCharSet);
+               m_lfDiff.lfOutPrecision = (BYTE)theApp.GetProfileInt(_T("Font"), _T("OutPrecision"), lfDefault.lfOutPrecision);
+               m_lfDiff.lfClipPrecision = (BYTE)theApp.GetProfileInt(_T("Font"), _T("ClipPrecision"), lfDefault.lfClipPrecision);
+               m_lfDiff.lfQuality = (BYTE)theApp.GetProfileInt(_T("Font"), _T("Quality"), lfDefault.lfQuality);
+               m_lfDiff.lfPitchAndFamily = (BYTE)theApp.GetProfileInt(_T("Font"), _T("PitchAndFamily"), lfDefault.lfPitchAndFamily);
+               _tcscpy(m_lfDiff.lfFaceName, theApp.GetProfileString(_T("Font"), _T("FaceName"), lfDefault.lfFaceName));
+       }
+       else
+               m_lfDiff = lfDefault;
 }
 
 void CMainFrame::OnViewUsedefaultfont() 
 {
-       m_bFontSpecified=FALSE;
-       theApp.WriteProfileInt(_T("Font"), _T("Specified"), m_bFontSpecified);
+       m_options.SaveOption(OPT_FONT_FILECMP_USECUSTOM, false);
+       GetFontProperties();
 }
 
 void CMainFrame::OnUpdateViewUsedefaultfont(CCmdUI* pCmdUI) 
 {
-       pCmdUI->Enable(m_bFontSpecified);
+       bool bEnable = m_options.GetBool(OPT_FONT_FILECMP_USECUSTOM);
+       pCmdUI->Enable(bEnable);
 }
 
 /**
index d0ad995..4f23ced 100644 (file)
@@ -89,7 +89,6 @@ public:
 public:        
        BOOL m_bShowErrors;
        LOGFONT m_lfDiff;
-       BOOL m_bFontSpecified;
        BOOL m_bReuseDirDoc; // policy to reuse existing dir doc
 
 // Operations
index 0cfacce..d0b4be9 100644 (file)
@@ -94,4 +94,7 @@ const TCHAR OPT_LINEFILTER_REGEXP[] = _T("Settings/RegExps");
 /// Currently selected filefilter
 const TCHAR OPT_FILEFILTER_CURRENT[] = _T("Settings/FileFilterCurrent");
 
+// Fonts
+const TCHAR OPT_FONT_FILECMP_USECUSTOM[] = _T("Font/Specified");
+
 #endif // _OPTIONS_DEF_H_
index 6a5e265..25c4087 100644 (file)
@@ -1,3 +1,7 @@
+2005-02-28 Kimmo
+ PATCH: [ 1153091 ] Fix selecting default font from View menu
+  Src: MainFrm.cpp MainFrm.h OptionsDef.h
+
 2005-02-28 Perry
  BUG: [ 1039158 ] Confusing EOL differences messagebox
   Src: Merge.rc