X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/715824d58d26ed7df8d55e60ae29b3d2f7966d4e..0738b901b17340f09766524b8d9d79e9ed1268e7:/src/osx/cocoa/textctrl.mm diff --git a/src/osx/cocoa/textctrl.mm b/src/osx/cocoa/textctrl.mm index 13b2d97897..e0bdfdfd20 100644 --- a/src/osx/cocoa/textctrl.mm +++ b/src/osx/cocoa/textctrl.mm @@ -59,7 +59,8 @@ class wxMacEditHelper public : wxMacEditHelper( NSView* textView ) { - m_textView = textView ; + m_textView = textView; + m_formerState = YES; if ( textView ) { m_formerState = [textView isEditable]; @@ -422,12 +423,51 @@ void wxNSTextViewControl::WriteText(const wxString& str) m_lastKeyDownEvent = formerEvent; } -void wxNSTextViewControl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack ) +void wxNSTextViewControl::SetFont( const wxFont & font , const wxColour& WXUNUSED(foreground) , long WXUNUSED(windowStyle), bool WXUNUSED(ignoreBlack) ) { if ([m_textView respondsToSelector:@selector(setFont:)]) [m_textView setFont: font.OSXGetNSFont()]; } +bool wxNSTextViewControl::GetStyle(long position, wxTextAttr& style) +{ + if (m_textView) { + NSTextStorage* storage = [m_textView textStorage]; + NSFont* font = [storage attribute:NSFontAttributeName atIndex:position effectiveRange:NULL]; + if (font) + style.SetFont(wxFont(font)); + NSColor* bgcolor = [storage attribute:NSBackgroundColorAttributeName atIndex:position effectiveRange:NULL]; + if (bgcolor) + style.SetBackgroundColour(wxColour(bgcolor)); + NSColor* fgcolor = [storage attribute:NSForegroundColorAttributeName atIndex:position effectiveRange:NULL]; + style.SetTextColour(wxColour(fgcolor)); + return true; + } + + return false; +} + +void wxNSTextViewControl::SetStyle(long start, + long end, + const wxTextAttr& style) +{ + if (m_textView) { + NSRange range = NSMakeRange(start, end-start); + NSTextStorage* storage = [m_textView textStorage]; + + wxFont font = style.GetFont(); + if (font.IsOk()) + [storage addAttribute:NSFontAttributeName value:style.GetFont().OSXGetNSFont() range:range]; + + wxColour bgcolor = style.GetBackgroundColour(); + if (bgcolor.IsOk()) + [storage addAttribute:NSBackgroundColorAttributeName value:bgcolor.OSXGetNSColor() range:range]; + + wxColour fgcolor = style.GetTextColour(); + if (fgcolor.IsOk()) + [storage addAttribute:NSForegroundColorAttributeName value:fgcolor.OSXGetNSColor() range:range]; + } +} // wxNSTextFieldControl @@ -581,7 +621,7 @@ void wxNSTextFieldControl::controlAction(WXWidget WXUNUSED(slf), wxWidgetImplType* wxWidgetImpl::CreateTextControl( wxTextCtrl* wxpeer, wxWindowMac* WXUNUSED(parent), wxWindowID WXUNUSED(id), - const wxString& str, + const wxString& WXUNUSED(str), const wxPoint& pos, const wxSize& size, long style, @@ -595,7 +635,6 @@ wxWidgetImplType* wxWidgetImpl::CreateTextControl( wxTextCtrl* wxpeer, wxNSTextScrollView* v = nil; v = [[wxNSTextScrollView alloc] initWithFrame:r]; c = new wxNSTextViewControl( wxpeer, v ); - static_cast(c)->SetStringValue(str); } else { @@ -615,7 +654,6 @@ wxWidgetImplType* wxWidgetImpl::CreateTextControl( wxTextCtrl* wxpeer, [v setBordered:NO]; c = new wxNSTextFieldControl( wxpeer, v ); - static_cast(c)->SetStringValue(str); } return c;