From 635eb8bcc44d0bec40bcfa7e5cc8c6be1a0c7b96 Mon Sep 17 00:00:00 2001 From: Julian Smart 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 {