Removed wxPG_DOUBLE_BUFFER constant. Now all wxPG rendering is done double-buffered, regardless of the platform. Code path with wxPG_DOUBLE_BUFFER = 0 did not render correctly (fixes #13140). In future should probably use wxAutoBufferedPaintDC or something similar, but this will require non-trivial code changes and testing.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2011-04-15 09:23:23 +00:00
parent 63722a74b0
commit 35f8ae6572
3 changed files with 3 additions and 35 deletions

View File

@@ -1795,9 +1795,7 @@ protected:
wxWindow *m_wndEditor; wxWindow *m_wndEditor;
wxWindow *m_wndEditor2; wxWindow *m_wndEditor2;
#if wxPG_DOUBLE_BUFFER
wxBitmap *m_doubleBuffer; wxBitmap *m_doubleBuffer;
#endif
/** Local time ms when control was created. */ /** Local time ms when control was created. */
wxLongLong m_timeCreated; wxLongLong m_timeCreated;
@@ -2687,7 +2685,6 @@ protected:
#undef wxPG_FL_INITIALIZED #undef wxPG_FL_INITIALIZED
#undef wxPG_FL_ACTIVATION_BY_CLICK #undef wxPG_FL_ACTIVATION_BY_CLICK
#undef wxPG_SUPPORT_TOOLTIPS #undef wxPG_SUPPORT_TOOLTIPS
#undef wxPG_DOUBLE_BUFFER
#undef wxPG_ICON_WIDTH #undef wxPG_ICON_WIDTH
#undef wxPG_USE_RENDERER_NATIVE #undef wxPG_USE_RENDERER_NATIVE
// Following are needed by the manager headers // Following are needed by the manager headers

View File

@@ -43,9 +43,6 @@
// 1 if wxRendererNative should be employed // 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 0 #define wxPG_USE_RENDERER_NATIVE 0
// 1 to use double-buffer that guarantees flicker-free painting
#define wxPG_DOUBLE_BUFFER 1
// Enable tooltips // Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 1 #define wxPG_SUPPORT_TOOLTIPS 1
@@ -79,9 +76,6 @@
// 1 if wxRendererNative should be employed // 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 1 #define wxPG_USE_RENDERER_NATIVE 1
// 1 to use double-buffer that guarantees flicker-free painting
#define wxPG_DOUBLE_BUFFER 1
// Enable tooltips // Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 1 #define wxPG_SUPPORT_TOOLTIPS 1
@@ -113,9 +107,6 @@
// 1 if wxRendererNative should be employed // 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 1 #define wxPG_USE_RENDERER_NATIVE 1
// 1 to use double-buffer that guarantees flicker-free painting
#define wxPG_DOUBLE_BUFFER 0
// Enable tooltips // Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 1 #define wxPG_SUPPORT_TOOLTIPS 1
@@ -147,9 +138,6 @@
// 1 if wxRendererNative should be employed // 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 0 #define wxPG_USE_RENDERER_NATIVE 0
// 1 to use double-buffer that guarantees flicker-free painting
#define wxPG_DOUBLE_BUFFER 0
// Enable tooltips // Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 0 #define wxPG_SUPPORT_TOOLTIPS 0
@@ -192,8 +180,6 @@
#if defined(__WXWINCE__) #if defined(__WXWINCE__)
#define wxPG_SMALL_SCREEN 1 #define wxPG_SMALL_SCREEN 1
#undef wxPG_DOUBLE_BUFFER
#define wxPG_DOUBLE_BUFFER 0
#else #else
#define wxPG_SMALL_SCREEN 0 #define wxPG_SMALL_SCREEN 0
#endif #endif

View File

@@ -375,9 +375,7 @@ void wxPropertyGrid::Init1()
m_coloursCustomized = 0; m_coloursCustomized = 0;
m_frozen = 0; m_frozen = 0;
#if wxPG_DOUBLE_BUFFER
m_doubleBuffer = NULL; m_doubleBuffer = NULL;
#endif
#ifndef wxPG_ICON_WIDTH #ifndef wxPG_ICON_WIDTH
m_expandbmp = NULL; m_expandbmp = NULL;
@@ -544,10 +542,8 @@ wxPropertyGrid::~wxPropertyGrid()
wxS("Close(false).)") ); wxS("Close(false).)") );
} }
#if wxPG_DOUBLE_BUFFER
if ( m_doubleBuffer ) if ( m_doubleBuffer )
delete m_doubleBuffer; delete m_doubleBuffer;
#endif
if ( m_iFlags & wxPG_FL_CREATEDSTATE ) if ( m_iFlags & wxPG_FL_CREATEDSTATE )
delete m_pState; delete m_pState;
@@ -1127,9 +1123,7 @@ void wxPropertyGrid::SetExtraStyle( long exStyle )
} }
else else
{ {
#if wxPG_DOUBLE_BUFFER
wxDELETE(m_doubleBuffer); wxDELETE(m_doubleBuffer);
#endif
} }
} }
@@ -1965,7 +1959,6 @@ void wxPropertyGrid::DrawItems( wxDC& dc,
wxDC* dcPtr = &dc; wxDC* dcPtr = &dc;
bool isBuffered = false; bool isBuffered = false;
#if wxPG_DOUBLE_BUFFER
wxMemoryDC* bufferDC = NULL; wxMemoryDC* bufferDC = NULL;
if ( !(GetExtraStyle() & wxPG_EX_NATIVE_DOUBLE_BUFFERING) ) if ( !(GetExtraStyle() & wxPG_EX_NATIVE_DOUBLE_BUFFERING) )
@@ -1986,7 +1979,6 @@ void wxPropertyGrid::DrawItems( wxDC& dc,
isBuffered = true; isBuffered = true;
} }
} }
#endif
if ( dcPtr ) if ( dcPtr )
{ {
@@ -2005,7 +1997,6 @@ void wxPropertyGrid::DrawItems( wxDC& dc,
} }
} }
#if wxPG_DOUBLE_BUFFER
if ( bufferDC ) if ( bufferDC )
{ {
dc.Blit( drawRect.x, drawRect.y, drawRect.width, dc.Blit( drawRect.x, drawRect.y, drawRect.width,
@@ -2013,7 +2004,6 @@ void wxPropertyGrid::DrawItems( wxDC& dc,
bufferDC, 0, 0, wxCOPY ); bufferDC, 0, 0, wxCOPY );
delete bufferDC; delete bufferDC;
} }
#endif
} }
else else
{ {
@@ -2085,10 +2075,11 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc,
int xRelMod = 0; int xRelMod = 0;
// //
// With wxPG_DOUBLE_BUFFER, do double buffering // For now, do some manual calculation for double buffering
// - buffer's y = 0, so align itemsRect and coordinates to that // - buffer's y = 0, so align itemsRect and coordinates to that
// //
#if wxPG_DOUBLE_BUFFER // TODO: In future use wxAutoBufferedPaintDC (for example)
//
int yRelMod = 0; int yRelMod = 0;
wxRect cr2; wxRect cr2;
@@ -2107,9 +2098,6 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc,
firstItemTopY -= yRelMod; firstItemTopY -= yRelMod;
lastItemBottomY -= yRelMod; lastItemBottomY -= yRelMod;
} }
#else
wxUnusedVar(isBuffered);
#endif
int x = m_marginWidth - xRelMod; int x = m_marginWidth - xRelMod;
@@ -4619,7 +4607,6 @@ void wxPropertyGrid::OnResize( wxSizeEvent& event )
m_width = width; m_width = width;
m_height = height; m_height = height;
#if wxPG_DOUBLE_BUFFER
if ( !(GetExtraStyle() & wxPG_EX_NATIVE_DOUBLE_BUFFERING) ) if ( !(GetExtraStyle() & wxPG_EX_NATIVE_DOUBLE_BUFFERING) )
{ {
int dblh = (m_lineHeight*2); int dblh = (m_lineHeight*2);
@@ -4647,8 +4634,6 @@ void wxPropertyGrid::OnResize( wxSizeEvent& event )
} }
} }
#endif
m_pState->OnClientWidthChange( width, event.GetSize().x - m_ncWidth, true ); m_pState->OnClientWidthChange( width, event.GetSize().x - m_ncWidth, true );
m_ncWidth = event.GetSize().x; m_ncWidth = event.GetSize().x;