blind fix for clearing font attributes in SetStyle()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -65,6 +65,10 @@
|
|||||||
#define CFM_CHARSET 0x08000000
|
#define CFM_CHARSET 0x08000000
|
||||||
#endif // CFM_CHARSET
|
#endif // CFM_CHARSET
|
||||||
|
|
||||||
|
#ifndef CFM_BACKCOLOR
|
||||||
|
#define CFM_BACKCOLOR 0x04000000
|
||||||
|
#endif
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// private classes
|
// private classes
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -1267,7 +1271,8 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
|
|||||||
|
|
||||||
if ( style.HasFont() )
|
if ( style.HasFont() )
|
||||||
{
|
{
|
||||||
cf.dwMask |= CFM_FACE | CFM_SIZE | CFM_CHARSET;
|
cf.dwMask |= CFM_FACE | CFM_SIZE | CFM_CHARSET |
|
||||||
|
CFM_ITALIC | CFM_BOLD | CFM_UNDERLINE;
|
||||||
|
|
||||||
// fill in data from LOGFONT but recalculate lfHeight because we need
|
// fill in data from LOGFONT but recalculate lfHeight because we need
|
||||||
// the real height in twips and not the negative number which
|
// the real height in twips and not the negative number which
|
||||||
@@ -1280,22 +1285,21 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
|
|||||||
cf.bPitchAndFamily = lf.lfPitchAndFamily;
|
cf.bPitchAndFamily = lf.lfPitchAndFamily;
|
||||||
wxStrncpy( cf.szFaceName, lf.lfFaceName, WXSIZEOF(cf.szFaceName) );
|
wxStrncpy( cf.szFaceName, lf.lfFaceName, WXSIZEOF(cf.szFaceName) );
|
||||||
|
|
||||||
// also deal with underline/italic/bold attributes
|
// also deal with underline/italic/bold attributes: note that we must
|
||||||
|
// always set CFM_ITALIC &c bits in dwMask, even if we don't set the
|
||||||
|
// style to allow clearing it
|
||||||
if ( lf.lfItalic )
|
if ( lf.lfItalic )
|
||||||
{
|
{
|
||||||
cf.dwMask |= CFM_ITALIC;
|
|
||||||
cf.dwEffects |= CFE_ITALIC;
|
cf.dwEffects |= CFE_ITALIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( lf.lfWeight == FW_BOLD )
|
if ( lf.lfWeight == FW_BOLD )
|
||||||
{
|
{
|
||||||
cf.dwMask |= CFM_BOLD;
|
|
||||||
cf.dwEffects |= CFE_BOLD;
|
cf.dwEffects |= CFE_BOLD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( lf.lfUnderline )
|
if ( lf.lfUnderline )
|
||||||
{
|
{
|
||||||
cf.dwMask |= CFM_UNDERLINE;
|
|
||||||
cf.dwEffects |= CFE_UNDERLINE;
|
cf.dwEffects |= CFE_UNDERLINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1309,16 +1313,13 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_RICHEDIT2
|
#if wxUSE_RICHEDIT2
|
||||||
#ifndef CFM_BACKCOLOR
|
|
||||||
#define CFM_BACKCOLOR 0x04000000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( wxRichEditModule::GetLoadedVersion() > 1 && style.HasBackgroundColour() )
|
if ( wxRichEditModule::GetLoadedVersion() > 1 && style.HasBackgroundColour() )
|
||||||
{
|
{
|
||||||
cf.dwMask |= CFM_BACKCOLOR;
|
cf.dwMask |= CFM_BACKCOLOR;
|
||||||
cf.crBackColor = wxColourToRGB(style.GetBackgroundColour());
|
cf.crBackColor = wxColourToRGB(style.GetBackgroundColour());
|
||||||
}
|
}
|
||||||
#endif
|
#endif // wxUSE_RICHEDIT2
|
||||||
|
|
||||||
// do format the selection
|
// do format the selection
|
||||||
bool ok = ::SendMessage(GetHwnd(), EM_SETCHARFORMAT,
|
bool ok = ::SendMessage(GetHwnd(), EM_SETCHARFORMAT,
|
||||||
SCF_SELECTION, (LPARAM)&cf) != 0;
|
SCF_SELECTION, (LPARAM)&cf) != 0;
|
||||||
|
Reference in New Issue
Block a user