]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dcclient.cpp
Fox around a bug in GTK's GtkNotebook
[wxWidgets.git] / src / gtk / dcclient.cpp
index 2cdeb7137aeb68cd15223716cc8038c1110b810f..34eb8de724260651caf3e4c93670416aef8bc5d4 100644 (file)
@@ -109,10 +109,23 @@ wxWindowDC::wxWindowDC( wxWindow *window )
     m_owner = (wxWindow *)NULL;
   
     if (!window) return;
+    
     GtkWidget *widget = window->m_wxwindow;
     if (!widget) return;
+    
     m_window = widget->window;
+    
+    /* not realized ? */
+    if (!m_window)
+    {
+         /* force realization */
+         gtk_widget_realize( widget );
+         m_window = widget->window;
+    }
+    
+    /* still not realized ? */
     if (!m_window) return;
+    
     if (window->m_wxwindow)
         m_cmap = gtk_widget_get_colormap( window->m_wxwindow );
     else
@@ -618,13 +631,13 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
        {
           /* we HAVE TO use the direct way for memory dcs
              that have mask since the XCopyArea doesn't know
-             about masks and */
+             about masks */
            use_bitmap_method = TRUE;
        }
        else if (memDC->m_selected.GetDepth() == 1)
        {
           /* we HAVE TO use the direct way for memory dcs
-             that are bitmaps because XCopyArea doesn't copy
+             that are bitmaps because XCopyArea doesn't cope
              with different bit depths */
            use_bitmap_method = TRUE;
        }
@@ -825,8 +838,6 @@ void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *heigh
                      long *descent, long *externalLeading,
                      wxFont *theFont, bool WXUNUSED(use16) )
 {
-    wxCHECK_RET( Ok(), _T("invalid window dc") );
-  
     wxFont fontToUse = m_font;
     if (theFont) fontToUse = *theFont;
   
@@ -839,16 +850,12 @@ void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *heigh
 
 long wxWindowDC::GetCharWidth()
 {
-    wxCHECK_MSG( Ok(), 0, _T("invalid window dc") );
-  
     GdkFont *font = m_font.GetInternalFont( m_scaleY );
     return long(gdk_string_width( font, "H" ) / m_scaleX);
 }
 
 long wxWindowDC::GetCharHeight()
 {
-    wxCHECK_MSG( Ok(), 0, _T("invalid window dc") );
-  
     GdkFont *font = m_font.GetInternalFont( m_scaleY );
     return long((font->ascent + font->descent) / m_scaleY);
 }
@@ -883,8 +890,6 @@ void wxWindowDC::Clear()
 
 void wxWindowDC::SetFont( const wxFont &font )
 {
-    wxCHECK_RET( Ok(), _T("invalid window dc") );
-  
     m_font = font;
 }