summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/platform/gtk/RenderThemeGtk2.cpp')
-rw-r--r--Source/WebCore/platform/gtk/RenderThemeGtk2.cpp80
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