From b7f1f77f82555714ccce47c520e8a7a97ef558e6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 17 Feb 2000 08:47:12 +0000 Subject: [PATCH] hack to fix crash when creating a DC for a widgetless window git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6105 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/dcclient.cpp | 14 ++++++++++---- src/gtk1/dcclient.cpp | 14 ++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index c4b314a5b8..4a06916eef 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -126,6 +126,15 @@ wxWindowDC::wxWindowDC( wxWindow *window ) GtkWidget *widget = window->m_wxwindow; + // some controls don't have m_wxwindow - like wxStaticBox, but the user + // code should still be able to create wxClientDCs for them, so we will + // use the parent window here then + if ( !widget ) + { + window = window->GetParent(); + widget = window->m_wxwindow; + } + wxASSERT_MSG( widget, wxT("DC needs a widget") ); GtkPizza *pizza = GTK_PIZZA( widget ); @@ -140,10 +149,7 @@ wxWindowDC::wxWindowDC( wxWindow *window ) return; } - if (window->m_wxwindow) - m_cmap = gtk_widget_get_colormap( window->m_wxwindow ); - else - m_cmap = gtk_widget_get_colormap( window->m_widget ); + m_cmap = gtk_widget_get_colormap( widget ? widget : window->m_widget ); SetUpDC(); diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp index c4b314a5b8..4a06916eef 100644 --- a/src/gtk1/dcclient.cpp +++ b/src/gtk1/dcclient.cpp @@ -126,6 +126,15 @@ wxWindowDC::wxWindowDC( wxWindow *window ) GtkWidget *widget = window->m_wxwindow; + // some controls don't have m_wxwindow - like wxStaticBox, but the user + // code should still be able to create wxClientDCs for them, so we will + // use the parent window here then + if ( !widget ) + { + window = window->GetParent(); + widget = window->m_wxwindow; + } + wxASSERT_MSG( widget, wxT("DC needs a widget") ); GtkPizza *pizza = GTK_PIZZA( widget ); @@ -140,10 +149,7 @@ wxWindowDC::wxWindowDC( wxWindow *window ) return; } - if (window->m_wxwindow) - m_cmap = gtk_widget_get_colormap( window->m_wxwindow ); - else - m_cmap = gtk_widget_get_colormap( window->m_widget ); + m_cmap = gtk_widget_get_colormap( widget ? widget : window->m_widget ); SetUpDC(); -- 2.45.2