Index: WebCore/ChangeLog =================================================================== --- WebCore/ChangeLog (revision 27903) +++ WebCore/ChangeLog (working copy) @@ -1,3 +1,22 @@ +2007-11-19 Alp Toker + + Reviewed by NOBODY (OOPS!). + + GTK+ drawing fixes. + + Add a check to avoid crashing when the GraphicsContext is not + associated with a GdkDrawable. This was noticed when adding printing + support but might be triggered in other situations too. + + Do not render themes when painting is disabled. This is an + optimisation for cases where GraphicsContext is used to calculate page + dimensions etc. without actually rendering. + + * platform/graphics/cairo/GraphicsContextCairo.cpp: + (WebCore::GraphicsContext::gdkDrawable): + * platform/gtk/RenderThemeGtk.cpp: + (WebCore::paintMozWidget): + 2007-11-13 Rahul Abrol Reviewed by Tim Hatcher. Index: WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp =================================================================== --- WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp (revision 27903) +++ WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp (working copy) @@ -867,6 +867,9 @@ GdkEventExpose* GraphicsContext::gdkExpo GdkDrawable* GraphicsContext::gdkDrawable() const { + if (!m_data->expose) + return 0; + return GDK_DRAWABLE(m_data->expose->window); } Index: WebCore/platform/gtk/RenderThemeGtk.cpp =================================================================== --- WebCore/platform/gtk/RenderThemeGtk.cpp (revision 27903) +++ WebCore/platform/gtk/RenderThemeGtk.cpp (working copy) @@ -110,6 +110,14 @@ static void setMozState(RenderTheme* the static bool paintMozWidget(RenderTheme* theme, GtkThemeWidgetType type, RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) { + // No GdkWindow to render to, so return true to fall back + if (!i.context->gdkDrawable()) + return true; + + // Painting is disabled so just claim to have succeeded + if (i.context->paintingDisabled()) + return false; + GtkWidgetState mozState; setMozState(theme, &mozState, o);