Implement setting default wxTextCtrl style in wxOSX.

Use NSTextView setTypingAttributes to change the attributes used for the new
text by default as setting them for the selected region didn't do anything
useful under OS X (and did nothing at all when there was no selection).

Closes #12839.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72892 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-11-04 23:53:06 +00:00
parent dfc9124f08
commit 1659164a6f
2 changed files with 20 additions and 4 deletions

View File

@ -606,6 +606,7 @@ wxOSX/Cocoa:
- Implement image support in wxNotebook (Malcolm MacLeod).
- Add support for button mnemonics (joostn).
- Implemented wxTextCtrl::SetDefaultStyle().
2.9.4: (released 2012-07-09)

View File

@ -688,10 +688,25 @@ void wxNSTextViewControl::SetStyle(long start,
long end,
const wxTextAttr& style)
{
if (m_textView) {
if ( !m_textView )
return;
if ( start == -1 && end == -1 )
{
NSMutableDictionary* const
attrs = [NSMutableDictionary dictionaryWithCapacity:3];
if ( style.HasFont() )
[attrs setValue:style.GetFont().OSXGetNSFont() forKey:NSFontAttributeName];
if ( style.HasBackgroundColour() )
[attrs setValue:style.GetBackgroundColour().OSXGetNSColor() forKey:NSBackgroundColorAttributeName];
if ( style.HasTextColour() )
[attrs setValue:style.GetTextColour().OSXGetNSColor() forKey:NSForegroundColorAttributeName];
[m_textView setTypingAttributes:attrs];
}
else // Set the attributes just for this range.
{
NSRange range = NSMakeRange(start, end-start);
if (start == -1 && end == -1)
range = [m_textView selectedRange];
NSTextStorage* storage = [m_textView textStorage];
if ( style.HasFont() )
@ -699,7 +714,7 @@ void wxNSTextViewControl::SetStyle(long start,
if ( style.HasBackgroundColour() )
[storage addAttribute:NSBackgroundColorAttributeName value:style.GetBackgroundColour().OSXGetNSColor() range:range];
if ( style.HasTextColour() )
[storage addAttribute:NSForegroundColorAttributeName value:style.GetTextColour().OSXGetNSColor() range:range];
}