From 635eb8bcc44d0bec40bcfa7e5cc8c6be1a0c7b96 Mon Sep 17 00:00:00 2001
From: Julian Smart <julian@anthemion.co.uk>
Date: Mon, 9 Dec 2002 10:20:44 +0000
Subject: [PATCH] Applied patch [ 648042 ] Erase background error

When erasing the background with a transparent
background the logical origin of the provided DC is (re)
set, but not restored to the old value. Restoring the old
value is needed because the DC is/can be shared with
the real draw code...

This patch solves problems like mentioned in bug report
#635217 and problems like controls (like radio controls
etc) that disappear when moving the mouse over them or
clicking on them...

Hans Van Leemputten


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18141 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 src/univ/winuniv.cpp | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/univ/winuniv.cpp b/src/univ/winuniv.cpp
index afc1a6efbd..1fbcf71f96 100644
--- a/src/univ/winuniv.cpp
+++ b/src/univ/winuniv.cpp
@@ -284,10 +284,10 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
         AdjustForParentClientOrigin( pos.x, pos.y, 0 );
 
         // Adjust DC logical origin
-        wxCoord x,y;
-        dc.GetLogicalOrigin( &x, &y );
-        x += pos.x;
-        y += pos.y;
+        wxCoord org_x, org_y, x, y;
+        dc.GetLogicalOrigin( &org_x, &org_y );
+        x = org_x + pos.x;
+        y = org_y + pos.y;
         dc.SetLogicalOrigin( x, y );
 
         // Adjust draw rect
@@ -296,6 +296,9 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
 
         // Let parent draw the background
         parent->EraseBackground( dc, rect );
+
+        // Restore DC logical origin
+        dc.SetLogicalOrigin( org_x, org_y );
     }
     else
     {
-- 
2.47.2