summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderThemeGtk.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/RenderThemeGtk.h')
-rw-r--r--Source/WebCore/rendering/RenderThemeGtk.h193
1 files changed, 193 insertions, 0 deletions
diff --git a/Source/WebCore/rendering/RenderThemeGtk.h b/Source/WebCore/rendering/RenderThemeGtk.h
new file mode 100644
index 000000000..91723455f
--- /dev/null
+++ b/Source/WebCore/rendering/RenderThemeGtk.h
@@ -0,0 +1,193 @@
+/*
+ * This file is part of the WebKit project.
+ *
+ * Copyright (C) 2006 Apple Inc.
+ * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ * Copyright (C) 2007 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2010 Igalia S.L.
+ * All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#pragma once
+
+#include "RenderTheme.h"
+
+namespace WebCore {
+
+class RenderThemeGtk final : public RenderTheme {
+public:
+ static Ref<RenderTheme> create();
+
+#if ENABLE(DATALIST_ELEMENT)
+ // Returns size of one slider tick mark for a horizontal track.
+ // For vertical tracks we rotate it and use it. i.e. Width is always length along the track.
+ IntSize sliderTickSize() const override;
+ // Returns the distance of slider tick origin from the slider track center.
+ int sliderTickOffsetFromTrackCenter() const override;
+#endif
+
+private:
+ // System fonts.
+ void updateCachedSystemFontDescription(CSSValueID, FontCascadeDescription&) const override;
+
+public:
+#ifndef GTK_API_VERSION_2
+
+ // A method asking if the theme's controls actually care about redrawing when hovered.
+ bool supportsHover(const RenderStyle&) const override { return true; }
+
+ // A method asking if the theme is able to draw the focus ring.
+ bool supportsFocusRing(const RenderStyle&) const override;
+
+ // A method asking if the control changes its tint when the window has focus or not.
+ bool controlSupportsTints(const RenderObject&) const override;
+
+ // A general method asking if any control tinting is supported at all.
+ bool supportsControlTints() const override { return true; }
+
+ void adjustRepaintRect(const RenderObject&, FloatRect&) override;
+
+ // A method to obtain the baseline position for a "leaf" control. This will only be used if a baseline
+ // position cannot be determined by examining child content. Checkboxes and radio buttons are examples of
+ // controls that need to do this.
+ int baselinePosition(const RenderBox&) const override;
+
+ // The platform selection color.
+ Color platformActiveSelectionBackgroundColor() const override;
+ Color platformInactiveSelectionBackgroundColor() const override;
+ Color platformActiveSelectionForegroundColor() const override;
+ Color platformInactiveSelectionForegroundColor() const override;
+
+ // List Box selection color
+ Color platformActiveListBoxSelectionBackgroundColor() const override;
+ Color platformActiveListBoxSelectionForegroundColor() const override;
+ Color platformInactiveListBoxSelectionBackgroundColor() const override;
+ Color platformInactiveListBoxSelectionForegroundColor() const override;
+
+ double caretBlinkInterval() const override;
+
+ void platformColorsDidChange() override;
+
+ // System colors.
+ Color systemColor(CSSValueID) const override;
+
+ bool popsMenuBySpaceOrReturn() const override { return true; }
+
+#if ENABLE(VIDEO)
+ String extraMediaControlsStyleSheet() override;
+ String formatMediaControlsCurrentTime(float currentTime, float duration) const override;
+ bool supportsClosedCaptioning() const override { return true; }
+ String mediaControlsScript() override;
+
+#if ENABLE(FULLSCREEN_API)
+ String extraFullScreenStyleSheet() override;
+#endif
+#endif
+
+ bool shouldHaveCapsLockIndicator(const HTMLInputElement&) const override;
+
+private:
+ RenderThemeGtk();
+ virtual ~RenderThemeGtk();
+
+ bool paintCheckbox(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ void setCheckboxSize(RenderStyle&) const override;
+
+ bool paintRadio(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ void setRadioSize(RenderStyle&) const override;
+
+ void adjustButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+
+ void adjustTextFieldStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintTextField(const RenderObject&, const PaintInfo&, const FloatRect&) override;
+ bool paintTextArea(const RenderObject&, const PaintInfo&, const FloatRect&) override;
+
+ LengthBox popupInternalPaddingBox(const RenderStyle&) const override;
+
+ // The Mac port differentiates between the "menu list" and the "menu list button."
+ // The former is used when a menu list button has been styled. This is used to ensure
+ // Aqua themed controls whenever possible. We always want to use GTK+ theming, so
+ // we don't maintain this differentiation.
+ void adjustMenuListStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintMenuList(const RenderObject&, const PaintInfo&, const FloatRect&) override;
+ bool paintMenuListButtonDecorations(const RenderBox&, const PaintInfo&, const FloatRect&) override;
+
+ void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) override;
+
+ void adjustSearchFieldStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintSearchField(const RenderObject&, const PaintInfo&, const IntRect&) override;
+
+ void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
+
+ void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
+
+ bool paintSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ void adjustSliderTrackStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+
+ bool paintSliderThumb(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ void adjustSliderThumbStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+
+ void adjustSliderThumbSize(RenderStyle&, const Element*) const override;
+
+#if ENABLE(VIDEO)
+ bool hasOwnDisabledStateHandlingFor(ControlPart) const override;
+ bool paintMediaFullscreenButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaPlayButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaMuteButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaSeekBackButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaSeekForwardButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaSliderThumb(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaVolumeSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaVolumeSliderThumb(const RenderObject&, const PaintInfo&, const IntRect&) override;
+ bool paintMediaCurrentTime(const RenderObject&, const PaintInfo&, const IntRect&) override;
+#if ENABLE(VIDEO_TRACK)
+ bool paintMediaToggleClosedCaptionsButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+#endif
+#endif
+
+ double animationRepeatIntervalForProgressBar(RenderProgress&) const override;
+ double animationDurationForProgressBar(RenderProgress&) const override;
+ void adjustProgressBarStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ IntRect progressBarRectForBounds(const RenderObject&, const IntRect&) const override;
+ bool paintProgressBar(const RenderObject&, const PaintInfo&, const IntRect&) override;
+
+ InnerSpinButtonLayout innerSpinButtonLayout(const RenderObject&) const override;
+ void adjustInnerSpinButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+ bool paintInnerSpinButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
+
+ String fileListNameForWidth(const FileList*, const FontCascade&, int width, bool multipleFilesAllowed) const override;
+
+ static void setTextInputBorders(RenderStyle&);
+
+#if ENABLE(VIDEO)
+ bool paintMediaButton(const RenderObject&, GraphicsContext&, const IntRect&, const char* iconName);
+#endif
+
+ static IntRect calculateProgressRect(const RenderObject&, const IntRect&);
+#endif // GTK_API_VERSION_2
+};
+
+} // namespace WebCore