Improve underline changes of wxTextCtrl

Get rid of m_fontUnderlined, use m_fontUnderlineType instead.
Bugfixes in wxMSW, wxGTK and wxOSX code.
Show more underline usage in the text sample.
This commit is contained in:
Maarten Bent
2019-07-06 13:47:00 +02:00
parent f99ae84d7c
commit 4afea28aab
7 changed files with 126 additions and 128 deletions

View File

@@ -1089,35 +1089,31 @@ void wxNSTextViewControl::SetStyle(long start,
[attrs setValue:style.GetBackgroundColour().OSXGetNSColor() forKey:NSBackgroundColorAttributeName];
if ( style.HasTextColour() )
[attrs setValue:style.GetTextColour().OSXGetNSColor() forKey:NSForegroundColorAttributeName];
if ( style.GetUnderlineType() )
if ( style.HasFontUnderlined() )
{
wxTextAttrUnderlineType underlineType = style.GetUnderlineType();
switch ( underlineType )
switch ( style.GetUnderlineType() )
{
case wxTEXT_ATTR_UNDERLINE_NONE:
[attrs setObject:[NSNumber numberWithInt:( NSUnderlineStyleNone )] forKey:NSUnderlineStyleAttributeName];
break;
case wxTEXT_ATTR_UNDERLINE_SOLID:
[attrs setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle | NSUnderlineStyleSingle )] forKey:NSUnderlineStyleAttributeName];
[attrs setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle )] forKey:NSUnderlineStyleAttributeName];
break;
case wxTEXT_ATTR_UNDERLINE_DOUBLE:
[attrs setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle | NSUnderlineStyleDouble )] forKey:NSUnderlineStyleAttributeName];
[attrs setObject:[NSNumber numberWithInt:( NSUnderlineStyleDouble )] forKey:NSUnderlineStyleAttributeName];
break;
case wxTEXT_ATTR_UNDERLINE_WAVE:
[attrs setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle | NSUnderlinePatternDot )] forKey:NSUnderlineStyleAttributeName];
break;
}
wxColour color = style.GetUnderlineColour();
if ( !color.IsOk() )
wxColour colour = style.GetUnderlineColour();
if ( colour.IsOk() )
{
color = style.GetTextColour();
if ( !color.IsOk() )
color = *wxBLACK;
[attrs setValue:colour.OSXGetNSColor() forKey:NSUnderlineColorAttributeName];
}
[attrs setValue:color.OSXGetNSColor() forKey:NSUnderlineColorAttributeName];
}
[m_textView setTypingAttributes:attrs];
}
@@ -1138,26 +1134,29 @@ void wxNSTextViewControl::SetStyle(long start,
if( style.HasFontUnderlined() )
{
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
if( style.GetUnderlineType() == wxTEXT_ATTR_UNDERLINE_NONE )
[dict setObject:[NSNumber numberWithInt:(NSUnderlineStyleNone)] forKey:NSUnderlineStyleAttributeName];
if( style.GetUnderlineType() == wxTEXT_ATTR_UNDERLINE_SOLID )
[dict setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle )] forKey:NSUnderlineStyleAttributeName];
if( style.GetUnderlineType() == wxTEXT_ATTR_UNDERLINE_DOUBLE )
[dict setObject:[NSNumber numberWithInt:( NSUnderlineStyleDouble )] forKey:NSUnderlineStyleAttributeName];
if( style.GetUnderlineType() == wxTEXT_ATTR_UNDERLINE_WAVE )
[dict setObject:[NSNumber numberWithInt:( NSUnderlinePatternDot )] forKey:NSUnderlineStyleAttributeName];
wxColour color = style.GetUnderlineColour();
if( !color.IsOk() )
switch ( style.GetUnderlineType() )
{
color = style.GetTextColour();
if( !color.IsOk() )
color = *wxBLACK;
}
[dict setValue:color.OSXGetNSColor() forKey:NSUnderlineColorAttributeName];
case wxTEXT_ATTR_UNDERLINE_NONE:
[dict setObject:[NSNumber numberWithInt:( NSUnderlineStyleNone )] forKey:NSUnderlineStyleAttributeName];
break;
case wxTEXT_ATTR_UNDERLINE_SOLID:
[dict setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle )] forKey:NSUnderlineStyleAttributeName];
break;
case wxTEXT_ATTR_UNDERLINE_DOUBLE:
[dict setObject:[NSNumber numberWithInt:( NSUnderlineStyleDouble )] forKey:NSUnderlineStyleAttributeName];
break;
case wxTEXT_ATTR_UNDERLINE_WAVE:
[dict setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle | NSUnderlinePatternDot )] forKey:NSUnderlineStyleAttributeName];
break;
}
wxColour colour = style.GetUnderlineColour();
if ( colour.IsOk() )
{
[dict setValue:colour.OSXGetNSColor() forKey:NSUnderlineColorAttributeName];
}
[storage addAttributes:dict range:range];
[dict release];
}