From 874edbb70eddee47a6e94eb870b785dafd7eec32 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Fri, 6 Mar 2009 18:52:30 +0000 Subject: [PATCH] Initialise DC only when needed and deinitilise it properly before, fixes #10543: wxGTK wxDataViewCtrl Assert and Crash git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/dataview.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 4e7fc719a4..9277e9fec8 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -1105,10 +1105,15 @@ gtk_wx_cell_renderer_render (GtkCellRenderer *renderer, wxRect renderrect( rect.x, rect.y, rect.width, rect.height ); wxWindowDC* dc = (wxWindowDC*) cell->GetDC(); wxWindowDCImpl *impl = (wxWindowDCImpl *) dc->GetImpl(); - // Reinitilise GDK window everytime as drawing can also - // be done into DnD drop window. - impl->m_gdkwindow = window; - impl->SetUpDC(); + + // Reinitilise DC if drawing occurs into a different + // window such as a DnD drop window. + if (window != impl->m_gdkwindow) + { + impl->Destroy(); + impl->m_gdkwindow = window; + impl->SetUpDC(); + } int state = 0; if (flags & GTK_CELL_RENDERER_SELECTED) -- 2.47.2