]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dcclient.cpp
Moved flicker-removal to GTK+ code
[wxWidgets.git] / src / gtk / dcclient.cpp
index 2d4299ad5a99f2ba24397cd25d6d5753071169e8..5af43d6f273c00be651908b7ae66b7c03d726540 100644 (file)
@@ -19,6 +19,7 @@
 #include "wx/dcmemory.h"
 #include "wx/image.h"
 #include "wx/module.h"
+#include "wx/log.h"
 
 #include "wx/gtk/win_gtk.h"
 
@@ -400,10 +401,13 @@ void wxWindowDC::DoGetSize( int* width, int* height ) const
     m_owner->GetSize(width, height);
 }
 
-void wxWindowDC::DoFloodFill( wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
-                           const wxColour &WXUNUSED(col), int WXUNUSED(style) )
+extern bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y, 
+                          const wxColour & col, int style);
+
+bool wxWindowDC::DoFloodFill(wxCoord x, wxCoord y,
+                             const wxColour& col, int style)
 {
-    wxFAIL_MSG( wxT("wxWindowDC::DoFloodFill not implemented") );
+    return wxDoFloodFill(this, x, y, col, style);
 }
 
 bool wxWindowDC::DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const
@@ -1556,6 +1560,11 @@ void wxWindowDC::Clear()
 
     if (!m_window) return;
 
+    // VZ: the code below results in infinite recursion and crashes when
+    //     dc.Clear() is done from OnPaint() so I disable it for now.
+    //     I don't know what the correct fix is but Clear() surely should not
+    //     reenter OnPaint()!
+#if 0
     /* - we either are a memory dc or have a window as the
        owner. anything else shouldn't happen.
        - we don't use gdk_window_clear() as we don't set
@@ -1565,9 +1574,7 @@ void wxWindowDC::Clear()
 
     if (m_owner)
     {
-        int width,height;
-        m_owner->GetSize( &width, &height );
-        gdk_draw_rectangle( m_window, m_bgGC, TRUE, 0, 0, width, height );
+        m_owner->Clear();
         return;
     }
 
@@ -1578,11 +1585,18 @@ void wxWindowDC::Clear()
         gdk_draw_rectangle( m_window, m_bgGC, TRUE, 0, 0, width, height );
         return;
     }
+#else // 1
+    int width,height;
+    GetSize( &width, &height );
+    gdk_draw_rectangle( m_window, m_bgGC, TRUE, 0, 0, width, height );
+#endif // 0/1
 }
 
 void wxWindowDC::SetFont( const wxFont &font )
 {
-    wxCHECK_RET( font.Ok(), _T("invalid font in wxWindowDC::SetFont") );
+    // It is common practice to set the font to wxNullFont, so
+    // don't consider it to be an error
+    //    wxCHECK_RET( font.Ok(), _T("invalid font in wxWindowDC::SetFont") );
 
     m_font = font;
 #ifdef __WXGTK20__