X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce00f59b5b169752d2f05ce3bb1a88ddc1b38b4c..2debe2b120a2b376a57d3f8ec24eb418a23b2710:/src/common/datavcmn.cpp?ds=inline diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index d14aa09706..94ddc67dc2 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -69,6 +69,24 @@ private: } // anonymous namespace +// --------------------------------------------------------- +// wxDataViewItemAttr +// --------------------------------------------------------- + +wxFont wxDataViewItemAttr::GetEffectiveFont(const wxFont& font) const +{ + if ( !HasFont() ) + return font; + + wxFont f(font); + if ( GetBold() ) + f.MakeBold(); + if ( GetItalic() ) + f.MakeItalic(); + return f; +} + + // --------------------------------------------------------- // wxDataViewModelNotifier // --------------------------------------------------------- @@ -761,6 +779,20 @@ bool wxDataViewRendererBase::FinishEditing() return true; } +void wxDataViewRendererBase::PrepareForItem(const wxDataViewModel *model, + const wxDataViewItem& item, + unsigned column) +{ + wxVariant value; + model->GetValue(value, item, column); + SetValue(value); + + wxDataViewItemAttr attr; + model->GetAttr(item, column, attr); + SetAttr(attr); +} + + // ---------------------------------------------------------------------------- // wxDataViewCustomRendererBase // ---------------------------------------------------------------------------- @@ -826,19 +858,28 @@ wxDataViewCustomRendererBase::WXCallRender(wxRect rectCell, wxDC *dc, int state) wxDCFontChanger changeFont(*dc); if ( m_attr.HasFont() ) - { - wxFont font(dc->GetFont()); - if ( m_attr.GetBold() ) - font.MakeBold(); - if ( m_attr.GetItalic() ) - font.MakeItalic(); - - changeFont.Set(font); - } + changeFont.Set(m_attr.GetEffectiveFont(dc->GetFont())); Render(rectItem, dc, state); } +wxSize wxDataViewCustomRendererBase::GetTextExtent(const wxString& str) const +{ + const wxDataViewCtrl *view = GetView(); + + if ( m_attr.HasFont() ) + { + wxFont font(m_attr.GetEffectiveFont(view->GetFont())); + wxSize size; + view->GetTextExtent(str, &size.x, &size.y, NULL, NULL, &font); + return size; + } + else + { + return view->GetTextExtent(str); + } +} + void wxDataViewCustomRendererBase::RenderText(const wxString& text, int xoffset,