Changeset 52266 in webkit


Ignore:
Timestamp:
Dec 17, 2009 11:13:42 AM (14 years ago)
Author:
Philippe Normand
Message:

Merge branch 'bug/26304' into staging

Location:
trunk
Files:
8 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r52252 r52266  
     12009-12-07  Philippe Normand  <pnormand@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [GTK] Add controls for playing html5 video.
     6        https://bugs.webkit.org/show_bug.cgi?id=26304
     7
     8        Unskip some of the media tests related to the controls
     9        UI. Generated results for the new ones, it will likely be needed
     10        again when we add new features in the controls UI.
     11
     12        * platform/gtk/Skipped:
     13        * platform/gtk/media/controls-after-reload-expected.txt: Added.
     14        * platform/gtk/media/controls-drag-timebar-expected.txt: Added.
     15        * platform/gtk/media/controls-strict-expected.txt: Added.
     16        * platform/gtk/media/controls-styling-expected.txt: Added.
     17        * platform/gtk/media/video-controls-rendering-expected.txt: Added.
     18        * platform/gtk/media/video-controls-visible-audio-only-expected.txt: Copied from LayoutTests/platform/mac/media/video-controls-visible-audio-only-expected.txt.
     19
    1202009-12-17  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
    221
  • trunk/LayoutTests/platform/gtk/Skipped

    r52252 r52266  
    36143614
    36153615#   Tests timing out
    3616 media/controls-drag-timebar.html
    36173616media/unsupported-rtsp.html
    36183617#   Tests generating new results
    36193618media/audio-controls-rendering.html
    36203619media/video-aspect-ratio.html
    3621 media/video-controls-rendering.html
    3622 media/video-controls-visible-audio-only.html
    36233620media/video-display-toggle.html
    36243621media/video-empty-source.html
     
    54385435fast/text/text-letter-spacing.html
    54395436media/audio-no-installed-engines.html
    5440 media/controls-after-reload.html
    5441 media/controls-strict.html
    5442 media/controls-styling.html
    54435437svg/batik/filters/feTile.svg
    54445438svg/custom/createImageElement.svg
  • trunk/WebCore/ChangeLog

    r52261 r52266  
     12009-12-10  Philippe Normand  <pnormand@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [GTK] Add controls for playing html5 video.
     6        https://bugs.webkit.org/show_bug.cgi?id=26304
     7
     8        Media controls UI, first step. This patch was written by Zan
     9        Dobersek. In addition I fixed the compilation errors and
     10        re-enabled some of the media tests involving the controls UI.
     11
     12        * GNUmakefile.am:
     13        * css/mediaControlsGtk.css: Added.
     14        * platform/graphics/Image.h:
     15        * platform/graphics/gtk/ImageGtk.cpp:
     16        (WebCore::getThemeIconFileName):
     17        (WebCore::loadResourceSharedBuffer):
     18        (WebCore::loadImageFromFile):
     19        (WebCore::Image::loadPlatformResource):
     20        (WebCore::Image::loadPlatformThemeIcon):
     21        * platform/gtk/RenderThemeGtk.cpp:
     22        (WebCore::getMediaElementFromRenderObject):
     23        (WebCore::getIconNameForTextDirection):
     24        (WebCore::RenderThemeGtk::initMediaStyling):
     25        (WebCore::RenderThemeGtk::RenderThemeGtk):
     26        (WebCore::RenderThemeGtk::~RenderThemeGtk):
     27        (WebCore::supportsFocus):
     28        (WebCore::RenderThemeGtk::baselinePosition):
     29        (WebCore::paintMozWidget):
     30        (WebCore::setToggleSize):
     31        (WebCore::RenderThemeGtk::adjustSliderThumbSize):
     32        (WebCore::RenderThemeGtk::gtkContainer):
     33        (WebCore::RenderThemeGtk::platformColorsDidChange):
     34        (WebCore::RenderThemeGtk::extraMediaControlsStyleSheet):
     35        (WebCore::paintMediaButton):
     36        (WebCore::RenderThemeGtk::paintMediaFullscreenButton):
     37        (WebCore::RenderThemeGtk::paintMediaMuteButton):
     38        (WebCore::RenderThemeGtk::paintMediaPlayButton):
     39        (WebCore::RenderThemeGtk::paintMediaSeekBackButton):
     40        (WebCore::RenderThemeGtk::paintMediaSeekForwardButton):
     41        (WebCore::RenderThemeGtk::paintMediaSliderTrack):
     42        (WebCore::RenderThemeGtk::paintMediaSliderThumb):
     43        * platform/gtk/RenderThemeGtk.h:
     44
    1452009-12-17  Yael Aharon  <yael.aharon@nokia.com>
    246
  • trunk/WebCore/GNUmakefile.am

    r52258 r52266  
    34593459        $(WebCore)/css/svg.css \
    34603460        $(WebCore)/css/wml.css \
    3461         $(WebCore)/css/mediaControls.css
     3461        $(WebCore)/css/mediaControls.css \
     3462        $(WebCore)/css/mediaControlsGtk.css
    34623463
    34633464# new-style JavaScript bindings
     
    35743575        WebCore/css/wml.css \
    35753576        WebCore/css/mediaControls.css \
     3577        WebCore/css/mediaControlsGtk.css \
    35763578        WebCore/css/CSSGrammar.y \
    35773579        WebCore/css/CSSValueKeywords.in \
  • trunk/WebCore/platform/graphics/Image.h

    r52229 r52266  
    151151#if PLATFORM(GTK)
    152152    virtual GdkPixbuf* getGdkPixbuf() { return 0; }
     153    static PassRefPtr<Image> loadPlatformThemeIcon(const char* name, int size);
    153154#endif
    154155
  • trunk/WebCore/platform/graphics/gtk/ImageGtk.cpp

    r48888 r52266  
    4545namespace WebCore {
    4646
    47 static CString getIconFileNameOrFallback(const char* name, const char* fallback)
     47static CString getThemeIconFileName(const char* name, int size)
    4848{
    49     GOwnPtr<GtkIconInfo> info(gtk_icon_theme_lookup_icon(gtk_icon_theme_get_default(),
    50                                                          name, 16, GTK_ICON_LOOKUP_NO_SVG));
    51     if (!info)
    52         return String::format("%s/webkit-1.0/images/%s.png", DATA_DIR, fallback).utf8();
     49    GtkIconInfo* iconInfo = gtk_icon_theme_lookup_icon(gtk_icon_theme_get_default(),
     50                                                       name, size, GTK_ICON_LOOKUP_NO_SVG);
     51    if (!iconInfo)
     52        iconInfo = gtk_icon_theme_lookup_icon(gtk_icon_theme_get_default(),
     53                                              GTK_STOCK_MISSING_IMAGE, size,
     54                                              GTK_ICON_LOOKUP_NO_SVG);
    5355
     56    GOwnPtr<GtkIconInfo> info(iconInfo);
    5457    return CString(gtk_icon_info_get_filename(info.get()));
    5558}
    5659
    57 static PassRefPtr<SharedBuffer> loadResourceSharedBuffer(const char* name)
     60static PassRefPtr<SharedBuffer> loadResourceSharedBuffer(CString name)
    5861{
    59     CString fileName;
    60 
    61     // Find the path for the image
    62     if (strcmp("missingImage", name) == 0)
    63         fileName = getIconFileNameOrFallback(GTK_STOCK_MISSING_IMAGE, "missingImage");
    64     else
    65         fileName = String::format("%s/webkit-1.0/images/%s.png", DATA_DIR, name).utf8();
    66 
    6762    GOwnPtr<gchar> content;
    6863    gsize length;
    69     if (!g_file_get_contents(fileName.data(), &content.outPtr(), &length, 0))
     64    if (!g_file_get_contents(name.data(), &content.outPtr(), &length, 0))
    7065        return SharedBuffer::create();
    7166
     
    8176}
    8277
     78PassRefPtr<Image> loadImageFromFile(CString fileName)
     79{
     80    RefPtr<BitmapImage> img = BitmapImage::create();
     81    RefPtr<SharedBuffer> buffer = loadResourceSharedBuffer(fileName);
     82    img->setData(buffer.release(), true);
     83    return img.release();
     84}
     85
    8386PassRefPtr<Image> Image::loadPlatformResource(const char* name)
    8487{
    85     RefPtr<BitmapImage> img = BitmapImage::create();
    86     RefPtr<SharedBuffer> buffer = loadResourceSharedBuffer(name);
    87     img->setData(buffer.release(), true);
    88     return img.release();
     88    CString fileName;
     89    if (!strcmp("missingImage", name))
     90        fileName = getThemeIconFileName(GTK_STOCK_MISSING_IMAGE, 16);
     91    if (fileName.isNull())
     92        fileName = String::format("%s/webkit-1.0/images/%s.png", DATA_DIR, name).utf8();
     93
     94    return loadImageFromFile(fileName);
     95}
     96
     97PassRefPtr<Image> Image::loadPlatformThemeIcon(const char* name, int size)
     98{
     99    return loadImageFromFile(getThemeIconFileName(name, size));
    89100}
    90101
  • trunk/WebCore/platform/gtk/RenderThemeGtk.cpp

    r50527 r52266  
    2525#include "RenderThemeGtk.h"
    2626
    27 #include "TransformationMatrix.h"
     27#include "CString.h"
     28#include "GOwnPtr.h"
    2829#include "GraphicsContext.h"
     30#include "HTMLMediaElement.h"
     31#include "HTMLNames.h"
    2932#include "NotImplemented.h"
    3033#include "RenderBox.h"
    3134#include "RenderObject.h"
     35#include "TransformationMatrix.h"
     36#include "UserAgentStyleSheets.h"
    3237#include "gtkdrawing.h"
    3338
     
    3540
    3641namespace WebCore {
     42
     43using namespace HTMLNames;
     44
     45#if ENABLE(VIDEO)
     46static HTMLMediaElement* getMediaElementFromRenderObject(RenderObject* o)
     47{
     48    Node* node = o->node();
     49    Node* mediaNode = node ? node->shadowAncestorNode() : 0;
     50    if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagName(audioTag)))
     51        return 0;
     52
     53    return static_cast<HTMLMediaElement*>(mediaNode);
     54}
     55
     56static gchar* getIconNameForTextDirection(const char* baseName)
     57{
     58    GString* nameWithDirection = g_string_new(baseName);
     59    GtkTextDirection textDirection = gtk_widget_get_default_direction();
     60
     61    if (textDirection == GTK_TEXT_DIR_RTL)
     62        g_string_append(nameWithDirection, "-rtl");
     63    else if (textDirection == GTK_TEXT_DIR_LTR)
     64        g_string_append(nameWithDirection, "-ltr");
     65
     66    return g_string_free(nameWithDirection, FALSE);
     67}
     68
     69void RenderThemeGtk::initMediaStyling(GtkStyle* style, bool force)
     70{
     71    static bool stylingInitialized = false;
     72
     73    if (!stylingInitialized || force) {
     74        m_panelColor = style->bg[GTK_STATE_NORMAL];
     75        m_sliderColor = style->bg[GTK_STATE_ACTIVE];
     76        m_sliderThumbColor = style->bg[GTK_STATE_SELECTED];
     77
     78        // Names of these icons can vary because of text direction.
     79        gchar* playButtonIconName = getIconNameForTextDirection("gtk-media-play");
     80        gchar* seekBackButtonIconName = getIconNameForTextDirection("gtk-media-rewind");
     81        gchar* seekForwardButtonIconName = getIconNameForTextDirection("gtk-media-forward");
     82
     83        m_fullscreenButton.clear();
     84        m_muteButton.clear();
     85        m_unmuteButton.clear();
     86        m_playButton.clear();
     87        m_pauseButton.clear();
     88        m_seekBackButton.clear();
     89        m_seekForwardButton.clear();
     90
     91        m_fullscreenButton = Image::loadPlatformThemeIcon("gtk-fullscreen", m_mediaIconSize);
     92        m_muteButton = Image::loadPlatformThemeIcon("audio-volume-muted", m_mediaIconSize);
     93        m_unmuteButton = Image::loadPlatformThemeIcon("audio-volume-high", m_mediaIconSize);
     94        m_playButton = Image::loadPlatformThemeIcon(reinterpret_cast<const char*>(playButtonIconName), m_mediaIconSize);
     95        m_pauseButton = Image::loadPlatformThemeIcon("gtk-media-pause", m_mediaIconSize).releaseRef();
     96        m_seekBackButton = Image::loadPlatformThemeIcon(reinterpret_cast<const char*>(seekBackButtonIconName), m_mediaIconSize);
     97        m_seekForwardButton = Image::loadPlatformThemeIcon(reinterpret_cast<const char*>(seekForwardButtonIconName), m_mediaIconSize);
     98
     99        g_free(playButtonIconName);
     100        g_free(seekBackButtonIconName);
     101        g_free(seekForwardButtonIconName);
     102        stylingInitialized = true;
     103    }
     104}
     105#endif
    37106
    38107PassRefPtr<RenderTheme> RenderThemeGtk::create()
     
    54123    , m_gtkEntry(0)
    55124    , m_gtkTreeView(0)
     125    , m_panelColor(Color::white)
     126    , m_sliderColor(Color::white)
     127    , m_sliderThumbColor(Color::white)
     128    , m_mediaIconSize(16)
     129    , m_mediaSliderHeight(14)
     130    , m_mediaSliderThumbWidth(12)
     131    , m_mediaSliderThumbHeight(12)
     132    , m_fullscreenButton(0)
     133    , m_muteButton(0)
     134    , m_unmuteButton(0)
     135    , m_playButton(0)
     136    , m_pauseButton(0)
     137    , m_seekBackButton(0)
     138    , m_seekForwardButton(0)
    56139{
    57140    if (!mozGtkRefCount)
     
    59142
    60143    ++mozGtkRefCount;
     144
     145#if ENABLE(VIDEO)
     146    initMediaStyling(gtk_rc_get_style(GTK_WIDGET(gtkContainer())), false);
     147#endif
    61148}
    62149
     
    67154    if (!mozGtkRefCount)
    68155        moz_gtk_shutdown();
     156
     157    m_fullscreenButton.clear();
     158    m_muteButton.clear();
     159    m_unmuteButton.clear();
     160    m_playButton.clear();
     161    m_pauseButton.clear();
     162    m_seekBackButton.clear();
     163    m_seekForwardButton.clear();
    69164}
    70165
     
    72167{
    73168    switch (appearance) {
    74         case PushButtonPart:
    75         case ButtonPart:
    76         case TextFieldPart:
    77         case TextAreaPart:
    78         case SearchFieldPart:
    79         case MenulistPart:
    80         case RadioPart:
    81         case CheckboxPart:
    82             return true;
    83         default:
    84             return false;
     169    case PushButtonPart:
     170    case ButtonPart:
     171    case TextFieldPart:
     172    case TextAreaPart:
     173    case SearchFieldPart:
     174    case MenulistPart:
     175    case RadioPart:
     176    case CheckboxPart:
     177        return true;
     178    default:
     179        return false;
    85180    }
    86181}
     
    102197
    103198    // FIXME: This strategy is possibly incorrect for the GTK+ port.
    104     if (o->style()->appearance() == CheckboxPart ||
    105         o->style()->appearance() == RadioPart) {
     199    if (o->style()->appearance() == CheckboxPart
     200        || o->style()->appearance() == RadioPart) {
    106201        const RenderBox* box = toRenderBox(o);
    107202        return box->marginTop() + box->height() - 2;
     
    171266    // We might want to make setting flags the caller's job at some point rather than doing it here.
    172267    switch (type) {
    173         case MOZ_GTK_BUTTON:
    174             flags = GTK_RELIEF_NORMAL;
    175             break;
    176         case MOZ_GTK_CHECKBUTTON:
    177         case MOZ_GTK_RADIOBUTTON:
    178             flags = theme->isChecked(o);
    179             break;
    180         default:
    181             flags = 0;
    182             break;
     268    case MOZ_GTK_BUTTON:
     269        flags = GTK_RELIEF_NORMAL;
     270        break;
     271    case MOZ_GTK_CHECKBUTTON:
     272    case MOZ_GTK_RADIOBUTTON:
     273        flags = theme->isChecked(o);
     274        break;
     275    default:
     276        flags = 0;
     277        break;
    183278    }
    184279
     
    190285
    191286    // Find the clip rectangle
    192     cairo_t *cr = i.context->platformContext();
     287    cairo_t* cr = i.context->platformContext();
    193288    double clipX1, clipX2, clipY1, clipY2;
    194289    cairo_clip_extents(cr, &clipX1, &clipY1, &clipX2, &clipY2);
     
    222317        return;
    223318
    224     // FIXME: This is probably not correct use of indicator_size and indicator_spacing.
    225     gint indicator_size, indicator_spacing;
     319    // FIXME: This is probably not correct use of indicatorSize and indicatorSpacing.
     320    gint indicatorSize, indicatorSpacing;
    226321
    227322    switch (appearance) {
    228         case CheckboxPart:
    229             if (moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing) != MOZ_GTK_SUCCESS)
    230                 return;
    231             break;
    232         case RadioPart:
    233             if (moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing) != MOZ_GTK_SUCCESS)
    234                 return;
    235             break;
    236         default:
     323    case CheckboxPart:
     324        if (moz_gtk_checkbox_get_metrics(&indicatorSize, &indicatorSpacing) != MOZ_GTK_SUCCESS)
    237325            return;
     326        break;
     327    case RadioPart:
     328        if (moz_gtk_radio_get_metrics(&indicatorSize, &indicatorSpacing) != MOZ_GTK_SUCCESS)
     329            return;
     330        break;
     331    default:
     332        return;
    238333    }
    239334
    240335    // Other ports hard-code this to 13, but GTK+ users tend to demand the native look.
    241336    // It could be made a configuration option values other than 13 actually break site compatibility.
    242     int length = indicator_size + indicator_spacing;
     337    int length = indicatorSize + indicatorSpacing;
    243338    if (style->width().isIntrinsicOrAuto())
    244339        style->setWidth(Length(length, Fixed));
     
    374469}
    375470
     471void RenderThemeGtk::adjustSliderThumbSize(RenderObject* o) const
     472{
     473#if ENABLE(VIDEO)
     474    if (o->style()->appearance() == MediaSliderThumbPart) {
     475        o->style()->setWidth(Length(m_mediaSliderThumbWidth, Fixed));
     476        o->style()->setHeight(Length(m_mediaSliderThumbHeight, Fixed));
     477    }
     478#endif
     479}
     480
    376481Color RenderThemeGtk::platformActiveSelectionBackgroundColor() const
    377482{
     
    456561    m_gtkWindow = gtk_window_new(GTK_WINDOW_POPUP);
    457562    m_gtkContainer = GTK_CONTAINER(gtk_fixed_new());
     563    g_signal_connect(m_gtkWindow, "style-set", G_CALLBACK(gtkStyleSetCallback), const_cast<RenderThemeGtk*>(this));
    458564    gtk_container_add(GTK_CONTAINER(m_gtkWindow), GTK_WIDGET(m_gtkContainer));
    459565    gtk_widget_realize(m_gtkWindow);
     
    488594}
    489595
    490 }
     596void RenderThemeGtk::platformColorsDidChange()
     597{
     598#if ENABLE(VIDEO)
     599    initMediaStyling(gtk_rc_get_style(GTK_WIDGET(gtkContainer())), true);
     600#endif
     601    RenderTheme::platformColorsDidChange();
     602}
     603
     604#if ENABLE(VIDEO)
     605String RenderThemeGtk::extraMediaControlsStyleSheet()
     606{
     607    return String(mediaControlsGtkUserAgentStyleSheet, sizeof(mediaControlsGtkUserAgentStyleSheet));
     608}
     609
     610static inline bool paintMediaButton(GraphicsContext* context, const IntRect& r, Image* image, Color panelColor, int mediaIconSize)
     611{
     612    context->fillRect(FloatRect(r), panelColor, DeviceColorSpace);
     613    context->drawImage(image, DeviceColorSpace,
     614                       IntRect(r.x() + (r.width() - mediaIconSize) / 2,
     615                               r.y() + (r.height() - mediaIconSize) / 2,
     616                               mediaIconSize, mediaIconSize));
     617
     618    return false;
     619}
     620
     621bool RenderThemeGtk::paintMediaFullscreenButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     622{
     623    return paintMediaButton(paintInfo.context, r, m_fullscreenButton.get(), m_panelColor, m_mediaIconSize);
     624}
     625
     626bool RenderThemeGtk::paintMediaMuteButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     627{
     628    HTMLMediaElement* mediaElement = getMediaElementFromRenderObject(o);
     629    if (!mediaElement)
     630        return false;
     631
     632    return paintMediaButton(paintInfo.context, r, mediaElement->muted() ? m_unmuteButton.get() : m_muteButton.get(), m_panelColor, m_mediaIconSize);
     633}
     634
     635bool RenderThemeGtk::paintMediaPlayButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     636{
     637    HTMLMediaElement* mediaElement = getMediaElementFromRenderObject(o);
     638    if (!mediaElement)
     639        return false;
     640
     641    return paintMediaButton(paintInfo.context, r, mediaElement->canPlay() ? m_playButton.get() : m_pauseButton.get(), m_panelColor, m_mediaIconSize);
     642}
     643
     644bool RenderThemeGtk::paintMediaSeekBackButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     645{
     646    return paintMediaButton(paintInfo.context, r, m_seekBackButton.get(), m_panelColor, m_mediaIconSize);
     647}
     648
     649bool RenderThemeGtk::paintMediaSeekForwardButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     650{
     651    return paintMediaButton(paintInfo.context, r, m_seekForwardButton.get(), m_panelColor, m_mediaIconSize);
     652}
     653
     654bool RenderThemeGtk::paintMediaSliderTrack(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     655{
     656    paintInfo.context->fillRect(FloatRect(r), m_panelColor, DeviceColorSpace);
     657    paintInfo.context->fillRect(FloatRect(IntRect(r.x(), r.y() + (r.height() - m_mediaSliderHeight) / 2,
     658                                                  r.width(), m_mediaSliderHeight)), m_sliderColor, DeviceColorSpace);
     659    return false;
     660}
     661
     662bool RenderThemeGtk::paintMediaSliderThumb(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     663{
     664    // Make the thumb nicer with rounded corners.
     665    paintInfo.context->fillRoundedRect(r, IntSize(3, 3), IntSize(3, 3), IntSize(3, 3), IntSize(3, 3), m_sliderThumbColor, DeviceColorSpace);
     666    return false;
     667}
     668#endif
     669
     670}
  • trunk/WebCore/platform/gtk/RenderThemeGtk.h

    r45595 r52266  
    7474    virtual double caretBlinkInterval() const;
    7575
     76    virtual void platformColorsDidChange();
     77
    7678    // System fonts.
    7779    virtual void systemFont(int propId, FontDescription&) const;
     80
     81#if ENABLE(VIDEO)
     82    virtual String extraMediaControlsStyleSheet();
     83#endif
    7884
    7985protected:
     
    107113    virtual bool paintSearchFieldCancelButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
    108114
     115    virtual void adjustSliderThumbSize(RenderObject*) const;
     116
     117#if ENABLE(VIDEO)
     118    virtual void initMediaStyling(GtkStyle* style, bool force);
     119    virtual bool paintMediaFullscreenButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     120    virtual bool paintMediaPlayButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     121    virtual bool paintMediaMuteButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     122    virtual bool paintMediaSeekBackButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     123    virtual bool paintMediaSeekForwardButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     124    virtual bool paintMediaSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     125    virtual bool paintMediaSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     126#endif
    109127
    110128private:
     
    126144    mutable GtkWidget* m_gtkEntry;
    127145    mutable GtkWidget* m_gtkTreeView;
     146
     147    mutable Color m_panelColor;
     148    mutable Color m_sliderColor;
     149    mutable Color m_sliderThumbColor;
     150
     151    const int m_mediaIconSize;
     152    const int m_mediaSliderHeight;
     153    const int m_mediaSliderThumbWidth;
     154    const int m_mediaSliderThumbHeight;
     155
     156    RefPtr<Image> m_fullscreenButton;
     157    RefPtr<Image> m_muteButton;
     158    RefPtr<Image> m_unmuteButton;
     159    RefPtr<Image> m_playButton;
     160    RefPtr<Image> m_pauseButton;
     161    RefPtr<Image> m_seekBackButton;
     162    RefPtr<Image> m_seekForwardButton;
     163
    128164};
    129165
Note: See TracChangeset for help on using the changeset viewer.