From 5e5ffad0b85a36568f8d992a94d509d7dd969207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Wed, 19 Oct 2016 16:55:59 +0200 Subject: [PATCH] Respect item font when rendering markup (wxOSX) Respect per-item attributes and namely the font (which may differ from the control's font) when rendering markup items in wxDataViewCtrl. --- include/wx/osx/cocoa/private/markuptoattr.h | 6 +++--- src/osx/cocoa/button.mm | 2 +- src/osx/cocoa/dataview.mm | 2 +- src/osx/cocoa/stattext.mm | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/wx/osx/cocoa/private/markuptoattr.h b/include/wx/osx/cocoa/private/markuptoattr.h index 1d23d8e3b4..7ca0722ed4 100644 --- a/include/wx/osx/cocoa/private/markuptoattr.h +++ b/include/wx/osx/cocoa/private/markuptoattr.h @@ -22,8 +22,8 @@ public: // We don't care about the original colours because we never use them but // we do need the correct initial font as we apply modifiers (e.g. create a // font larger than it) to it and so it must be valid. - wxMarkupToAttrString(wxWindow *win, const wxString& markup) - : wxMarkupParserAttrOutput(win->GetFont(), wxColour(), wxColour()) + wxMarkupToAttrString(const wxFont& font, const wxString& markup) + : wxMarkupParserAttrOutput(font, wxColour(), wxColour()) { const wxCFStringRef label(wxControl::RemoveMnemonics(wxMarkupParser::Strip(markup))); @@ -39,7 +39,7 @@ public: // default which is different from the system "Lucida Grande" font. So // we need to explicitly change the font for the entire string. [m_attrString addAttribute:NSFontAttributeName - value:win->GetFont().OSXGetNSFont() + value:font.OSXGetNSFont() range:NSMakeRange(0, [m_attrString length])]; // Now translate the markup tags to corresponding attributes. diff --git a/src/osx/cocoa/button.mm b/src/osx/cocoa/button.mm index a0cfe24a6c..a63c37c7c1 100644 --- a/src/osx/cocoa/button.mm +++ b/src/osx/cocoa/button.mm @@ -107,7 +107,7 @@ void wxButtonCocoaImpl::SetBitmap(const wxBitmap& bitmap) #if wxUSE_MARKUP void wxButtonCocoaImpl::SetLabelMarkup(const wxString& markup) { - wxMarkupToAttrString toAttr(GetWXPeer(), markup); + wxMarkupToAttrString toAttr(GetWXPeer()->GetFont(), markup); NSMutableAttributedString *attrString = toAttr.GetNSAttributedString(); // Button text is always centered. diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index 252b3b9c1f..fac25931ab 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -2829,7 +2829,7 @@ bool wxDataViewTextRenderer::MacRender() #if wxUSE_MARKUP if ( m_useMarkup ) { - wxMarkupToAttrString toAttr(GetView(), GetValue().GetString()); + wxMarkupToAttrString toAttr(wxFont([cell font]), GetValue().GetString()); NSMutableAttributedString *str = toAttr.GetNSAttributedString(); if ( [cell lineBreakMode] != NSLineBreakByClipping ) diff --git a/src/osx/cocoa/stattext.mm b/src/osx/cocoa/stattext.mm index a44bf0a335..0eb61d8e2a 100644 --- a/src/osx/cocoa/stattext.mm +++ b/src/osx/cocoa/stattext.mm @@ -104,7 +104,7 @@ public: #if wxUSE_MARKUP virtual void SetLabelMarkup( const wxString& markup) wxOVERRIDE { - wxMarkupToAttrString toAttr(GetWXPeer(), markup); + wxMarkupToAttrString toAttr(GetWXPeer()->GetFont(), markup); DoSetAttrString(toAttr.GetNSAttributedString()); }