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,