-
mrobinson@webkit.org authored
Reviewed by Xan Lopez. [GTK] Widgets do not support CSS transformations https://bugs.webkit.org/show_bug.cgi?id=40139 Added a platform-specific baseline for the slider transformation test. This baseline says "FAIL" because the test has platform-specific offsets hard-coded. The result is only one tick off from expected though, so it's likely correct for us. * platform/gtk/Skipped: Unskip. * platform/gtk/fast/forms/slider-transformed-expected.txt: Added. 2010-10-15 Martin Robinson <mrobinson@igalia.com> Reviewed by Xan Lopez. [GTK] Widgets do not support CSS transformations https://bugs.webkit.org/show_bug.cgi?id=40139 Instead of rendering directly onto the target drawable when rendering form controls on GTK+ 2.0, render onto an intermediate surface and use cairo to blit the result back to the target surface. This has two benefits. The first is that it always honors the current Cairo transformation. The second is that since the intermediate drawable is always a 32-bit GdkPixmap, we do not have to have a set of widgets per-colormap any longer. This change also begins the abstraction of widget rendering so that GTK+ 2 and GTK+ 3 can use the same code path. The WidgetRenderingContext will eventually hide all version differences from RenderThemeGtk, which can just focus on interpreting the GtkStyle properties. * GNUmakefile.am: Add WidgetRenderinContext source files to the sources list. * platform/graphics/cairo/PlatformRefPtrCairo.cpp: (WTF::refPlatformPtr): Add a specialization for Cairo patterns. (WTF::derefPlatformPtr): Ditto. * platform/graphics/cairo/PlatformRefPtrCairo.h: Ditto. * platform/gtk/RenderThemeGtk.cpp: (WebCore::RenderThemeGtk::RenderThemeGtk): No longer keep a set of widgets per-colormap for GTK+, instead just determine if we can use RGBA colormaps and go from there. (WebCore::RenderThemeGtk::~RenderThemeGtk): Ditto. (WebCore::RenderThemeGtk::getIndicatorMetrics): Put the logic for getting toggle button indicator metrics into this helper. (WebCore::RenderThemeGtk::paintRenderObject): Now uses WidgetRenderingContext to do widget rendering. (WebCore::setToggleSize): Use the new getIndicatorMetrics helper. * platform/gtk/RenderThemeGtk.h: Added a member to track whether or not the widgets are using a RGBA colormap. Also remove a defunct Page* member. * platform/gtk/ScrollbarThemeGtk.cpp: Switch all widget drawing operations to use WidgetRenderingContext. (WebCore::ScrollbarThemeGtk::paintTrackBackground): Ditto. (WebCore::ScrollbarThemeGtk::paintScrollbarBackground): Ditto. (WebCore::ScrollbarThemeGtk::paintThumb): Ditto. (WebCore::ScrollbarThemeGtk::paint): Ditto. (WebCore::ScrollbarThemeGtk::paintButton): Ditto. * platform/gtk/WidgetRenderingContext.h: Added. * platform/gtk/WidgetRenderingContextGtk2.cpp: Added. (WebCore::purgeScratchBuffer): Added, this is similar to the scratch buffer implementation from ContextShadow. (WebCore::PurgeScratchBufferTimer::fired): Ditto. (WebCore::scheduleScratchBufferPurge): Ditto. (WebCore::getExtraSpaceForWidget): (WebCore::WidgetRenderingContext::WidgetRenderingContext): Added. (WebCore::WidgetRenderingContext::~WidgetRenderingContext): Added. (WebCore::WidgetRenderingContext::paintMozillaWidget): Added. * platform/gtk/WidgetRenderingContextGtk3.cpp: Added. (WebCore::WidgetRenderingContext::WidgetRenderingContext): Added. (WebCore::~WidgetRenderingContext::WidgetRenderingContext): Added. (WebCore::WidgetRenderingContext::paintMozillaWidget): Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71791 268f45cc-cd09-0410-ab3c-d52691b4dbfc
d28afd73