From: Robert Roebling Date: Fri, 6 Mar 2009 18:52:30 +0000 (+0000) Subject: Initialise DC only when needed and deinitilise it properly before, fixes #10543:... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/874edbb70eddee47a6e94eb870b785dafd7eec32 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 --- 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)