From: Vadim Zeitlin <vadim@wxwidgets.org> Date: Sun, 31 May 2009 19:40:04 +0000 (+0000) Subject: added wxDC::CopyAttributes() and use it in wxBufferedDC to ensure that wxAutoBuffered... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/4feecbb929662fa002239fe7fc46d464b12f758e added wxDC::CopyAttributes() and use it in wxBufferedDC to ensure that wxAutoBufferedPaintDC font is correctly initialized from the window font, as it already happens with wxPaintDC that it mimics git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60846 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index ec02b9d205..ee3eab7fb9 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -341,6 +341,7 @@ All (GUI): - Added wxMouseEventsManager. - Building OpenGL library is now enabled by default. - Improve wxTreeCtrl::ScrollTo() in generic version (Raanan Barzel). +- Added wxDC::CopyAttributes() and use it in wxBufferedDC. MSW: diff --git a/include/wx/dc.h b/include/wx/dc.h index b928314386..aa5110066d 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -702,6 +702,9 @@ private: class WXDLLIMPEXP_CORE wxDC : public wxObject { public: + // copy attributes (font, colours and writing direction) from another DC + void CopyAttributes(const wxDC& dc); + virtual ~wxDC() { delete m_pimpl; } wxDCImpl *GetImpl() diff --git a/include/wx/dcbuffer.h b/include/wx/dcbuffer.h index 4d5b408712..e5c45a8247 100644 --- a/include/wx/dcbuffer.h +++ b/include/wx/dcbuffer.h @@ -118,8 +118,8 @@ private: m_style = style; // inherit the same layout direction as the original DC - if (dc && dc->IsOk()) - SetLayoutDirection(dc->GetLayoutDirection()); + if ( dc && dc->IsOk() ) + CopyAttributes(*dc); } // check that the bitmap is valid and use it diff --git a/interface/wx/dc.h b/interface/wx/dc.h index a9ebbb3eab..1e4e08bc1a 100644 --- a/interface/wx/dc.h +++ b/interface/wx/dc.h @@ -1122,6 +1122,19 @@ public: //@} + /** + Copy attributes from another DC. + + The copied attributes currently are: + - Font + - Text foreground and background colours + - Background brush + - Layout direction + + @param dc + A valid (i.e. its IsOk() must return @true) source device context. + */ + void CopyAttributes(const wxDC& dc); /** Returns the depth (number of bits/pixel) of this DC. diff --git a/src/common/dcbase.cpp b/src/common/dcbase.cpp index 1742bf8dad..3427fe362e 100644 --- a/src/common/dcbase.cpp +++ b/src/common/dcbase.cpp @@ -1115,7 +1115,8 @@ void wxDCImpl::InheritAttributes(wxWindow *win) SetFont(win->GetFont()); SetTextForeground(win->GetForegroundColour()); SetTextBackground(win->GetBackgroundColour()); - SetBackground(wxBrush(win->GetBackgroundColour())); + SetBackground(win->GetBackgroundColour()); + SetLayoutDirection(win->GetLayoutDirection()); } //----------------------------------------------------------------------------- @@ -1124,6 +1125,15 @@ void wxDCImpl::InheritAttributes(wxWindow *win) IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) +void wxDC::CopyAttributes(const wxDC& dc) +{ + SetFont(dc.GetFont()); + SetTextForeground(dc.GetTextForeground()); + SetTextBackground(dc.GetTextBackground()); + SetBackground(dc.GetBackground()); + SetLayoutDirection(dc.GetLayoutDirection()); +} + void wxDC::DrawLabel(const wxString& text, const wxBitmap& bitmap, const wxRect& rect,