diff options
Diffstat (limited to 'Source/WebCore/platform/gtk/RenderThemeGtk2.cpp')
-rw-r--r-- | Source/WebCore/platform/gtk/RenderThemeGtk2.cpp | 80 |
1 files changed, 30 insertions, 50 deletions
diff --git a/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp b/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp index de4195d..534aa97 100644 --- a/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp +++ b/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp @@ -41,7 +41,6 @@ #include "TextDirection.h" #include "UserAgentStyleSheets.h" #include "WidgetRenderingContext.h" -#include "gtkdrawing.h" #include <gdk/gdk.h> #include <gtk/gtk.h> @@ -50,7 +49,6 @@ namespace WebCore { // This is not a static method, because we want to avoid having GTK+ headers in RenderThemeGtk.h. extern GtkTextDirection gtkTextDirection(TextDirection); -static int mozGtkRefCount = 0; void RenderThemeGtk::platformInit() { m_themePartsHaveRGBAColormap = true; @@ -68,30 +66,18 @@ void RenderThemeGtk::platformInit() m_gtkComboBoxButton = 0; m_gtkComboBoxArrow = 0; m_gtkComboBoxSeparator = 0; + m_gtkVScrollbar = 0; + m_gtkHScrollbar = 0; - memset(&m_themeParts, 0, sizeof(GtkThemeParts)); - GdkColormap* colormap = gdk_screen_get_rgba_colormap(gdk_screen_get_default()); - if (!colormap) { + m_colormap = gdk_screen_get_rgba_colormap(gdk_screen_get_default()); + if (!m_colormap) { m_themePartsHaveRGBAColormap = false; - colormap = gdk_screen_get_default_colormap(gdk_screen_get_default()); + m_colormap = gdk_screen_get_default_colormap(gdk_screen_get_default()); } - m_themeParts.colormap = colormap; - - // Initialize the Mozilla theme drawing code. - if (!mozGtkRefCount) { - moz_gtk_init(); - moz_gtk_use_theme_parts(&m_themeParts); - } - ++mozGtkRefCount; } RenderThemeGtk::~RenderThemeGtk() { - --mozGtkRefCount; - - if (!mozGtkRefCount) - moz_gtk_shutdown(); - if (m_gtkWindow) gtk_widget_destroy(m_gtkWindow); } @@ -147,34 +133,6 @@ static GtkStateType getGtkStateType(RenderThemeGtk* theme, RenderObject* object) return GTK_STATE_NORMAL; } -bool RenderThemeGtk::paintRenderObject(GtkThemeWidgetType type, RenderObject* renderObject, GraphicsContext* context, const IntRect& rect, int flags) -{ - // Painting is disabled so just claim to have succeeded - if (context->paintingDisabled()) - return false; - - GtkWidgetState widgetState; - widgetState.active = isPressed(renderObject); - widgetState.focused = isFocused(renderObject); - - // https://bugs.webkit.org/show_bug.cgi?id=18364 - // The Mozilla theme drawing code, only paints a button as pressed when it's pressed - // while hovered. Until we move away from the Mozila code, work-around the issue by - // forcing a pressed button into the hovered state. This ensures that buttons activated - // via the keyboard have the proper rendering. - widgetState.inHover = isHovered(renderObject) || (type == MOZ_GTK_BUTTON && isPressed(renderObject)); - - // FIXME: Disabled does not always give the correct appearance for ReadOnly - widgetState.disabled = !isEnabled(renderObject) || isReadOnlyControl(renderObject); - widgetState.isDefault = false; - widgetState.canDefault = false; - widgetState.depressed = false; - - WidgetRenderingContext widgetContext(context, rect); - return !widgetContext.paintMozillaWidget(type, &widgetState, flags, - gtkTextDirection(renderObject->style()->direction())); -} - static void setToggleSize(const RenderThemeGtk* theme, RenderStyle* style, GtkWidget* widget) { // The width and height are both specified, so we shouldn't change them. @@ -608,6 +566,15 @@ bool RenderThemeGtk::paintProgressBar(RenderObject* renderObject, const PaintInf } #endif +void RenderThemeGtk::adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const +{ +} + +bool RenderThemeGtk::paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&) +{ + return true; +} + GRefPtr<GdkPixbuf> RenderThemeGtk::getStockIcon(GType widgetType, const char* iconName, gint direction, gint state, gint iconSize) { ASSERT(widgetType == GTK_TYPE_CONTAINER || widgetType == GTK_TYPE_ENTRY); @@ -708,7 +675,7 @@ GtkWidget* RenderThemeGtk::gtkContainer() const return m_gtkContainer; m_gtkWindow = gtk_window_new(GTK_WINDOW_POPUP); - gtk_widget_set_colormap(m_gtkWindow, m_themeParts.colormap); + gtk_widget_set_colormap(m_gtkWindow, m_colormap); setupWidget(m_gtkWindow); gtk_widget_set_name(m_gtkWindow, "MozillaGtkWidget"); @@ -882,9 +849,22 @@ GtkWidget* RenderThemeGtk::gtkComboBoxSeparator() const return m_gtkComboBoxSeparator; } -GtkWidget* RenderThemeGtk::gtkScrollbar() +GtkWidget* RenderThemeGtk::gtkHScrollbar() const +{ + if (m_gtkHScrollbar) + return m_gtkHScrollbar; + m_gtkHScrollbar = gtk_hscrollbar_new(0); + setupWidgetAndAddToContainer(m_gtkHScrollbar, gtkContainer()); + return m_gtkHScrollbar; +} + +GtkWidget* RenderThemeGtk::gtkVScrollbar() const { - return moz_gtk_get_scrollbar_widget(); + if (m_gtkVScrollbar) + return m_gtkVScrollbar; + m_gtkVScrollbar = gtk_vscrollbar_new(0); + setupWidgetAndAddToContainer(m_gtkVScrollbar, gtkContainer()); + return m_gtkVScrollbar; } } // namespace WebCore |