[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

mrobinson at webkit.org mrobinson at webkit.org
Sun Feb 20 23:35:03 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit d5e080f98da7d4335591004318c9441bb278e917
Author: mrobinson at webkit.org <mrobinson at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Jan 21 21:33:07 2011 +0000

    2011-01-21  Martin Robinson  <mrobinson at igalia.com>
    
            Reviewed by Xan Lopez.
    
            [GTK] Menulist text often collides with separator
            https://bugs.webkit.org/show_bug.cgi?id=51155
    
            Rebaseline tests that have different affected by the metrics of
            the menulist.
    
            * platform/gtk/fast/forms/001-expected.checksum:
            * platform/gtk/fast/forms/001-expected.png:
            * platform/gtk/fast/forms/001-expected.txt:
            * platform/gtk/fast/forms/003-expected.checksum:
            * platform/gtk/fast/forms/003-expected.png:
            * platform/gtk/fast/forms/003-expected.txt:
            * platform/gtk/fast/forms/004-expected.checksum:
            * platform/gtk/fast/forms/004-expected.png:
            * platform/gtk/fast/forms/004-expected.txt:
            * platform/gtk/fast/forms/HTMLOptionElement_label01-expected.checksum:
            * platform/gtk/fast/forms/HTMLOptionElement_label01-expected.png:
            * platform/gtk/fast/forms/HTMLOptionElement_label01-expected.txt:
            * platform/gtk/fast/forms/HTMLOptionElement_label02-expected.checksum:
            * platform/gtk/fast/forms/HTMLOptionElement_label02-expected.png:
            * platform/gtk/fast/forms/HTMLOptionElement_label02-expected.txt:
            * platform/gtk/fast/forms/HTMLOptionElement_label03-expected.checksum:
            * platform/gtk/fast/forms/HTMLOptionElement_label03-expected.png:
            * platform/gtk/fast/forms/HTMLOptionElement_label03-expected.txt:
            * platform/gtk/fast/forms/HTMLOptionElement_label04-expected.checksum:
            * platform/gtk/fast/forms/HTMLOptionElement_label04-expected.png:
            * platform/gtk/fast/forms/HTMLOptionElement_label04-expected.txt:
            * platform/gtk/fast/forms/HTMLOptionElement_label06-expected.checksum:
            * platform/gtk/fast/forms/HTMLOptionElement_label06-expected.png:
            * platform/gtk/fast/forms/HTMLOptionElement_label06-expected.txt:
            * platform/gtk/fast/forms/HTMLOptionElement_label07-expected.checksum:
            * platform/gtk/fast/forms/HTMLOptionElement_label07-expected.png:
            * platform/gtk/fast/forms/HTMLOptionElement_label07-expected.txt:
            * platform/gtk/fast/forms/control-clip-overflow-expected.checksum:
            * platform/gtk/fast/forms/control-clip-overflow-expected.png:
            * platform/gtk/fast/forms/control-clip-overflow-expected.txt:
            * platform/gtk/fast/forms/control-restrict-line-height-expected.checksum:
            * platform/gtk/fast/forms/control-restrict-line-height-expected.png:
            * platform/gtk/fast/forms/control-restrict-line-height-expected.txt:
            * platform/gtk/fast/forms/disabled-select-change-index-expected.checksum:
            * platform/gtk/fast/forms/disabled-select-change-index-expected.png:
            * platform/gtk/fast/forms/disabled-select-change-index-expected.txt:
            * platform/gtk/fast/forms/form-element-geometry-expected.checksum:
            * platform/gtk/fast/forms/form-element-geometry-expected.png:
            * platform/gtk/fast/forms/form-element-geometry-expected.txt:
            * platform/gtk/fast/forms/input-file-re-render-expected.checksum: Added.
            * platform/gtk/fast/forms/input-file-re-render-expected.png: Added.
            * platform/gtk/fast/forms/menulist-deselect-update-expected.checksum:
            * platform/gtk/fast/forms/menulist-deselect-update-expected.png:
            * platform/gtk/fast/forms/menulist-deselect-update-expected.txt:
            * platform/gtk/fast/forms/menulist-narrow-width-expected.checksum:
            * platform/gtk/fast/forms/menulist-narrow-width-expected.png:
            * platform/gtk/fast/forms/menulist-narrow-width-expected.txt:
            * platform/gtk/fast/forms/menulist-no-overflow-expected.checksum:
            * platform/gtk/fast/forms/menulist-no-overflow-expected.png:
            * platform/gtk/fast/forms/menulist-no-overflow-expected.txt:
            * platform/gtk/fast/forms/menulist-restrict-line-height-expected.checksum:
            * platform/gtk/fast/forms/menulist-restrict-line-height-expected.png:
            * platform/gtk/fast/forms/menulist-restrict-line-height-expected.txt:
            * platform/gtk/fast/forms/menulist-separator-painting-expected.checksum:
            * platform/gtk/fast/forms/menulist-separator-painting-expected.png:
            * platform/gtk/fast/forms/menulist-separator-painting-expected.txt:
            * platform/gtk/fast/forms/menulist-style-color-expected.checksum:
            * platform/gtk/fast/forms/menulist-style-color-expected.png:
            * platform/gtk/fast/forms/menulist-style-color-expected.txt:
            * platform/gtk/fast/forms/menulist-width-change-expected.checksum:
            * platform/gtk/fast/forms/menulist-width-change-expected.png:
            * platform/gtk/fast/forms/menulist-width-change-expected.txt:
            * platform/gtk/fast/forms/option-script-expected.checksum:
            * platform/gtk/fast/forms/option-script-expected.png:
            * platform/gtk/fast/forms/option-script-expected.txt:
            * platform/gtk/fast/forms/option-strip-whitespace-expected.checksum:
            * platform/gtk/fast/forms/option-strip-whitespace-expected.png:
            * platform/gtk/fast/forms/option-strip-whitespace-expected.txt:
            * platform/gtk/fast/forms/option-text-clip-expected.checksum:
            * platform/gtk/fast/forms/option-text-clip-expected.png:
            * platform/gtk/fast/forms/option-text-clip-expected.txt:
            * platform/gtk/fast/forms/select-align-expected.checksum:
            * platform/gtk/fast/forms/select-align-expected.png:
            * platform/gtk/fast/forms/select-align-expected.txt:
            * platform/gtk/fast/forms/select-baseline-expected.checksum:
            * platform/gtk/fast/forms/select-baseline-expected.png:
            * platform/gtk/fast/forms/select-baseline-expected.txt:
            * platform/gtk/fast/forms/select-change-listbox-to-popup-expected.checksum:
            * platform/gtk/fast/forms/select-change-listbox-to-popup-expected.png:
            * platform/gtk/fast/forms/select-change-listbox-to-popup-expected.txt:
            * platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.checksum:
            * platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.png:
            * platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.txt:
            * platform/gtk/fast/forms/select-disabled-appearance-expected.checksum:
            * platform/gtk/fast/forms/select-disabled-appearance-expected.png:
            * platform/gtk/fast/forms/select-disabled-appearance-expected.txt:
            * platform/gtk/fast/forms/select-initial-position-expected.checksum:
            * platform/gtk/fast/forms/select-initial-position-expected.png:
            * platform/gtk/fast/forms/select-initial-position-expected.txt:
            * platform/gtk/fast/forms/select-selected-expected.checksum:
            * platform/gtk/fast/forms/select-selected-expected.png:
            * platform/gtk/fast/forms/select-selected-expected.txt:
            * platform/gtk/fast/forms/select-size-expected.checksum:
            * platform/gtk/fast/forms/select-size-expected.png:
            * platform/gtk/fast/forms/select-size-expected.txt:
            * platform/gtk/fast/forms/select-style-expected.checksum:
            * platform/gtk/fast/forms/select-style-expected.png:
            * platform/gtk/fast/forms/select-style-expected.txt:
            * platform/gtk/fast/forms/select-visual-hebrew-expected.checksum:
            * platform/gtk/fast/forms/select-visual-hebrew-expected.png:
            * platform/gtk/fast/forms/select-visual-hebrew-expected.txt:
            * platform/gtk/fast/forms/select-writing-direction-natural-expected.checksum:
            * platform/gtk/fast/forms/select-writing-direction-natural-expected.png:
            * platform/gtk/fast/forms/select-writing-direction-natural-expected.txt:
            * platform/gtk/fast/forms/stuff-on-my-optgroup-expected.checksum:
            * platform/gtk/fast/forms/stuff-on-my-optgroup-expected.png:
            * platform/gtk/fast/forms/stuff-on-my-optgroup-expected.txt:
    2011-01-21  Martin Robinson  <mrobinson at igalia.com>
    
            Reviewed by Xan Lopez.
    
            [GTK] Menulist text often collides with separator
            https://bugs.webkit.org/show_bug.cgi?id=51155
    
            Move menulist rendering to RenderThemeGtk and correct padding code
            for separators in menulists.
    
            * platform/gtk/RenderThemeGtk.cpp:
            (WebCore::RenderThemeGtk::RenderThemeGtk): Initialize new widget members.
            (WebCore::RenderThemeGtk::getComboBoxSeparatorWidth): Added.
            (WebCore::RenderThemeGtk::comboBoxArrowSize): Added.
            (WebCore::getButtonInnerBorder): Added.
            (WebCore::RenderThemeGtk::getComboBoxPadding): Do this manually instead of using
            Mozilla code.
            (WebCore::RenderThemeGtk::paintMenuList): Ditto.
            (WebCore::setupWidget): Abstracted this part of the setupWidgetAndAddToContainer
            out to handle child widgets of comboboxes.
            (WebCore::RenderThemeGtk::setupWidgetAndAddToContainer): Abstracted out setupWidget.
            (WebCore::RenderThemeGtk::gtkContainer): Added.
            (WebCore::getGtkComboBoxButton): Added.
            (WebCore::getGtkComboBoxPieces): Added.
            (WebCore::RenderThemeGtk::gtkComboBox): Call setupWidget here.
            (WebCore::RenderThemeGtk::refreshComboBoxChildren): Added.
            (WebCore::RenderThemeGtk::gtkComboBoxButton): Added.
            (WebCore::RenderThemeGtk::gtkComboBoxArrow): Added.
            (WebCore::RenderThemeGtk::gtkComboBoxSeparator): Added.
            * platform/gtk/RenderThemeGtk.h: Added new members and methods.
            * platform/gtk/WidgetRenderingContext.h: Added new members and methods.
            * platform/gtk/WidgetRenderingContextGtk2.cpp:
            (WebCore::WidgetRenderingContext::gtkPaintArrow):
            (WebCore::WidgetRenderingContext::gtkPaintVLine):
            * platform/gtk/WidgetRenderingContextGtk3.cpp:
            (WebCore::WidgetRenderingContext::gtkPaintArrow):
            (WebCore::WidgetRenderingContext::gtkPaintVLine):
            * platform/gtk/gtk2drawing.c: Removed code for drawing menulists and buttons.
            (moz_gtk_init):
            (moz_gtk_get_widget_border):
            (moz_gtk_widget_paint):
            * platform/gtk/gtk3drawing.c:
            (moz_gtk_init):
            (moz_gtk_get_widget_border):
            (moz_gtk_widget_paint):
            * platform/gtk/gtkdrawing.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76388 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 5198315..40cdf67 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,121 @@
+2011-01-21  Martin Robinson  <mrobinson at igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [GTK] Menulist text often collides with separator
+        https://bugs.webkit.org/show_bug.cgi?id=51155
+
+        Rebaseline tests that have different affected by the metrics of
+        the menulist.
+
+        * platform/gtk/fast/forms/001-expected.checksum:
+        * platform/gtk/fast/forms/001-expected.png:
+        * platform/gtk/fast/forms/001-expected.txt:
+        * platform/gtk/fast/forms/003-expected.checksum:
+        * platform/gtk/fast/forms/003-expected.png:
+        * platform/gtk/fast/forms/003-expected.txt:
+        * platform/gtk/fast/forms/004-expected.checksum:
+        * platform/gtk/fast/forms/004-expected.png:
+        * platform/gtk/fast/forms/004-expected.txt:
+        * platform/gtk/fast/forms/HTMLOptionElement_label01-expected.checksum:
+        * platform/gtk/fast/forms/HTMLOptionElement_label01-expected.png:
+        * platform/gtk/fast/forms/HTMLOptionElement_label01-expected.txt:
+        * platform/gtk/fast/forms/HTMLOptionElement_label02-expected.checksum:
+        * platform/gtk/fast/forms/HTMLOptionElement_label02-expected.png:
+        * platform/gtk/fast/forms/HTMLOptionElement_label02-expected.txt:
+        * platform/gtk/fast/forms/HTMLOptionElement_label03-expected.checksum:
+        * platform/gtk/fast/forms/HTMLOptionElement_label03-expected.png:
+        * platform/gtk/fast/forms/HTMLOptionElement_label03-expected.txt:
+        * platform/gtk/fast/forms/HTMLOptionElement_label04-expected.checksum:
+        * platform/gtk/fast/forms/HTMLOptionElement_label04-expected.png:
+        * platform/gtk/fast/forms/HTMLOptionElement_label04-expected.txt:
+        * platform/gtk/fast/forms/HTMLOptionElement_label06-expected.checksum:
+        * platform/gtk/fast/forms/HTMLOptionElement_label06-expected.png:
+        * platform/gtk/fast/forms/HTMLOptionElement_label06-expected.txt:
+        * platform/gtk/fast/forms/HTMLOptionElement_label07-expected.checksum:
+        * platform/gtk/fast/forms/HTMLOptionElement_label07-expected.png:
+        * platform/gtk/fast/forms/HTMLOptionElement_label07-expected.txt:
+        * platform/gtk/fast/forms/control-clip-overflow-expected.checksum:
+        * platform/gtk/fast/forms/control-clip-overflow-expected.png:
+        * platform/gtk/fast/forms/control-clip-overflow-expected.txt:
+        * platform/gtk/fast/forms/control-restrict-line-height-expected.checksum:
+        * platform/gtk/fast/forms/control-restrict-line-height-expected.png:
+        * platform/gtk/fast/forms/control-restrict-line-height-expected.txt:
+        * platform/gtk/fast/forms/disabled-select-change-index-expected.checksum:
+        * platform/gtk/fast/forms/disabled-select-change-index-expected.png:
+        * platform/gtk/fast/forms/disabled-select-change-index-expected.txt:
+        * platform/gtk/fast/forms/form-element-geometry-expected.checksum:
+        * platform/gtk/fast/forms/form-element-geometry-expected.png:
+        * platform/gtk/fast/forms/form-element-geometry-expected.txt:
+        * platform/gtk/fast/forms/input-file-re-render-expected.checksum: Added.
+        * platform/gtk/fast/forms/input-file-re-render-expected.png: Added.
+        * platform/gtk/fast/forms/menulist-deselect-update-expected.checksum:
+        * platform/gtk/fast/forms/menulist-deselect-update-expected.png:
+        * platform/gtk/fast/forms/menulist-deselect-update-expected.txt:
+        * platform/gtk/fast/forms/menulist-narrow-width-expected.checksum:
+        * platform/gtk/fast/forms/menulist-narrow-width-expected.png:
+        * platform/gtk/fast/forms/menulist-narrow-width-expected.txt:
+        * platform/gtk/fast/forms/menulist-no-overflow-expected.checksum:
+        * platform/gtk/fast/forms/menulist-no-overflow-expected.png:
+        * platform/gtk/fast/forms/menulist-no-overflow-expected.txt:
+        * platform/gtk/fast/forms/menulist-restrict-line-height-expected.checksum:
+        * platform/gtk/fast/forms/menulist-restrict-line-height-expected.png:
+        * platform/gtk/fast/forms/menulist-restrict-line-height-expected.txt:
+        * platform/gtk/fast/forms/menulist-separator-painting-expected.checksum:
+        * platform/gtk/fast/forms/menulist-separator-painting-expected.png:
+        * platform/gtk/fast/forms/menulist-separator-painting-expected.txt:
+        * platform/gtk/fast/forms/menulist-style-color-expected.checksum:
+        * platform/gtk/fast/forms/menulist-style-color-expected.png:
+        * platform/gtk/fast/forms/menulist-style-color-expected.txt:
+        * platform/gtk/fast/forms/menulist-width-change-expected.checksum:
+        * platform/gtk/fast/forms/menulist-width-change-expected.png:
+        * platform/gtk/fast/forms/menulist-width-change-expected.txt:
+        * platform/gtk/fast/forms/option-script-expected.checksum:
+        * platform/gtk/fast/forms/option-script-expected.png:
+        * platform/gtk/fast/forms/option-script-expected.txt:
+        * platform/gtk/fast/forms/option-strip-whitespace-expected.checksum:
+        * platform/gtk/fast/forms/option-strip-whitespace-expected.png:
+        * platform/gtk/fast/forms/option-strip-whitespace-expected.txt:
+        * platform/gtk/fast/forms/option-text-clip-expected.checksum:
+        * platform/gtk/fast/forms/option-text-clip-expected.png:
+        * platform/gtk/fast/forms/option-text-clip-expected.txt:
+        * platform/gtk/fast/forms/select-align-expected.checksum:
+        * platform/gtk/fast/forms/select-align-expected.png:
+        * platform/gtk/fast/forms/select-align-expected.txt:
+        * platform/gtk/fast/forms/select-baseline-expected.checksum:
+        * platform/gtk/fast/forms/select-baseline-expected.png:
+        * platform/gtk/fast/forms/select-baseline-expected.txt:
+        * platform/gtk/fast/forms/select-change-listbox-to-popup-expected.checksum:
+        * platform/gtk/fast/forms/select-change-listbox-to-popup-expected.png:
+        * platform/gtk/fast/forms/select-change-listbox-to-popup-expected.txt:
+        * platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.checksum:
+        * platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.png:
+        * platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.txt:
+        * platform/gtk/fast/forms/select-disabled-appearance-expected.checksum:
+        * platform/gtk/fast/forms/select-disabled-appearance-expected.png:
+        * platform/gtk/fast/forms/select-disabled-appearance-expected.txt:
+        * platform/gtk/fast/forms/select-initial-position-expected.checksum:
+        * platform/gtk/fast/forms/select-initial-position-expected.png:
+        * platform/gtk/fast/forms/select-initial-position-expected.txt:
+        * platform/gtk/fast/forms/select-selected-expected.checksum:
+        * platform/gtk/fast/forms/select-selected-expected.png:
+        * platform/gtk/fast/forms/select-selected-expected.txt:
+        * platform/gtk/fast/forms/select-size-expected.checksum:
+        * platform/gtk/fast/forms/select-size-expected.png:
+        * platform/gtk/fast/forms/select-size-expected.txt:
+        * platform/gtk/fast/forms/select-style-expected.checksum:
+        * platform/gtk/fast/forms/select-style-expected.png:
+        * platform/gtk/fast/forms/select-style-expected.txt:
+        * platform/gtk/fast/forms/select-visual-hebrew-expected.checksum:
+        * platform/gtk/fast/forms/select-visual-hebrew-expected.png:
+        * platform/gtk/fast/forms/select-visual-hebrew-expected.txt:
+        * platform/gtk/fast/forms/select-writing-direction-natural-expected.checksum:
+        * platform/gtk/fast/forms/select-writing-direction-natural-expected.png:
+        * platform/gtk/fast/forms/select-writing-direction-natural-expected.txt:
+        * platform/gtk/fast/forms/stuff-on-my-optgroup-expected.checksum:
+        * platform/gtk/fast/forms/stuff-on-my-optgroup-expected.png:
+        * platform/gtk/fast/forms/stuff-on-my-optgroup-expected.txt:
+
 2011-01-21  Csaba Osztrogonác  <ossy at webkit.org>
 
         Unreviewed trivial fix.
diff --git a/LayoutTests/platform/gtk/fast/forms/001-expected.checksum b/LayoutTests/platform/gtk/fast/forms/001-expected.checksum
index 5fab90c..8d4593a 100644
--- a/LayoutTests/platform/gtk/fast/forms/001-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/001-expected.checksum
@@ -1 +1 @@
-260139f2ec328b118fddf88f6b4c1df6
\ No newline at end of file
+d17a7e8c99371057cceec8a172454940
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/001-expected.png b/LayoutTests/platform/gtk/fast/forms/001-expected.png
index d812001..d55cf04 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/001-expected.png and b/LayoutTests/platform/gtk/fast/forms/001-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/001-expected.txt b/LayoutTests/platform/gtk/fast/forms/001-expected.txt
index 89b4ff3..c205227 100644
--- a/LayoutTests/platform/gtk/fast/forms/001-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/001-expected.txt
@@ -9,12 +9,12 @@ layer at (0,0) size 800x600
       RenderTable {TABLE} at (0,58) size 784x86 [border: (2px outset #808080)]
         RenderTableSection {TBODY} at (2,2) size 780x82
           RenderTableRow {TR} at (0,0) size 780x82
-            RenderTableCell {TD} at (0,0) size 135x82 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-              RenderMenuList {SELECT} at (3,1) size 129x80 [bgcolor=#FFFFFF] [border: (40px solid #FF0000)]
-                RenderBlock (anonymous) at (40,40) size 49x23
-                  RenderText at (2,2) size 28x19
-                    text run at (2,2) width 28: "Foo"
-            RenderTableCell {TD} at (135,40) size 645x2 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (0,0) size 144x82 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderMenuList {SELECT} at (3,1) size 138x80 [bgcolor=#FFFFFF] [border: (40px solid #FF0000)]
+                RenderBlock (anonymous) at (40,40) size 58x25
+                  RenderText at (3,3) size 28x19
+                    text run at (3,3) width 28: "Foo"
+            RenderTableCell {TD} at (144,40) size 636x2 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
       RenderBlock {P} at (0,160) size 784x24
         RenderTable {TABLE} at (0,0) size 784x24 [border: (2px outset #808080)]
           RenderTableSection {TBODY} at (2,2) size 780x20
diff --git a/LayoutTests/platform/gtk/fast/forms/003-expected.checksum b/LayoutTests/platform/gtk/fast/forms/003-expected.checksum
index 8ed2328..de924cd 100644
--- a/LayoutTests/platform/gtk/fast/forms/003-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/003-expected.checksum
@@ -1 +1 @@
-582cbfa798691dffcf714093d60fd0c2
\ No newline at end of file
+4ca084000f9330cfe464a8f2f92ea434
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/003-expected.png b/LayoutTests/platform/gtk/fast/forms/003-expected.png
index 8125621..d124bf2 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/003-expected.png and b/LayoutTests/platform/gtk/fast/forms/003-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/003-expected.txt b/LayoutTests/platform/gtk/fast/forms/003-expected.txt
index 04e77c3..e8794ef 100644
--- a/LayoutTests/platform/gtk/fast/forms/003-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/003-expected.txt
@@ -3,10 +3,10 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderMenuList {SELECT} at (2,0) size 61x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 59x23
-          RenderText at (2,2) size 38x19
-            text run at (2,2) width 38: "Hello"
-      RenderBlock (anonymous) at (0,27) size 784x19
+      RenderMenuList {SELECT} at (2,0) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 68x25
+          RenderText at (3,3) size 38x19
+            text run at (3,3) width 38: "Hello"
+      RenderBlock (anonymous) at (0,29) size 784x19
         RenderText {#text} at (0,0) size 292x19
           text run at (0,0) width 292: "This text should be *below* the select widget."
diff --git a/LayoutTests/platform/gtk/fast/forms/004-expected.checksum b/LayoutTests/platform/gtk/fast/forms/004-expected.checksum
index 78c6353..5f2cae8 100644
--- a/LayoutTests/platform/gtk/fast/forms/004-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/004-expected.checksum
@@ -1 +1 @@
-c1b878c37844b5f3088e56e53fe94dfa
\ No newline at end of file
+1d67fe6b13e8a0d8d6ec28cfec31e014
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/004-expected.png b/LayoutTests/platform/gtk/fast/forms/004-expected.png
index 7c41658..296b1a3 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/004-expected.png and b/LayoutTests/platform/gtk/fast/forms/004-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/004-expected.txt b/LayoutTests/platform/gtk/fast/forms/004-expected.txt
index 024eff3..c0b0a01 100644
--- a/LayoutTests/platform/gtk/fast/forms/004-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/004-expected.txt
@@ -3,14 +3,14 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderMenuList {SELECT} at (2,2) size 61x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 59x23
-          RenderText at (2,2) size 38x19
-            text run at (2,2) width 38: "Hello"
-      RenderText {#text} at (65,5) size 4x19
-        text run at (65,5) width 4: " "
-      RenderMenuList {SELECT} at (71,2) size 88x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 86x23
-          RenderText at (2,2) size 65x19
-            text run at (2,2) width 65: "Goodbye"
+      RenderMenuList {SELECT} at (2,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 68x25
+          RenderText at (3,3) size 38x19
+            text run at (3,3) width 38: "Hello"
+      RenderText {#text} at (74,6) size 4x19
+        text run at (74,6) width 4: " "
+      RenderMenuList {SELECT} at (80,2) size 97x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 95x25
+          RenderText at (3,3) size 65x19
+            text run at (3,3) width 65: "Goodbye"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.checksum b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.checksum
index f54aa9b..87f761f 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.checksum
@@ -1 +1 @@
-38785a0d35f3b3f3796b9598802c4c66
\ No newline at end of file
+7e9087b753a7f485e4b3b6570d852720
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.png b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.png
index 32ab180..a763895 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.png and b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.txt b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.txt
index 2696173..a7794e8 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label01-expected.txt
@@ -6,8 +6,8 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 673x19
         text run at (0,0) width 673: "In the selection list below, the text 'The label for this element is \"1\"' should appear, and not the character '1'"
       RenderBR {BR} at (673,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 237x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 235x23
-          RenderText at (2,2) size 214x19
-            text run at (2,2) width 214: "the label for this element is \"1\""
+      RenderMenuList {SELECT} at (2,21) size 246x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 244x25
+          RenderText at (3,3) size 214x19
+            text run at (3,3) width 214: "the label for this element is \"1\""
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.checksum b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.checksum
index 8bbdec3..94d200d 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.checksum
@@ -1 +1 @@
-097c8a6ccbf22c5e91e968b6e55d4bf7
\ No newline at end of file
+1b1aaa0d807519b0fc16a8a7dedfe1b8
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.png b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.png
index d471519..c2cb513 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.png and b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.txt b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.txt
index ac6324d..a0ca20e 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label02-expected.txt
@@ -6,8 +6,8 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 300x19
         text run at (0,0) width 300: "With the label empty, the enclosing text is used."
       RenderBR {BR} at (300,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 385x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 383x23
-          RenderText at (2,2) size 362x19
-            text run at (2,2) width 362: "empty label should display empty string to match IE"
+      RenderMenuList {SELECT} at (2,21) size 394x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 392x25
+          RenderText at (3,3) size 362x19
+            text run at (3,3) width 362: "empty label should display empty string to match IE"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.checksum b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.checksum
index 186d506..fcf6bcb 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.checksum
@@ -1 +1 @@
-846a8837ced392a8253a403bdb76b0af
\ No newline at end of file
+308bb5c1afcd53ba52a9a012160abb7c
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.png b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.png
index 7aef999..9a2c660 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.png and b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.txt b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.txt
index 0ee344f..b587a06 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label03-expected.txt
@@ -6,8 +6,8 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 436x19
         text run at (0,0) width 436: "When the label contains only white space, the containing text is used."
       RenderBR {BR} at (436,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 427x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 425x23
-          RenderText at (2,2) size 404x19
-            text run at (2,2) width 404: "white space label should display empty string to match IE"
+      RenderMenuList {SELECT} at (2,21) size 436x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 434x25
+          RenderText at (3,3) size 404x19
+            text run at (3,3) width 404: "white space label should display empty string to match IE"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.checksum b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.checksum
index 1385d53..d13f0f2 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.checksum
@@ -1 +1 @@
-c3d226928d3a3344fb7694b788b5a22c
\ No newline at end of file
+bb71b77f4aae4dcd8f43e24271f7f020
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.png b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.png
index 0961f41..81d023b 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.png and b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.txt b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.txt
index 892867c..af6c0a7 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label04-expected.txt
@@ -6,8 +6,8 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 595x19
         text run at (0,0) width 595: "The label attribute appears, but is missing the equals value piece, so the containing text is used."
       RenderBR {BR} at (595,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 583x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 581x23
-          RenderText at (2,2) size 560x19
-            text run at (2,2) width 560: "the label attribute is mentioned but no value is specified; this text should appear"
+      RenderMenuList {SELECT} at (2,21) size 592x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 590x25
+          RenderText at (3,3) size 560x19
+            text run at (3,3) width 560: "the label attribute is mentioned but no value is specified; this text should appear"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.checksum b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.checksum
index dc19714..c8e9fdc 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.checksum
@@ -1 +1 @@
-cc021af3c805df12689b9d080de3d1bc
\ No newline at end of file
+b620040b2eb12fe118e46a80bd1a8e03
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.png b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.png
index b7f7d2d..5a67259 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.png and b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.txt b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.txt
index dd7c20e..dd3e13f 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label06-expected.txt
@@ -6,7 +6,7 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 718x19
         text run at (0,0) width 718: "The select item below has a label specified, and no enclosed text. There should be no text shown in the select box."
       RenderBR {BR} at (718,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 23x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 21x23
-          RenderBR at (2,2) size 0x19 [bgcolor=#FFFFFF]
+      RenderMenuList {SELECT} at (2,21) size 32x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 30x25
+          RenderBR at (3,3) size 0x19 [bgcolor=#FFFFFF]
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.checksum b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.checksum
index 99ada91..df12c58 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.checksum
@@ -1 +1 @@
-272fc9fee934f1c5a1387de2d8a108ee
\ No newline at end of file
+d575f18f7214f56a42d0d5e7f73a9836
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.png b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.png
index 8e7c8d4..3a2eb94 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.png and b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.txt b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.txt
index ab8a10e..fe1a5ff 100644
--- a/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/HTMLOptionElement_label07-expected.txt
@@ -7,7 +7,7 @@ layer at (0,0) size 800x600
         text run at (0,0) width 781: "The select item below has a label specified, and enclosed text that is whitespace. There should be no text shown in the select"
         text run at (0,19) width 28: "box."
       RenderBR {BR} at (28,34) size 0x0
-      RenderMenuList {SELECT} at (2,40) size 23x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 21x23
-          RenderBR at (2,2) size 0x19 [bgcolor=#FFFFFF]
+      RenderMenuList {SELECT} at (2,40) size 32x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 30x25
+          RenderBR at (3,3) size 0x19 [bgcolor=#FFFFFF]
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.checksum b/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.checksum
index 3e6ecd6..d0ec3a7 100644
--- a/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.checksum
@@ -1 +1 @@
-d5d83890bc6cb3937249d9660562d436
\ No newline at end of file
+042fa04b0ac1783f3467296ab313f62e
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.png b/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.png
index a0bf2b0..93d203e 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.png and b/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.txt b/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.txt
index 9b2c0d8..85dce80 100644
--- a/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/control-clip-overflow-expected.txt
@@ -21,10 +21,10 @@ layer at (0,0) size 800x600
           text run at (0,0) width 402: "There should not be scroll bars below the popup and the button."
 layer at (8,97) size 100x50
   RenderBlock {DIV} at (0,89) size 100x50
-    RenderMenuList {SELECT} at (0,2) size 80x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-      RenderBlock (anonymous) at (1,1) size 78x23
-        RenderText at (2,2) size 191x19
-          text run at (2,2) width 191: "Lorem ipsum dolor sit amet"
+    RenderMenuList {SELECT} at (0,2) size 80x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+      RenderBlock (anonymous) at (1,1) size 78x25
+        RenderText at (3,3) size 191x19
+          text run at (3,3) width 191: "Lorem ipsum dolor sit amet"
     RenderText {#text} at (0,0) size 0x0
 layer at (8,167) size 100x50
   RenderBlock {DIV} at (0,159) size 100x50
diff --git a/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.checksum b/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.checksum
index 92c946a..11543ee 100644
--- a/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.checksum
@@ -1 +1 @@
-bad598a7979a730f20cc73071da25170
\ No newline at end of file
+51b553941fd831b7effd11650dc9954c
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.png b/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.png
index a85c7be..96a0308 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.png and b/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.txt b/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.txt
index c4b8a1f..0813b4b 100644
--- a/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/control-restrict-line-height-expected.txt
@@ -6,26 +6,26 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 519x19
         text run at (0,0) width 519: "This tests that we don't honor line-height for controls that have restricted font size. "
       RenderBR {BR} at (0,0) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 381x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 379x23
-          RenderText at (2,2) size 358x19
-            text run at (2,2) width 358: "This text should be centered vertically in the button"
-      RenderText {#text} at (385,24) size 4x19
-        text run at (385,24) width 4: " "
+      RenderMenuList {SELECT} at (2,21) size 390x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 388x25
+          RenderText at (3,3) size 358x19
+            text run at (3,3) width 358: "This text should be centered vertically in the button"
+      RenderText {#text} at (394,25) size 4x19
+        text run at (394,25) width 4: " "
       RenderBR {BR} at (0,0) size 0x0
-      RenderButton {INPUT} at (2,50) size 374x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
+      RenderButton {INPUT} at (2,52) size 374x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
         RenderBlock (anonymous) at (8,4) size 358x19
           RenderText at (0,0) size 358x19
             text run at (0,0) width 358: "This text should be centered vertically in the button"
-      RenderText {#text} at (378,54) size 4x19
-        text run at (378,54) width 4: " "
+      RenderText {#text} at (378,56) size 4x19
+        text run at (378,56) width 4: " "
       RenderBR {BR} at (0,0) size 0x0
-      RenderTextControl {INPUT} at (2,82) size 194x25 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+      RenderTextControl {INPUT} at (2,84) size 194x25 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
         RenderBlock {DIV} at (3,2) size 188x20
           RenderBlock {DIV} at (0,16) size 0x0
           RenderBlock {DIV} at (172,0) size 16x16
       RenderText {#text} at (0,0) size 0x0
-layer at (13,93) size 172x19 scrollWidth 360
+layer at (13,95) size 172x19 scrollWidth 360
   RenderBlock {DIV} at (0,1) size 172x19
     RenderText {#text} at (1,0) size 358x19
       text run at (1,0) width 358: "This text should be centered vertically in the button"
diff --git a/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.checksum b/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.checksum
index bb7bf07..bcd7528 100644
--- a/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.checksum
@@ -1 +1 @@
-516a047e6d6e23001cdffb2c576119bf
\ No newline at end of file
+f9be45d6e30f70765359742264890156
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.png b/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.png
index 7bafa3f..6ee77e7 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.png and b/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.txt b/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.txt
index 8bb5bcc..abd29e9 100644
--- a/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/disabled-select-change-index-expected.txt
@@ -1,57 +1,57 @@
-layer at (0,0) size 781x624
+layer at (0,0) size 781x632
   RenderView at (0,0) size 781x600
-layer at (0,0) size 781x624
-  RenderBlock {HTML} at (0,0) size 781x624
-    RenderBody {BODY} at (8,8) size 765x608
-      RenderMenuList {SELECT} at (2,2) size 67x25 [color=#808080] [bgcolor=#FFFFFF] [border: (1px solid #808080)]
-        RenderBlock (anonymous) at (1,1) size 65x23
-          RenderText at (2,2) size 44x19
-            text run at (2,2) width 44: "PASS"
-      RenderBR {BR} at (71,20) size 0x0
-      RenderMenuList {SELECT} at (2,31) size 67x25 [color=#808080] [bgcolor=#FFFFFF] [border: (1px solid #808080)]
-        RenderBlock (anonymous) at (1,1) size 65x23
-          RenderText at (2,2) size 44x19
-            text run at (2,2) width 44: "PASS"
-      RenderBR {BR} at (71,49) size 0x0
-      RenderMenuList {SELECT} at (2,60) size 67x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 65x23
-          RenderText at (2,2) size 44x19
-            text run at (2,2) width 44: "PASS"
-      RenderBR {BR} at (71,78) size 0x0
-      RenderMenuList {SELECT} at (2,89) size 67x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 65x23
-          RenderText at (2,2) size 44x19
-            text run at (2,2) width 44: "PASS"
-      RenderBR {BR} at (71,107) size 0x0
-      RenderListBox {SELECT} at (2,118) size 66x81 [color=#808080] [bgcolor=#FFFFFF] [border: (1px inset #808080)]
-      RenderBR {BR} at (70,194) size 0x0
-      RenderListBox {SELECT} at (2,203) size 66x81 [color=#808080] [bgcolor=#FFFFFF] [border: (1px inset #808080)]
-      RenderBR {BR} at (70,279) size 0x0
-      RenderListBox {SELECT} at (2,288) size 66x81 [bgcolor=#FFFFFF] [border: (1px inset #808080)]
-      RenderBR {BR} at (70,364) size 0x0
-      RenderListBox {SELECT} at (2,373) size 66x81 [bgcolor=#FFFFFF] [border: (1px inset #808080)]
-      RenderBR {BR} at (70,449) size 0x0
-      RenderText {#text} at (0,456) size 486x19
-        text run at (0,456) width 486: "PASS: sel1 correctly set to selectedIndex 1 by sel1.options[1].selected = true."
-      RenderBR {BR} at (486,471) size 0x0
-      RenderText {#text} at (0,475) size 438x19
-        text run at (0,475) width 438: "PASS: sel2 correctly set to selectedIndex 1 by sel2.selectedIndex = 1."
-      RenderBR {BR} at (438,490) size 0x0
-      RenderText {#text} at (0,494) size 486x19
-        text run at (0,494) width 486: "PASS: sel3 correctly set to selectedIndex 1 by sel3.options[1].selected = true."
-      RenderBR {BR} at (486,509) size 0x0
-      RenderText {#text} at (0,513) size 438x19
-        text run at (0,513) width 438: "PASS: sel4 correctly set to selectedIndex 1 by sel4.selectedIndex = 1."
-      RenderBR {BR} at (438,528) size 0x0
-      RenderText {#text} at (0,532) size 486x19
-        text run at (0,532) width 486: "PASS: sel5 correctly set to selectedIndex 1 by sel5.options[1].selected = true."
-      RenderBR {BR} at (486,547) size 0x0
-      RenderText {#text} at (0,551) size 438x19
-        text run at (0,551) width 438: "PASS: sel6 correctly set to selectedIndex 1 by sel6.selectedIndex = 1."
-      RenderBR {BR} at (438,566) size 0x0
-      RenderText {#text} at (0,570) size 486x19
-        text run at (0,570) width 486: "PASS: sel7 correctly set to selectedIndex 1 by sel7.options[1].selected = true."
-      RenderBR {BR} at (486,585) size 0x0
-      RenderText {#text} at (0,589) size 438x19
-        text run at (0,589) width 438: "PASS: sel8 correctly set to selectedIndex 1 by sel8.selectedIndex = 1."
-      RenderBR {BR} at (438,604) size 0x0
+layer at (0,0) size 781x632
+  RenderBlock {HTML} at (0,0) size 781x632
+    RenderBody {BODY} at (8,8) size 765x616
+      RenderMenuList {SELECT} at (2,2) size 76x27 [color=#808080] [bgcolor=#FFFFFF] [border: (1px solid #808080)]
+        RenderBlock (anonymous) at (1,1) size 74x25
+          RenderText at (3,3) size 44x19
+            text run at (3,3) width 44: "PASS"
+      RenderBR {BR} at (80,21) size 0x0
+      RenderMenuList {SELECT} at (2,33) size 76x27 [color=#808080] [bgcolor=#FFFFFF] [border: (1px solid #808080)]
+        RenderBlock (anonymous) at (1,1) size 74x25
+          RenderText at (3,3) size 44x19
+            text run at (3,3) width 44: "PASS"
+      RenderBR {BR} at (80,52) size 0x0
+      RenderMenuList {SELECT} at (2,64) size 76x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 74x25
+          RenderText at (3,3) size 44x19
+            text run at (3,3) width 44: "PASS"
+      RenderBR {BR} at (80,83) size 0x0
+      RenderMenuList {SELECT} at (2,95) size 76x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 74x25
+          RenderText at (3,3) size 44x19
+            text run at (3,3) width 44: "PASS"
+      RenderBR {BR} at (80,114) size 0x0
+      RenderListBox {SELECT} at (2,126) size 66x81 [color=#808080] [bgcolor=#FFFFFF] [border: (1px inset #808080)]
+      RenderBR {BR} at (70,202) size 0x0
+      RenderListBox {SELECT} at (2,211) size 66x81 [color=#808080] [bgcolor=#FFFFFF] [border: (1px inset #808080)]
+      RenderBR {BR} at (70,287) size 0x0
+      RenderListBox {SELECT} at (2,296) size 66x81 [bgcolor=#FFFFFF] [border: (1px inset #808080)]
+      RenderBR {BR} at (70,372) size 0x0
+      RenderListBox {SELECT} at (2,381) size 66x81 [bgcolor=#FFFFFF] [border: (1px inset #808080)]
+      RenderBR {BR} at (70,457) size 0x0
+      RenderText {#text} at (0,464) size 486x19
+        text run at (0,464) width 486: "PASS: sel1 correctly set to selectedIndex 1 by sel1.options[1].selected = true."
+      RenderBR {BR} at (486,479) size 0x0
+      RenderText {#text} at (0,483) size 438x19
+        text run at (0,483) width 438: "PASS: sel2 correctly set to selectedIndex 1 by sel2.selectedIndex = 1."
+      RenderBR {BR} at (438,498) size 0x0
+      RenderText {#text} at (0,502) size 486x19
+        text run at (0,502) width 486: "PASS: sel3 correctly set to selectedIndex 1 by sel3.options[1].selected = true."
+      RenderBR {BR} at (486,517) size 0x0
+      RenderText {#text} at (0,521) size 438x19
+        text run at (0,521) width 438: "PASS: sel4 correctly set to selectedIndex 1 by sel4.selectedIndex = 1."
+      RenderBR {BR} at (438,536) size 0x0
+      RenderText {#text} at (0,540) size 486x19
+        text run at (0,540) width 486: "PASS: sel5 correctly set to selectedIndex 1 by sel5.options[1].selected = true."
+      RenderBR {BR} at (486,555) size 0x0
+      RenderText {#text} at (0,559) size 438x19
+        text run at (0,559) width 438: "PASS: sel6 correctly set to selectedIndex 1 by sel6.selectedIndex = 1."
+      RenderBR {BR} at (438,574) size 0x0
+      RenderText {#text} at (0,578) size 486x19
+        text run at (0,578) width 486: "PASS: sel7 correctly set to selectedIndex 1 by sel7.options[1].selected = true."
+      RenderBR {BR} at (486,593) size 0x0
+      RenderText {#text} at (0,597) size 438x19
+        text run at (0,597) width 438: "PASS: sel8 correctly set to selectedIndex 1 by sel8.selectedIndex = 1."
+      RenderBR {BR} at (438,612) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.checksum b/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.checksum
index c4fef04..3a3446e 100644
--- a/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.checksum
@@ -1 +1 @@
-1e921780d86c66da0e9f9a8f159216ed
\ No newline at end of file
+2e9df1dccf52b2646d5d06ceccfa5308
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.png b/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.png
index 56d0e13..d6c1304 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.png and b/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.txt b/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.txt
index 49c6f08..e203ac9 100644
--- a/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/form-element-geometry-expected.txt
@@ -1,8 +1,8 @@
-layer at (0,0) size 781x741
+layer at (0,0) size 781x746
   RenderView at (0,0) size 781x600
-layer at (0,0) size 781x741
-  RenderBlock {HTML} at (0,0) size 781x741
-    RenderBody {BODY} at (8,8) size 765x725
+layer at (0,0) size 781x746
+  RenderBlock {HTML} at (0,0) size 781x746
+    RenderBody {BODY} at (8,8) size 765x730
       RenderBlock {H1} at (0,0) size 765x37
         RenderText {#text} at (0,0) size 422x36
           text run at (0,0) width 422: "Form Element Geometry Tests"
@@ -12,9 +12,9 @@ layer at (0,0) size 781x741
       RenderBlock {H2} at (0,96) size 765x28
         RenderText {#text} at (0,0) size 165x28
           text run at (0,0) width 165: "Bounding Boxes"
-      RenderTable {TABLE} at (0,143) size 183x38
-        RenderTableSection {TBODY} at (0,0) size 183x38
-          RenderTableRow {TR} at (0,2) size 183x34
+      RenderTable {TABLE} at (0,143) size 192x38
+        RenderTableSection {TBODY} at (0,0) size 192x38
+          RenderTableRow {TR} at (0,2) size 192x34
             RenderTableCell {TD} at (2,2) size 66x34 [r=0 c=0 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 64x32 [border: (2px solid #0000FF)]
                 RenderInline {FONT} at (0,0) size 60x28
@@ -22,45 +22,45 @@ layer at (0,0) size 781x741
                     RenderBlock (anonymous) at (8,4) size 44x19
                       RenderText at (0,0) size 44x19
                         text run at (0,0) width 44: "button"
-            RenderTableCell {TD} at (70,3) size 69x31 [r=0 c=1 rs=1 cs=1]
-              RenderBlock {DIV} at (1,1) size 67x29 [border: (2px solid #0000FF)]
-                RenderInline {FONT} at (0,0) size 63x28
-                  RenderMenuList {SELECT} at (2,2) size 63x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-                    RenderBlock (anonymous) at (1,1) size 61x23
-                      RenderText at (2,2) size 40x19
-                        text run at (2,2) width 40: "menu"
-            RenderTableCell {TD} at (141,9) size 19x19 [r=0 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (70,2) size 78x33 [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 76x31 [border: (2px solid #0000FF)]
+                RenderInline {FONT} at (0,0) size 72x28
+                  RenderMenuList {SELECT} at (2,2) size 72x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+                    RenderBlock (anonymous) at (1,1) size 70x25
+                      RenderText at (3,3) size 40x19
+                        text run at (3,3) width 40: "menu"
+            RenderTableCell {TD} at (150,9) size 19x19 [r=0 c=2 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 17x17 [border: (2px solid #0000FF)]
                 RenderInline {FONT} at (0,0) size 13x28
                   RenderBlock {INPUT} at (2,2) size 13x13
-            RenderTableCell {TD} at (162,9) size 19x19 [r=0 c=3 rs=1 cs=1]
+            RenderTableCell {TD} at (171,9) size 19x19 [r=0 c=3 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 17x17 [border: (2px solid #0000FF)]
                 RenderInline {FONT} at (0,0) size 13x28
                   RenderBlock {INPUT} at (2,2) size 13x13
-      RenderTable {TABLE} at (0,181) size 183x38
-        RenderTableSection {TBODY} at (0,0) size 183x38
-          RenderTableRow {TR} at (0,2) size 183x34
+      RenderTable {TABLE} at (0,181) size 192x38
+        RenderTableSection {TBODY} at (0,0) size 192x38
+          RenderTableRow {TR} at (0,2) size 192x34
             RenderTableCell {TD} at (2,2) size 66x34 [r=0 c=0 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 64x32 [border: (2px solid #0000FF)]
                 RenderButton {INPUT} at (2,2) size 60x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
                   RenderBlock (anonymous) at (8,4) size 44x19
                     RenderText at (0,0) size 44x19
                       text run at (0,0) width 44: "button"
-            RenderTableCell {TD} at (70,3) size 69x31 [r=0 c=1 rs=1 cs=1]
-              RenderBlock {DIV} at (1,1) size 67x29 [border: (2px solid #0000FF)]
-                RenderMenuList {SELECT} at (2,2) size 63x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-                  RenderBlock (anonymous) at (1,1) size 61x23
-                    RenderText at (2,2) size 40x19
-                      text run at (2,2) width 40: "menu"
-            RenderTableCell {TD} at (141,9) size 19x19 [r=0 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (70,2) size 78x33 [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 76x31 [border: (2px solid #0000FF)]
+                RenderMenuList {SELECT} at (2,2) size 72x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+                  RenderBlock (anonymous) at (1,1) size 70x25
+                    RenderText at (3,3) size 40x19
+                      text run at (3,3) width 40: "menu"
+            RenderTableCell {TD} at (150,9) size 19x19 [r=0 c=2 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 17x17 [border: (2px solid #0000FF)]
                 RenderBlock {INPUT} at (2,2) size 13x13
-            RenderTableCell {TD} at (162,9) size 19x19 [r=0 c=3 rs=1 cs=1]
+            RenderTableCell {TD} at (171,9) size 19x19 [r=0 c=3 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 17x17 [border: (2px solid #0000FF)]
                 RenderBlock {INPUT} at (2,2) size 13x13
-      RenderTable {TABLE} at (0,219) size 183x38
-        RenderTableSection {TBODY} at (0,0) size 183x38
-          RenderTableRow {TR} at (0,2) size 183x34
+      RenderTable {TABLE} at (0,219) size 192x38
+        RenderTableSection {TBODY} at (0,0) size 192x38
+          RenderTableRow {TR} at (0,2) size 192x34
             RenderTableCell {TD} at (2,2) size 66x34 [r=0 c=0 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 64x32 [border: (2px solid #0000FF)]
                 RenderInline {FONT} at (0,0) size 60x12
@@ -68,18 +68,18 @@ layer at (0,0) size 781x741
                     RenderBlock (anonymous) at (8,4) size 44x19
                       RenderText at (0,0) size 44x19
                         text run at (0,0) width 44: "button"
-            RenderTableCell {TD} at (70,3) size 69x31 [r=0 c=1 rs=1 cs=1]
-              RenderBlock {DIV} at (1,1) size 67x29 [border: (2px solid #0000FF)]
-                RenderInline {FONT} at (0,0) size 63x12
-                  RenderMenuList {SELECT} at (2,2) size 63x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-                    RenderBlock (anonymous) at (1,1) size 61x23
-                      RenderText at (2,2) size 40x19
-                        text run at (2,2) width 40: "menu"
-            RenderTableCell {TD} at (141,9) size 19x19 [r=0 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (70,2) size 78x33 [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (1,1) size 76x31 [border: (2px solid #0000FF)]
+                RenderInline {FONT} at (0,0) size 72x12
+                  RenderMenuList {SELECT} at (2,2) size 72x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+                    RenderBlock (anonymous) at (1,1) size 70x25
+                      RenderText at (3,3) size 40x19
+                        text run at (3,3) width 40: "menu"
+            RenderTableCell {TD} at (150,9) size 19x19 [r=0 c=2 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 17x17 [border: (2px solid #0000FF)]
                 RenderInline {FONT} at (0,0) size 13x12
                   RenderBlock {INPUT} at (2,2) size 13x13
-            RenderTableCell {TD} at (162,9) size 19x19 [r=0 c=3 rs=1 cs=1]
+            RenderTableCell {TD} at (171,9) size 19x19 [r=0 c=3 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 17x17 [border: (2px solid #0000FF)]
                 RenderInline {FONT} at (0,0) size 13x12
                   RenderBlock {INPUT} at (2,2) size 13x13
@@ -105,7 +105,7 @@ layer at (0,0) size 781x741
         RenderText {#text} at (0,0) size 200x28
           text run at (0,0) width 200: "Baseline Alignment"
       RenderBlock {DIV} at (0,414) size 765x33
-        RenderInline {FONT} at (0,0) size 234x28
+        RenderInline {FONT} at (0,0) size 243x28
           RenderText {#text} at (0,0) size 43x28
             text run at (0,0) width 43: "text "
           RenderButton {INPUT} at (45,3) size 60x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
@@ -114,16 +114,16 @@ layer at (0,0) size 781x741
                 text run at (0,0) width 44: "button"
           RenderText {#text} at (107,0) size 6x28
             text run at (107,0) width 6: " "
-          RenderMenuList {SELECT} at (115,4) size 63x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 61x23
-              RenderText at (2,2) size 40x19
-                text run at (2,2) width 40: "menu"
-          RenderText {#text} at (180,0) size 6x28
-            text run at (180,0) width 6: " "
-          RenderBlock {INPUT} at (190,11) size 13x13
-          RenderText {#text} at (207,0) size 6x28
-            text run at (207,0) width 6: " "
-          RenderBlock {INPUT} at (217,11) size 13x13
+          RenderMenuList {SELECT} at (115,3) size 72x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 70x25
+              RenderText at (3,3) size 40x19
+                text run at (3,3) width 40: "menu"
+          RenderText {#text} at (189,0) size 6x28
+            text run at (189,0) width 6: " "
+          RenderBlock {INPUT} at (199,11) size 13x13
+          RenderText {#text} at (216,0) size 6x28
+            text run at (216,0) width 6: " "
+          RenderBlock {INPUT} at (226,11) size 13x13
           RenderText {#text} at (0,0) size 0x0
       RenderBlock {DIV} at (0,447) size 765x32
         RenderText {#text} at (0,6) size 27x19
@@ -134,19 +134,19 @@ layer at (0,0) size 781x741
               text run at (0,0) width 44: "button"
         RenderText {#text} at (91,6) size 4x19
           text run at (91,6) width 4: " "
-        RenderMenuList {SELECT} at (97,3) size 63x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 61x23
-            RenderText at (2,2) size 40x19
-              text run at (2,2) width 40: "menu"
-        RenderText {#text} at (162,6) size 4x19
-          text run at (162,6) width 4: " "
-        RenderBlock {INPUT} at (170,10) size 13x13
-        RenderText {#text} at (187,6) size 4x19
-          text run at (187,6) width 4: " "
-        RenderBlock {INPUT} at (195,10) size 13x13
+        RenderMenuList {SELECT} at (97,2) size 72x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 70x25
+            RenderText at (3,3) size 40x19
+              text run at (3,3) width 40: "menu"
+        RenderText {#text} at (171,6) size 4x19
+          text run at (171,6) width 4: " "
+        RenderBlock {INPUT} at (179,10) size 13x13
+        RenderText {#text} at (196,6) size 4x19
+          text run at (196,6) width 4: " "
+        RenderBlock {INPUT} at (204,10) size 13x13
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {DIV} at (0,479) size 765x32
-        RenderInline {FONT} at (0,0) size 200x12
+        RenderInline {FONT} at (0,0) size 209x12
           RenderText {#text} at (0,12) size 18x12
             text run at (0,12) width 18: "text "
           RenderButton {INPUT} at (20,2) size 60x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
@@ -155,16 +155,16 @@ layer at (0,0) size 781x741
                 text run at (0,0) width 44: "button"
           RenderText {#text} at (82,12) size 3x12
             text run at (82,12) width 3: " "
-          RenderMenuList {SELECT} at (87,3) size 63x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 61x23
-              RenderText at (2,2) size 40x19
-                text run at (2,2) width 40: "menu"
-          RenderText {#text} at (152,12) size 3x12
-            text run at (152,12) width 3: " "
-          RenderBlock {INPUT} at (159,10) size 13x13
-          RenderText {#text} at (176,12) size 3x12
-            text run at (176,12) width 3: " "
-          RenderBlock {INPUT} at (183,10) size 13x13
+          RenderMenuList {SELECT} at (87,2) size 72x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 70x25
+              RenderText at (3,3) size 40x19
+                text run at (3,3) width 40: "menu"
+          RenderText {#text} at (161,12) size 3x12
+            text run at (161,12) width 3: " "
+          RenderBlock {INPUT} at (168,10) size 13x13
+          RenderText {#text} at (185,12) size 3x12
+            text run at (185,12) width 3: " "
+          RenderBlock {INPUT} at (192,10) size 13x13
           RenderText {#text} at (0,0) size 0x0
       RenderBlock {DIV} at (0,511) size 765x59
         RenderText {#text} at (0,33) size 27x19
@@ -183,60 +183,60 @@ layer at (0,0) size 781x741
       RenderBlock {H2} at (0,589) size 765x28
         RenderText {#text} at (0,0) size 197x28
           text run at (0,0) width 197: "Pop-up Menu Sizes"
-      RenderBlock {DIV} at (0,636) size 765x31
-        RenderInline {FONT} at (0,0) size 161x28
+      RenderBlock {DIV} at (0,636) size 765x32
+        RenderInline {FONT} at (0,0) size 188x28
           RenderText {#text} at (0,0) size 0x0
-          RenderMenuList {SELECT} at (2,4) size 23x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 21x23
-              RenderBR at (2,2) size 0x19 [bgcolor=#FFFFFF]
-          RenderText {#text} at (27,0) size 6x28
-            text run at (27,0) width 6: " "
-          RenderMenuList {SELECT} at (35,4) size 27x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 25x23
-              RenderText at (2,2) size 4x19
-                text run at (2,2) width 4: "|"
-          RenderText {#text} at (64,0) size 6x28
-            text run at (64,0) width 6: " "
-          RenderMenuList {SELECT} at (72,4) size 87x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 85x23
-              RenderText at (2,2) size 64x19
-                text run at (2,2) width 64: "xxxxxxxx"
+          RenderMenuList {SELECT} at (2,3) size 32x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 30x25
+              RenderBR at (3,3) size 0x19 [bgcolor=#FFFFFF]
+          RenderText {#text} at (36,0) size 6x28
+            text run at (36,0) width 6: " "
+          RenderMenuList {SELECT} at (44,3) size 36x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 34x25
+              RenderText at (3,3) size 4x19
+                text run at (3,3) width 4: "|"
+          RenderText {#text} at (82,0) size 6x28
+            text run at (82,0) width 6: " "
+          RenderMenuList {SELECT} at (90,3) size 96x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 94x25
+              RenderText at (3,3) size 64x19
+                text run at (3,3) width 64: "xxxxxxxx"
           RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,667) size 765x29
-        RenderMenuList {SELECT} at (2,2) size 23x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 21x23
-            RenderBR at (2,2) size 0x19 [bgcolor=#FFFFFF]
-        RenderText {#text} at (27,5) size 4x19
-          text run at (27,5) width 4: " "
-        RenderMenuList {SELECT} at (33,2) size 27x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 25x23
-            RenderText at (2,2) size 4x19
-              text run at (2,2) width 4: "|"
-        RenderText {#text} at (62,5) size 4x19
-          text run at (62,5) width 4: " "
-        RenderMenuList {SELECT} at (68,2) size 87x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 85x23
-            RenderText at (2,2) size 64x19
-              text run at (2,2) width 64: "xxxxxxxx"
+      RenderBlock {DIV} at (0,668) size 765x31
+        RenderMenuList {SELECT} at (2,2) size 32x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 30x25
+            RenderBR at (3,3) size 0x19 [bgcolor=#FFFFFF]
+        RenderText {#text} at (36,6) size 4x19
+          text run at (36,6) width 4: " "
+        RenderMenuList {SELECT} at (42,2) size 36x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 34x25
+            RenderText at (3,3) size 4x19
+              text run at (3,3) width 4: "|"
+        RenderText {#text} at (80,6) size 4x19
+          text run at (80,6) width 4: " "
+        RenderMenuList {SELECT} at (86,2) size 96x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 94x25
+            RenderText at (3,3) size 64x19
+              text run at (3,3) width 64: "xxxxxxxx"
         RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,696) size 765x29
-        RenderInline {FONT} at (0,0) size 155x12
+      RenderBlock {DIV} at (0,699) size 765x31
+        RenderInline {FONT} at (0,0) size 182x12
           RenderText {#text} at (0,0) size 0x0
-          RenderMenuList {SELECT} at (2,2) size 23x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 21x23
-              RenderBR at (2,2) size 0x19 [bgcolor=#FFFFFF]
-          RenderText {#text} at (27,11) size 3x12
-            text run at (27,11) width 3: " "
-          RenderMenuList {SELECT} at (32,2) size 27x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 25x23
-              RenderText at (2,2) size 4x19
-                text run at (2,2) width 4: "|"
-          RenderText {#text} at (61,11) size 3x12
-            text run at (61,11) width 3: " "
-          RenderMenuList {SELECT} at (66,2) size 87x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 85x23
-              RenderText at (2,2) size 64x19
-                text run at (2,2) width 64: "xxxxxxxx"
+          RenderMenuList {SELECT} at (2,2) size 32x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 30x25
+              RenderBR at (3,3) size 0x19 [bgcolor=#FFFFFF]
+          RenderText {#text} at (36,12) size 3x12
+            text run at (36,12) width 3: " "
+          RenderMenuList {SELECT} at (41,2) size 36x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 34x25
+              RenderText at (3,3) size 4x19
+                text run at (3,3) width 4: "|"
+          RenderText {#text} at (79,12) size 3x12
+            text run at (79,12) width 3: " "
+          RenderMenuList {SELECT} at (84,2) size 96x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 94x25
+              RenderText at (3,3) size 64x19
+                text run at (3,3) width 64: "xxxxxxxx"
           RenderText {#text} at (0,0) size 0x0
 layer at (16,273) size 98x19
   RenderBlock {DIV} at (3,3) size 98x19
diff --git a/LayoutTests/platform/gtk/fast/forms/input-file-re-render-expected.checksum b/LayoutTests/platform/gtk/fast/forms/input-file-re-render-expected.checksum
new file mode 100644
index 0000000..d20ea55
--- /dev/null
+++ b/LayoutTests/platform/gtk/fast/forms/input-file-re-render-expected.checksum
@@ -0,0 +1 @@
+7276b39607bff1acb5060ca3e696d8a2
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/input-file-re-render-expected.png b/LayoutTests/platform/gtk/fast/forms/input-file-re-render-expected.png
new file mode 100644
index 0000000..7d1c6ee
Binary files /dev/null and b/LayoutTests/platform/gtk/fast/forms/input-file-re-render-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.checksum b/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.checksum
index 6b8d97d..575a71b 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.checksum
@@ -1 +1 @@
-242ed87e221ff1bf8736004d2412e65e
\ No newline at end of file
+0de4d6cbb9fa424d0e4162a7c2c83ff0
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.png b/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.png
index d99cf68..a7f9224 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.png and b/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.txt b/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.txt
index 75cc74a..28d2fd6 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-deselect-update-expected.txt
@@ -3,11 +3,11 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderText {#text} at (0,5) size 73x19
-        text run at (0,5) width 73: "Test result: "
-      RenderMenuList {SELECT} at (75,2) size 67x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 65x23
-          RenderText at (2,2) size 44x19
-            text run at (2,2) width 44: "PASS"
+      RenderText {#text} at (0,6) size 73x19
+        text run at (0,6) width 73: "Test result: "
+      RenderMenuList {SELECT} at (75,2) size 76x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 74x25
+          RenderText at (3,3) size 44x19
+            text run at (3,3) width 44: "PASS"
       RenderText {#text} at (0,0) size 0x0
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.checksum b/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.checksum
index fcd2c15..071e4ab 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.checksum
@@ -1 +1 @@
-7651a19e11d3c5e7785596d2d6c5b526
\ No newline at end of file
+56e8dcc8294212b4f246fb98c323def0
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.png b/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.png
index 10012b1..b657e19 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.png and b/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.txt b/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.txt
index 38fd635..a0fb34c 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-narrow-width-expected.txt
@@ -6,13 +6,13 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 499x19
         text run at (0,0) width 499: "This tests that select elements with a narrow width (1px) are rendered correctly."
       RenderBR {BR} at (499,15) size 0x0
-      RenderMenuList {SELECT} at (0,21) size 2x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 21x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
-      RenderBR {BR} at (2,39) size 0x0
-      RenderMenuList {SELECT} at (0,50) size 2x25 [bgcolor=#0000FF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 21x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
+      RenderMenuList {SELECT} at (0,21) size 2x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 30x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
+      RenderBR {BR} at (2,40) size 0x0
+      RenderMenuList {SELECT} at (0,52) size 2x27 [bgcolor=#0000FF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 30x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.checksum b/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.checksum
index ff416d0..cf5cb1a 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.checksum
@@ -1 +1 @@
-567b4b455062372112cd01a45c180c3a
\ No newline at end of file
+8b52c9f2f237b74a0cc63b1389667857
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.png b/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.png
index 277928c..40c8f1a 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.png and b/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.txt b/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.txt
index 73221e2..7049bc1 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-no-overflow-expected.txt
@@ -3,8 +3,8 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderMenuList {SELECT} at (0,0) size 249x19 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 247x17
-          RenderText at (2,2) size 226x13
-            text run at (2,2) width 226: "No overflow should be allowed on popup menus!"
+      RenderMenuList {SELECT} at (0,0) size 251x21 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 249x19
+          RenderText at (3,3) size 226x13
+            text run at (3,3) width 226: "No overflow should be allowed on popup menus!"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.checksum b/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.checksum
index 890ca13..f1b75c5 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.checksum
@@ -1 +1 @@
-715824d14881cd58f6947184cee1272c
\ No newline at end of file
+ed58ade32759db9083b829f4753e14d2
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.png b/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.png
index 18fc384..4b6c64e 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.png and b/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.txt b/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.txt
index 4e4c8cd..5793bcd 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-restrict-line-height-expected.txt
@@ -6,7 +6,7 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 417x19
         text run at (0,0) width 417: "This tests that we don't honor line-height for styled popup buttons."
       RenderBR {BR} at (417,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 243x25 [bgcolor=#ADD8E6] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 241x23
-          RenderText at (2,2) size 220x19
-            text run at (2,2) width 220: "This text should not be clipped."
+      RenderMenuList {SELECT} at (2,21) size 252x27 [bgcolor=#ADD8E6] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 250x25
+          RenderText at (3,3) size 220x19
+            text run at (3,3) width 220: "This text should not be clipped."
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.checksum b/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.checksum
index 24cecc1..e1d6e03 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.checksum
@@ -1 +1 @@
-2ccfd9cb288e2bbc8cae5ba729d9b7e6
\ No newline at end of file
+61638fd7c8e9d773f366828bd187abb1
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.png b/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.png
index a1b9380..a808eca 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.png and b/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.txt b/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.txt
index 1c3f5e9..dddb194 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-separator-painting-expected.txt
@@ -4,8 +4,8 @@ layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
       RenderBlock {DIV} at (0,0) size 784x6 [border: (3px solid #FFFFFF)]
-      RenderBlock (anonymous) at (0,6) size 784x29
-        RenderMenuList {SELECT} at (2,2) size 23x25 [bgcolor=#FFFFFF] [border: (1px solid #008000)]
-          RenderBlock (anonymous) at (1,1) size 21x23
-            RenderBR at (2,2) size 0x19 [bgcolor=#FFFFFF]
+      RenderBlock (anonymous) at (0,6) size 784x31
+        RenderMenuList {SELECT} at (2,2) size 32x27 [bgcolor=#FFFFFF] [border: (1px solid #008000)]
+          RenderBlock (anonymous) at (1,1) size 30x25
+            RenderBR at (3,3) size 0x19 [bgcolor=#FFFFFF]
         RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.checksum b/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.checksum
index 1605ed3..b4ba39f 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.checksum
@@ -1 +1 @@
-cf51c7a61597754e740a2e37e2f1b078
\ No newline at end of file
+15d5425b9ba4fe0602ee6cfe19a6b629
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.png b/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.png
index b2cad99..b90fbb3 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.png and b/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.txt b/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.txt
index ae0a9f2..e002e1d 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-style-color-expected.txt
@@ -3,26 +3,26 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderMenuList {SELECT} at (2,2) size 74x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 72x23
-          RenderText at (2,2) size 51x19
-            text run at (2,2) width 51: "Default"
-      RenderText {#text} at (78,5) size 4x19
-        text run at (78,5) width 4: " "
-      RenderMenuList {SELECT} at (84,2) size 53x25 [color=#FF0000] [bgcolor=#FFFFFF] [border: (1px solid #FF0000)]
-        RenderBlock (anonymous) at (1,1) size 51x23
-          RenderText at (2,2) size 30x19
-            text run at (2,2) width 30: "Red"
-      RenderText {#text} at (139,5) size 4x19
-        text run at (139,5) width 4: " "
-      RenderMenuList {SELECT} at (145,2) size 141x25 [bgcolor=#008000] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 139x23
-          RenderText at (2,2) size 118x19
-            text run at (2,2) width 118: "Default on green"
-      RenderText {#text} at (288,5) size 4x19
-        text run at (288,5) width 4: " "
-      RenderMenuList {SELECT} at (294,2) size 120x25 [color=#FF0000] [bgcolor=#008000] [border: (1px solid #FF0000)]
-        RenderBlock (anonymous) at (1,1) size 118x23
-          RenderText at (2,2) size 97x19
-            text run at (2,2) width 97: "Red on green"
+      RenderMenuList {SELECT} at (2,2) size 83x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 81x25
+          RenderText at (3,3) size 51x19
+            text run at (3,3) width 51: "Default"
+      RenderText {#text} at (87,6) size 4x19
+        text run at (87,6) width 4: " "
+      RenderMenuList {SELECT} at (93,2) size 62x27 [color=#FF0000] [bgcolor=#FFFFFF] [border: (1px solid #FF0000)]
+        RenderBlock (anonymous) at (1,1) size 60x25
+          RenderText at (3,3) size 30x19
+            text run at (3,3) width 30: "Red"
+      RenderText {#text} at (157,6) size 4x19
+        text run at (157,6) width 4: " "
+      RenderMenuList {SELECT} at (163,2) size 150x27 [bgcolor=#008000] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 148x25
+          RenderText at (3,3) size 118x19
+            text run at (3,3) width 118: "Default on green"
+      RenderText {#text} at (315,6) size 4x19
+        text run at (315,6) width 4: " "
+      RenderMenuList {SELECT} at (321,2) size 129x27 [color=#FF0000] [bgcolor=#008000] [border: (1px solid #FF0000)]
+        RenderBlock (anonymous) at (1,1) size 127x25
+          RenderText at (3,3) size 97x19
+            text run at (3,3) width 97: "Red on green"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.checksum b/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.checksum
index f4c4e42..e11e8f4 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.checksum
@@ -1 +1 @@
-eee878a7d9cb2fbee93d1a738003b9c3
\ No newline at end of file
+11cebee85c1ac7e1cbd433a6fe37da59
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.png b/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.png
index 69163fe..f3b3c64 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.png and b/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.txt b/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.txt
index 1493e3e..3a1b7d6 100644
--- a/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/menulist-width-change-expected.txt
@@ -3,16 +3,16 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock (anonymous) at (0,0) size 784x67
+      RenderBlock (anonymous) at (0,0) size 784x69
         RenderText {#text} at (0,0) size 663x19
           text run at (0,0) width 663: "This tests that when an option is dynamically added to a menu list, and it is too long for the current width,"
         RenderBR {BR} at (663,15) size 0x0
         RenderText {#text} at (0,19) size 364x19
           text run at (0,19) width 364: "that the select automatically recalculates the correct width."
         RenderBR {BR} at (364,34) size 0x0
-        RenderMenuList {SELECT} at (2,40) size 161x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 159x23
-            RenderText at (2,2) size 38x19
-              text run at (2,2) width 38: "Short"
+        RenderMenuList {SELECT} at (2,40) size 170x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 168x25
+            RenderText at (3,3) size 38x19
+              text run at (3,3) width 38: "Short"
         RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,67) size 784x0
+      RenderBlock {DIV} at (0,69) size 784x0
diff --git a/LayoutTests/platform/gtk/fast/forms/option-script-expected.checksum b/LayoutTests/platform/gtk/fast/forms/option-script-expected.checksum
index 71d2650..21231fd 100644
--- a/LayoutTests/platform/gtk/fast/forms/option-script-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/option-script-expected.checksum
@@ -1 +1 @@
-46c960e6bd418d36290b0909fa9ef5e3
\ No newline at end of file
+fcec807918ed17d6dfbfbe0754a51ba9
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/option-script-expected.png b/LayoutTests/platform/gtk/fast/forms/option-script-expected.png
index e26c25e..c5f7e73 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/option-script-expected.png and b/LayoutTests/platform/gtk/fast/forms/option-script-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/option-script-expected.txt b/LayoutTests/platform/gtk/fast/forms/option-script-expected.txt
index 1428f8c..cf10501 100644
--- a/LayoutTests/platform/gtk/fast/forms/option-script-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/option-script-expected.txt
@@ -11,8 +11,8 @@ layer at (0,0) size 800x600
         text run at (0,19) width 109: "TEST FAILED: "
         text run at (109,19) width 316: "If the popup menu says \"document.write('Text')\". "
       RenderBR {BR} at (425,34) size 0x0
-      RenderMenuList {SELECT} at (2,40) size 54x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 52x23
-          RenderText at (2,2) size 31x19
-            text run at (2,2) width 31: "Text"
+      RenderMenuList {SELECT} at (2,40) size 63x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 61x25
+          RenderText at (3,3) size 31x19
+            text run at (3,3) width 31: "Text"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.checksum b/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.checksum
index 478d0f4..4c0a73e 100644
--- a/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.checksum
@@ -1 +1 @@
-6e2e9a2caf422251ec92a80f1256d9cb
\ No newline at end of file
+6e6e8cc0b0ad8de794f9c78c4e9b3207
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.png b/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.png
index 66110b6..5f1f67e 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.png and b/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.txt b/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.txt
index 99788f0..8d07df7 100644
--- a/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/option-strip-whitespace-expected.txt
@@ -6,7 +6,7 @@ layer at (0,0) size 800x600
       RenderBlock {P} at (0,0) size 784x19
         RenderText {#text} at (0,0) size 403x19
           text run at (0,0) width 403: "All of these selects should have the same amount of whitespace."
-      RenderBlock (anonymous) at (0,35) size 784x333
+      RenderBlock (anonymous) at (0,35) size 784x339
         RenderText {#text} at (0,63) size 71x19
           text run at (0,63) width 71: "Five Tabs: "
         RenderListBox {SELECT} at (73,2) size 93x81 [bgcolor=#FFFFFF] [border: (1px inset #808080)]
@@ -17,26 +17,26 @@ layer at (0,0) size 800x600
         RenderListBox {SELECT} at (86,106) size 93x81 [bgcolor=#FFFFFF] [border: (1px inset #808080)]
         RenderBR {BR} at (181,182) size 0x0
         RenderBR {BR} at (0,189) size 0x19
-        RenderText {#text} at (0,213) size 298x19
-          text run at (0,213) width 298: "Five Spaces (with leading/trailing whitespace): "
-        RenderMenuList {SELECT} at (300,210) size 112x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 110x23
-            RenderText at (2,2) size 89x19
-              text run at (2,2) width 89: "Five Spaces"
-        RenderBR {BR} at (414,228) size 0x0
-        RenderBR {BR} at (0,237) size 0x19
-        RenderText {#text} at (0,261) size 285x19
-          text run at (0,261) width 285: "Five Tabs (with leading/trailing whitespace): "
-        RenderMenuList {SELECT} at (287,258) size 94x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 92x23
-            RenderText at (2,2) size 71x19
-              text run at (2,2) width 71: "Five Tabs"
-        RenderBR {BR} at (383,276) size 0x0
-        RenderBR {BR} at (0,285) size 0x19
-        RenderText {#text} at (0,309) size 126x19
-          text run at (0,309) width 126: "Mixed Whitespace: "
-        RenderMenuList {SELECT} at (128,306) size 94x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 92x23
-            RenderText at (2,2) size 71x19
-              text run at (2,2) width 71: "Five Tabs"
+        RenderText {#text} at (0,214) size 298x19
+          text run at (0,214) width 298: "Five Spaces (with leading/trailing whitespace): "
+        RenderMenuList {SELECT} at (300,210) size 121x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 119x25
+            RenderText at (3,3) size 89x19
+              text run at (3,3) width 89: "Five Spaces"
+        RenderBR {BR} at (423,229) size 0x0
+        RenderBR {BR} at (0,239) size 0x19
+        RenderText {#text} at (0,264) size 285x19
+          text run at (0,264) width 285: "Five Tabs (with leading/trailing whitespace): "
+        RenderMenuList {SELECT} at (287,260) size 103x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 101x25
+            RenderText at (3,3) size 71x19
+              text run at (3,3) width 71: "Five Tabs"
+        RenderBR {BR} at (392,279) size 0x0
+        RenderBR {BR} at (0,289) size 0x19
+        RenderText {#text} at (0,314) size 126x19
+          text run at (0,314) width 126: "Mixed Whitespace: "
+        RenderMenuList {SELECT} at (128,310) size 103x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 101x25
+            RenderText at (3,3) size 71x19
+              text run at (3,3) width 71: "Five Tabs"
         RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.checksum b/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.checksum
index 3813b1a..dcfbe9d 100644
--- a/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.checksum
@@ -1 +1 @@
-5ecdef52e98bf79e01701e89dc247bd3
\ No newline at end of file
+7507e13e3fcdbdca9513fb0a81df397a
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.png b/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.png
index 87816da..1c0df20 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.png and b/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.txt b/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.txt
index 0b8b1fd..c3ac3ad 100644
--- a/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/option-text-clip-expected.txt
@@ -6,8 +6,8 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 702x19
         text run at (0,0) width 702: "This tests that the option text is clipped properly, and doesn't spill over into the arrow part of the popup control. "
       RenderBR {BR} at (702,15) size 0x0
-      RenderMenuList {SELECT} at (0,21) size 150x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 148x23
-          RenderText at (2,2) size 184x19
-            text run at (2,2) width 184: "12345 6789 ABCD EFGH"
+      RenderMenuList {SELECT} at (0,21) size 150x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 148x25
+          RenderText at (3,3) size 184x19
+            text run at (3,3) width 184: "12345 6789 ABCD EFGH"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-align-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-align-expected.checksum
index 20dd3eb..dc25133 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-align-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-align-expected.checksum
@@ -1 +1 @@
-1dca7c3d7890bb475eaab39775ecbad7
\ No newline at end of file
+bba0ef137021330143302c7a4cc49742
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-align-expected.png b/LayoutTests/platform/gtk/fast/forms/select-align-expected.png
index c0429da..f445831 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-align-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-align-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-align-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-align-expected.txt
index e4e1bff..3a86a02 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-align-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-align-expected.txt
@@ -6,43 +6,43 @@ layer at (0,0) size 800x600
       RenderBlock {P} at (0,0) size 784x19
         RenderText {#text} at (0,0) size 575x19
           text run at (0,0) width 575: "The following select elements should all be rendered on the left, with their text left justified."
-      RenderBlock (anonymous) at (0,35) size 784x145
-        RenderMenuList {SELECT} at (0,2) size 300x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 298x23
-            RenderText at (2,2) size 209x19
-              text run at (2,2) width 209: "This is should be left justified."
-        RenderText {#text} at (300,5) size 4x19
-          text run at (300,5) width 4: " "
+      RenderBlock (anonymous) at (0,35) size 784x155
+        RenderMenuList {SELECT} at (0,2) size 300x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 298x25
+            RenderText at (3,3) size 209x19
+              text run at (3,3) width 209: "This is should be left justified."
+        RenderText {#text} at (300,6) size 4x19
+          text run at (300,6) width 4: " "
         RenderBR {BR} at (0,0) size 0x0
-        RenderMenuList {SELECT} at (0,31) size 300x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 298x23
-            RenderText at (2,2) size 209x19
-              text run at (2,2) width 209: "This is should be left justified."
-        RenderText {#text} at (300,34) size 4x19
-          text run at (300,34) width 4: " "
+        RenderMenuList {SELECT} at (0,33) size 300x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 298x25
+            RenderText at (3,3) size 209x19
+              text run at (3,3) width 209: "This is should be left justified."
+        RenderText {#text} at (300,37) size 4x19
+          text run at (300,37) width 4: " "
         RenderBR {BR} at (0,0) size 0x0
-        RenderMenuList {SELECT} at (0,60) size 300x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 298x23
-            RenderText at (2,2) size 209x19
-              text run at (2,2) width 209: "This is should be left justified."
-        RenderText {#text} at (300,63) size 4x19
-          text run at (300,63) width 4: " "
+        RenderMenuList {SELECT} at (0,64) size 300x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 298x25
+            RenderText at (3,3) size 209x19
+              text run at (3,3) width 209: "This is should be left justified."
+        RenderText {#text} at (300,68) size 4x19
+          text run at (300,68) width 4: " "
         RenderBR {BR} at (0,0) size 0x0
-        RenderMenuList {SELECT} at (0,89) size 300x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 298x23
-            RenderText at (2,2) size 209x19
-              text run at (2,2) width 209: "This is should be left justified."
-        RenderText {#text} at (300,92) size 4x19
-          text run at (300,92) width 4: " "
+        RenderMenuList {SELECT} at (0,95) size 300x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 298x25
+            RenderText at (3,3) size 209x19
+              text run at (3,3) width 209: "This is should be left justified."
+        RenderText {#text} at (300,99) size 4x19
+          text run at (300,99) width 4: " "
         RenderBR {BR} at (0,0) size 0x0
-        RenderMenuList {SELECT} at (0,118) size 300x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 298x23
-            RenderText at (2,2) size 209x19
-              text run at (2,2) width 209: "This is should be left justified."
+        RenderMenuList {SELECT} at (0,126) size 300x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 298x25
+            RenderText at (3,3) size 209x19
+              text run at (3,3) width 209: "This is should be left justified."
         RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,180) size 784x29
-        RenderMenuList {SELECT} at (0,2) size 300x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 298x23
-            RenderText at (2,2) size 209x19
-              text run at (2,2) width 209: "This is should be left justified."
+      RenderBlock {DIV} at (0,190) size 784x31
+        RenderMenuList {SELECT} at (0,2) size 300x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 298x25
+            RenderText at (3,3) size 209x19
+              text run at (3,3) width 209: "This is should be left justified."
diff --git a/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.checksum
index 6501053..e4aee6b 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.checksum
@@ -1 +1 @@
-94494a77d7c099edbf82f044bddb5d16
\ No newline at end of file
+054ec3a5be1a83dafe86e5aae17b42db
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.png b/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.png
index 301214b..53a0066 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.txt
index 64931f4..ed5bc16 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-baseline-expected.txt
@@ -6,41 +6,41 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 462x19
         text run at (0,0) width 462: "This tests that empty select controls and buttons have the correct baseline."
       RenderBR {BR} at (462,15) size 0x0
-      RenderMenuList {SELECT} at (2,22) size 23x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 21x23
-          RenderBR at (2,2) size 0x19 [bgcolor=#FFFFFF]
-      RenderText {#text} at (27,25) size 29x19
-        text run at (27,25) width 29: " test "
-      RenderMenuList {SELECT} at (58,22) size 48x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 46x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
-      RenderText {#text} at (108,25) size 4x19
-        text run at (108,25) width 4: " "
-      RenderMenuList {SELECT} at (114,22) size 23x25 [color=#00008B] [bgcolor=#ADD8E6] [border: (1px solid #00008B)]
-        RenderBlock (anonymous) at (1,1) size 21x23
-          RenderBR at (2,2) size 0x19 [bgcolor=#ADD8E6]
-      RenderText {#text} at (139,25) size 29x19
-        text run at (139,25) width 29: " test "
-      RenderMenuList {SELECT} at (170,22) size 48x25 [color=#00008B] [bgcolor=#ADD8E6] [border: (1px solid #00008B)]
-        RenderBlock (anonymous) at (1,1) size 46x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
-      RenderText {#text} at (220,25) size 4x19
-        text run at (220,25) width 4: " "
-      RenderButton {BUTTON} at (226,21) size 16x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
-      RenderText {#text} at (244,25) size 4x19
-        text run at (244,25) width 4: " "
-      RenderButton {BUTTON} at (250,21) size 41x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
+      RenderMenuList {SELECT} at (2,21) size 32x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 30x25
+          RenderBR at (3,3) size 0x19 [bgcolor=#FFFFFF]
+      RenderText {#text} at (36,25) size 29x19
+        text run at (36,25) width 29: " test "
+      RenderMenuList {SELECT} at (67,21) size 57x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 55x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
+      RenderText {#text} at (126,25) size 4x19
+        text run at (126,25) width 4: " "
+      RenderMenuList {SELECT} at (132,21) size 32x27 [color=#00008B] [bgcolor=#ADD8E6] [border: (1px solid #00008B)]
+        RenderBlock (anonymous) at (1,1) size 30x25
+          RenderBR at (3,3) size 0x19 [bgcolor=#ADD8E6]
+      RenderText {#text} at (166,25) size 29x19
+        text run at (166,25) width 29: " test "
+      RenderMenuList {SELECT} at (197,21) size 57x27 [color=#00008B] [bgcolor=#ADD8E6] [border: (1px solid #00008B)]
+        RenderBlock (anonymous) at (1,1) size 55x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
+      RenderText {#text} at (256,25) size 4x19
+        text run at (256,25) width 4: " "
+      RenderButton {BUTTON} at (262,21) size 16x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
+      RenderText {#text} at (280,25) size 4x19
+        text run at (280,25) width 4: " "
+      RenderButton {BUTTON} at (286,21) size 41x28 [bgcolor=#C0C0C0] [border: (2px outset #C0C0C0)]
         RenderBlock (anonymous) at (8,4) size 25x19
           RenderText {#text} at (0,0) size 25x19
             text run at (0,0) width 25: "test"
-      RenderText {#text} at (293,25) size 4x19
-        text run at (293,25) width 4: " "
-      RenderButton {BUTTON} at (299,21) size 16x28 [color=#00008B] [bgcolor=#ADD8E6] [border: (2px outset #C0C0C0)]
-      RenderText {#text} at (317,25) size 4x19
-        text run at (317,25) width 4: " "
-      RenderButton {BUTTON} at (323,21) size 41x28 [color=#00008B] [bgcolor=#ADD8E6] [border: (2px outset #C0C0C0)]
+      RenderText {#text} at (329,25) size 4x19
+        text run at (329,25) width 4: " "
+      RenderButton {BUTTON} at (335,21) size 16x28 [color=#00008B] [bgcolor=#ADD8E6] [border: (2px outset #C0C0C0)]
+      RenderText {#text} at (353,25) size 4x19
+        text run at (353,25) width 4: " "
+      RenderButton {BUTTON} at (359,21) size 41x28 [color=#00008B] [bgcolor=#ADD8E6] [border: (2px outset #C0C0C0)]
         RenderBlock (anonymous) at (8,4) size 25x19
           RenderText {#text} at (0,0) size 25x19
             text run at (0,0) width 25: "test"
diff --git a/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.checksum
index 7033249..82146b4 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.checksum
@@ -1 +1 @@
-ac1cee27404d787777c2d4cb853aab5e
\ No newline at end of file
+2365a746803dac086f9c48f68bc3c5b6
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.png b/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.png
index 82df4cd..244e9ee 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.txt
index 93dd4e6..74878b4 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-change-listbox-to-popup-expected.txt
@@ -6,8 +6,8 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,0) size 441x19
         text run at (0,0) width 441: "This tests that you can dynamically change a list box to a popup menu"
       RenderBR {BR} at (441,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 273x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 271x23
-          RenderText at (2,2) size 250x19
-            text run at (2,2) width 250: "This should turn into a popup menu"
+      RenderMenuList {SELECT} at (2,21) size 282x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 280x25
+          RenderText at (3,3) size 250x19
+            text run at (3,3) width 250: "This should turn into a popup menu"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.checksum
index eefc29f..d1a2eca 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.checksum
@@ -1 +1 @@
-b7903234a079003151be56fd7c108b42
\ No newline at end of file
+4e58fe38d46bfee1923064cd3927fe9b
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.png b/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.png
index cb7eee6..374aea5 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.txt
index 0705f56..3532576 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.txt
@@ -1,16 +1,16 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x98
-  RenderBlock {HTML} at (0,0) size 800x98
-    RenderBody {BODY} at (8,8) size 784x74
-      RenderTable {TABLE} at (0,0) size 62x39 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 60x37
-          RenderTableRow {TR} at (0,2) size 60x33
-            RenderTableCell {TD} at (2,2) size 56x33 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-              RenderMenuList {SELECT} at (4,4) size 48x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-                RenderBlock (anonymous) at (1,1) size 46x23
-                  RenderText at (2,2) size 25x19
-                    text run at (2,2) width 25: "test"
-      RenderBlock {P} at (0,55) size 784x19
+layer at (0,0) size 800x100
+  RenderBlock {HTML} at (0,0) size 800x100
+    RenderBody {BODY} at (8,8) size 784x76
+      RenderTable {TABLE} at (0,0) size 71x41 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 69x39
+          RenderTableRow {TR} at (0,2) size 69x35
+            RenderTableCell {TD} at (2,2) size 65x35 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderMenuList {SELECT} at (4,4) size 57x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+                RenderBlock (anonymous) at (1,1) size 55x25
+                  RenderText at (3,3) size 25x19
+                    text run at (3,3) width 25: "test"
+      RenderBlock {P} at (0,57) size 784x19
         RenderText {#text} at (0,0) size 447x19
           text run at (0,0) width 447: "The select element in the table above must not spill outside of the table."
diff --git a/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.checksum
index 8a6245d..0ad58c5 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.checksum
@@ -1 +1 @@
-2337fbb0d60b43316c267695de08e2db
\ No newline at end of file
+ca6fcf70715e385843ee63aead6ab8b8
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.png b/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.png
index 6475176..6965b64 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.txt
index 3211123..f4e6f70 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-disabled-appearance-expected.txt
@@ -15,15 +15,15 @@ layer at (0,0) size 800x600
             text run at (358,0) width 347: "REGRESSION: Disabled pop-up text is not grayed out"
         RenderText {#text} at (705,0) size 4x19
           text run at (705,0) width 4: "."
-      RenderBlock {P} at (0,35) size 784x29
-        RenderMenuList {SELECT} at (2,2) size 192x25 [color=#808080] [bgcolor=#FFFFFF] [border: (1px solid #808080)]
-          RenderBlock (anonymous) at (1,1) size 190x23
-            RenderText at (2,2) size 169x19
-              text run at (2,2) width 169: "This text should be gray"
+      RenderBlock {P} at (0,35) size 784x31
+        RenderMenuList {SELECT} at (2,2) size 201x27 [color=#808080] [bgcolor=#FFFFFF] [border: (1px solid #808080)]
+          RenderBlock (anonymous) at (1,1) size 199x25
+            RenderText at (3,3) size 169x19
+              text run at (3,3) width 169: "This text should be gray"
         RenderText {#text} at (0,0) size 0x0
-      RenderBlock {P} at (0,80) size 784x29
-        RenderMenuList {SELECT} at (2,2) size 199x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 197x23
-            RenderText at (2,2) size 176x19
-              text run at (2,2) width 176: "This text should be black"
+      RenderBlock {P} at (0,82) size 784x31
+        RenderMenuList {SELECT} at (2,2) size 208x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 206x25
+            RenderText at (3,3) size 176x19
+              text run at (3,3) width 176: "This text should be black"
         RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.checksum
index 531a06f..da9bb61 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.checksum
@@ -1 +1 @@
-53f5ceb61bdb5a00f083566e171d37eb
\ No newline at end of file
+6cdf58214e15a6099a09de8abeef2187
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.png b/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.png
index 36636da..aa646a7 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.txt
index f1328c6..534ac6a 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-initial-position-expected.txt
@@ -28,29 +28,29 @@ layer at (0,0) size 800x600
       RenderText {#text} at (0,312) size 93x19
         text run at (0,312) width 93: "initial selected:"
       RenderBR {BR} at (93,327) size 0x0
-      RenderMenuList {SELECT} at (2,333) size 186x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 184x23
-          RenderText at (2,2) size 163x19
-            text run at (2,2) width 163: "this should be selected"
-      RenderText {#text} at (190,336) size 4x19
-        text run at (190,336) width 4: " "
-      RenderBR {BR} at (194,351) size 0x0
-      RenderText {#text} at (0,360) size 161x19
-        text run at (0,360) width 161: "dynamic selected change:"
-      RenderBR {BR} at (161,375) size 0x0
-      RenderMenuList {SELECT} at (2,381) size 186x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 184x23
-          RenderText at (2,2) size 163x19
-            text run at (2,2) width 163: "this should be selected"
-      RenderText {#text} at (190,384) size 4x19
-        text run at (190,384) width 4: " "
+      RenderMenuList {SELECT} at (2,333) size 195x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 193x25
+          RenderText at (3,3) size 163x19
+            text run at (3,3) width 163: "this should be selected"
+      RenderText {#text} at (199,337) size 4x19
+        text run at (199,337) width 4: " "
+      RenderBR {BR} at (203,352) size 0x0
+      RenderText {#text} at (0,362) size 161x19
+        text run at (0,362) width 161: "dynamic selected change:"
+      RenderBR {BR} at (161,377) size 0x0
+      RenderMenuList {SELECT} at (2,383) size 195x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 193x25
+          RenderText at (3,3) size 163x19
+            text run at (3,3) width 163: "this should be selected"
+      RenderText {#text} at (199,387) size 4x19
+        text run at (199,387) width 4: " "
       RenderText {#text} at (0,0) size 0x0
       RenderBR {BR} at (0,0) size 0x0
-      RenderText {#text} at (0,408) size 211x19
-        text run at (0,408) width 211: "dynamic insert of selected option:"
-      RenderBR {BR} at (211,423) size 0x0
-      RenderMenuList {SELECT} at (2,429) size 186x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 184x23
-          RenderText at (2,2) size 163x19
-            text run at (2,2) width 163: "this should be selected"
+      RenderText {#text} at (0,412) size 211x19
+        text run at (0,412) width 211: "dynamic insert of selected option:"
+      RenderBR {BR} at (211,427) size 0x0
+      RenderMenuList {SELECT} at (2,433) size 195x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 193x25
+          RenderText at (3,3) size 163x19
+            text run at (3,3) width 163: "this should be selected"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-selected-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-selected-expected.checksum
index 9a1a04b..f301245 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-selected-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-selected-expected.checksum
@@ -1 +1 @@
-845afbdab252d83324765ede0d21ebe8
\ No newline at end of file
+558755d082ea2aaa1cddda98086a01c4
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-selected-expected.png b/LayoutTests/platform/gtk/fast/forms/select-selected-expected.png
index e08dd0a..fbf2df9 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-selected-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-selected-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-selected-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-selected-expected.txt
index dc591d7..4f11ff4 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-selected-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-selected-expected.txt
@@ -3,8 +3,8 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderMenuList {SELECT} at (2,2) size 328x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 326x23
-          RenderText at (2,2) size 219x19
-            text run at (2,2) width 219: "should see this option selected"
+      RenderMenuList {SELECT} at (2,2) size 337x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 335x25
+          RenderText at (3,3) size 219x19
+            text run at (3,3) width 219: "should see this option selected"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-size-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-size-expected.checksum
index d5d961a..7649e8d 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-size-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-size-expected.checksum
@@ -1 +1 @@
-35038de083da4a81c30429ad3254fe27
\ No newline at end of file
+caa53273c227ed7e0b62e579aa2ca4b6
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-size-expected.png b/LayoutTests/platform/gtk/fast/forms/select-size-expected.png
index 4b71694..2aa55ed 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-size-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-size-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-size-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-size-expected.txt
index f97d3fd..4f8df80 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-size-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-size-expected.txt
@@ -7,8 +7,8 @@ layer at (0,0) size 800x600
         text run at (0,0) width 783: "This tests that a malformed size attribute will be parsed and corrected so that the right size attribute value is used to match the"
         text run at (0,19) width 406: "style rule that determines whether to use a menu list or a list box."
       RenderBR {BR} at (406,34) size 0x0
-      RenderMenuList {SELECT} at (2,40) size 48x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 46x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
+      RenderMenuList {SELECT} at (2,40) size 57x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 55x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-style-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-style-expected.checksum
index 5ded9bd..1c3123e 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-style-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-style-expected.checksum
@@ -1 +1 @@
-9af859696cc788e43721657153194868
\ No newline at end of file
+3d76d5f5789d630a4e97a326335907f1
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-style-expected.png b/LayoutTests/platform/gtk/fast/forms/select-style-expected.png
index dd89adc..f690aa8 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-style-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-style-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-style-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-style-expected.txt
index 0a1f9df..84c4d81 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-style-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-style-expected.txt
@@ -7,67 +7,67 @@ layer at (0,0) size 800x600
         text run at (0,0) width 250: "This tests that styled popups look right. "
         text run at (250,0) width 304: "(Aqua for now- later, we will honor the styling)."
       RenderBR {BR} at (554,15) size 0x0
-      RenderMenuList {SELECT} at (2,21) size 48x25 [bgcolor=#FF0000] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 46x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
-      RenderText {#text} at (52,24) size 4x19
-        text run at (52,24) width 4: " "
-      RenderBR {BR} at (56,39) size 0x0
-      RenderText {#text} at (0,48) size 528x19
-        text run at (0,48) width 528: "This tests that background color is white by default regardless of the parent element."
-      RenderBR {BR} at (528,63) size 0x0
-      RenderInline {SPAN} at (0,0) size 66x29 [bgcolor=#FF0000]
+      RenderMenuList {SELECT} at (2,21) size 57x27 [bgcolor=#FF0000] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 55x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
+      RenderText {#text} at (61,25) size 4x19
+        text run at (61,25) width 4: " "
+      RenderBR {BR} at (65,40) size 0x0
+      RenderText {#text} at (0,50) size 528x19
+        text run at (0,50) width 528: "This tests that background color is white by default regardless of the parent element."
+      RenderBR {BR} at (528,65) size 0x0
+      RenderInline {SPAN} at (0,0) size 75x29 [bgcolor=#FF0000]
         RenderText {#text} at (0,0) size 0x0
-        RenderMenuList {SELECT} at (7,69) size 48x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 46x23
-            RenderText at (2,2) size 25x19
-              text run at (2,2) width 25: "test"
-        RenderText {#text} at (57,72) size 4x19
-          text run at (57,72) width 4: " "
+        RenderMenuList {SELECT} at (7,71) size 57x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 55x25
+            RenderText at (3,3) size 25x19
+              text run at (3,3) width 25: "test"
+        RenderText {#text} at (66,75) size 4x19
+          text run at (66,75) width 4: " "
       RenderText {#text} at (0,0) size 0x0
       RenderBR {BR} at (0,0) size 0x0
-      RenderText {#text} at (0,96) size 625x19
-        text run at (0,96) width 625: "This tests that background color is inherited from the parent if background-color:inherit is specified."
-      RenderBR {BR} at (625,111) size 0x0
-      RenderInline {SPAN} at (0,0) size 66x29 [bgcolor=#FF0000]
+      RenderText {#text} at (0,100) size 625x19
+        text run at (0,100) width 625: "This tests that background color is inherited from the parent if background-color:inherit is specified."
+      RenderBR {BR} at (625,115) size 0x0
+      RenderInline {SPAN} at (0,0) size 75x29 [bgcolor=#FF0000]
         RenderText {#text} at (0,0) size 0x0
-        RenderMenuList {SELECT} at (7,117) size 48x25 [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 46x23
-            RenderText at (2,2) size 25x19
-              text run at (2,2) width 25: "test"
-        RenderText {#text} at (57,120) size 4x19
-          text run at (57,120) width 4: " "
+        RenderMenuList {SELECT} at (7,121) size 57x27 [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 55x25
+            RenderText at (3,3) size 25x19
+              text run at (3,3) width 25: "test"
+        RenderText {#text} at (66,125) size 4x19
+          text run at (66,125) width 4: " "
       RenderText {#text} at (0,0) size 0x0
       RenderBR {BR} at (0,0) size 0x0
-      RenderText {#text} at (0,144) size 637x19
-        text run at (0,144) width 637: "This tests that background color is the same as the parent if background-color:transparent is specified."
-      RenderBR {BR} at (637,159) size 0x0
-      RenderInline {SPAN} at (0,0) size 66x29 [bgcolor=#FF0000]
+      RenderText {#text} at (0,150) size 637x19
+        text run at (0,150) width 637: "This tests that background color is the same as the parent if background-color:transparent is specified."
+      RenderBR {BR} at (637,165) size 0x0
+      RenderInline {SPAN} at (0,0) size 75x29 [bgcolor=#FF0000]
         RenderText {#text} at (0,0) size 0x0
-        RenderMenuList {SELECT} at (7,165) size 48x25 [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 46x23
-            RenderText at (2,2) size 25x19
-              text run at (2,2) width 25: "test"
-        RenderText {#text} at (57,168) size 4x19
-          text run at (57,168) width 4: " "
+        RenderMenuList {SELECT} at (7,171) size 57x27 [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 55x25
+            RenderText at (3,3) size 25x19
+              text run at (3,3) width 25: "test"
+        RenderText {#text} at (66,175) size 4x19
+          text run at (66,175) width 4: " "
       RenderText {#text} at (0,0) size 0x0
       RenderBR {BR} at (0,0) size 0x0
-      RenderText {#text} at (0,192) size 498x19
-        text run at (0,192) width 498: "This tests that background is white if only background-image:none is specified."
-      RenderBR {BR} at (498,207) size 0x0
-      RenderMenuList {SELECT} at (2,213) size 48x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 46x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
-      RenderText {#text} at (52,216) size 4x19
-        text run at (52,216) width 4: " "
-      RenderBR {BR} at (56,231) size 0x0
-      RenderText {#text} at (0,240) size 418x19
-        text run at (0,240) width 418: "This tests that the image specified for background-image is visible."
-      RenderBR {BR} at (418,255) size 0x0
-      RenderMenuList {SELECT} at (2,261) size 48x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 46x23
-          RenderText at (2,2) size 25x19
-            text run at (2,2) width 25: "test"
+      RenderText {#text} at (0,200) size 498x19
+        text run at (0,200) width 498: "This tests that background is white if only background-image:none is specified."
+      RenderBR {BR} at (498,215) size 0x0
+      RenderMenuList {SELECT} at (2,221) size 57x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 55x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
+      RenderText {#text} at (61,225) size 4x19
+        text run at (61,225) width 4: " "
+      RenderBR {BR} at (65,240) size 0x0
+      RenderText {#text} at (0,250) size 418x19
+        text run at (0,250) width 418: "This tests that the image specified for background-image is visible."
+      RenderBR {BR} at (418,265) size 0x0
+      RenderMenuList {SELECT} at (2,271) size 57x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 55x25
+          RenderText at (3,3) size 25x19
+            text run at (3,3) width 25: "test"
       RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.checksum
index 20fae82..6e69733 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.checksum
@@ -1 +1 @@
-5f89937705959a3a9366c2bbed34e2d4
\ No newline at end of file
+008037879295d2c27b0f7082f8880bf2
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.png b/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.png
index f191d22..9d711df 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.txt
index 2e1bb3e..a62f31c 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-visual-hebrew-expected.txt
@@ -12,9 +12,9 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 477x19
           text run at (0,0) width 434 LTR override: "Text on the pop-up and in the list should look like this: "
           text run at (434,0) width 43 LTR override: "\x{5E8}\x{5D5}\x{5EA}\x{5E4}\x{5DB}"
-      RenderBlock (anonymous) at (0,107) size 784x29
-        RenderMenuList {SELECT} at (2,2) size 66x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-          RenderBlock (anonymous) at (1,1) size 64x23
-            RenderText at (2,2) size 43x19
-              text run at (2,2) width 43 RTL: "\x{5DB}\x{5E4}\x{5EA}\x{5D5}\x{5E8}"
+      RenderBlock (anonymous) at (0,107) size 784x31
+        RenderMenuList {SELECT} at (2,2) size 75x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+          RenderBlock (anonymous) at (1,1) size 73x25
+            RenderText at (3,3) size 43x19
+              text run at (3,3) width 43 RTL: "\x{5DB}\x{5E4}\x{5EA}\x{5D5}\x{5E8}"
         RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.checksum b/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.checksum
index 18f4408..6cf4b3d 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.checksum
@@ -1 +1 @@
-210d96d7a3f338f9931cf8a74188d294
\ No newline at end of file
+084274fc75440b71bd5a944ad3e1ed1c
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.png b/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.png
index e80f573..956392f 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.png and b/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.txt b/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.txt
index 5fd6323..7a66fda 100644
--- a/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/select-writing-direction-natural-expected.txt
@@ -22,117 +22,117 @@ layer at (0,0) size 800x600
           text run at (650,0) width 10 RTL: "\x{5D0}"
           text run at (660,0) width 107: " should be on"
           text run at (0,19) width 73: "the right."
-      RenderBlock {DIV} at (0,108) size 784x58
-        RenderBlock {DIV} at (0,0) size 784x29
-          RenderMenuList {SELECT} at (0,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 21x19
-                text run at (2,2) width 11: "A"
-                text run at (13,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (70,5) size 5x19
-            text run at (70,5) width 5: " "
-          RenderMenuList {SELECT} at (75,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 21x19
-                text run at (2,2) width 11: "A"
-                text run at (13,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (145,5) size 5x19
-            text run at (145,5) width 5: " "
-          RenderMenuList {SELECT} at (150,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 26x19
-                text run at (2,2) width 11: "A"
-                text run at (13,2) width 15 RTL: "(\x{5D0}"
-          RenderText {#text} at (220,5) size 5x19
-            text run at (220,5) width 5: " "
-          RenderMenuList {SELECT} at (225,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 26x19
-                text run at (2,2) width 16: "(A"
-                text run at (18,2) width 10 RTL: "\x{5D0}"
+      RenderBlock {DIV} at (0,108) size 784x62
+        RenderBlock {DIV} at (0,0) size 784x31
+          RenderMenuList {SELECT} at (0,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 21x19
+                text run at (3,3) width 11: "A"
+                text run at (14,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (70,6) size 5x19
+            text run at (70,6) width 5: " "
+          RenderMenuList {SELECT} at (75,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 21x19
+                text run at (3,3) width 11: "A"
+                text run at (14,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (145,6) size 5x19
+            text run at (145,6) width 5: " "
+          RenderMenuList {SELECT} at (150,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 26x19
+                text run at (3,3) width 11: "A"
+                text run at (14,3) width 15 RTL: "(\x{5D0}"
+          RenderText {#text} at (220,6) size 5x19
+            text run at (220,6) width 5: " "
+          RenderMenuList {SELECT} at (225,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 26x19
+                text run at (3,3) width 16: "(A"
+                text run at (19,3) width 10 RTL: "\x{5D0}"
           RenderText {#text} at (0,0) size 0x0
-        RenderBlock {DIV} at (0,29) size 784x29
-          RenderMenuList {SELECT} at (489,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 21x19
-                text run at (2,2) width 11: "A"
-                text run at (13,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (559,5) size 5x19
-            text run at (559,5) width 5: " "
-          RenderMenuList {SELECT} at (564,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 21x19
-                text run at (2,2) width 11: "A"
-                text run at (13,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (634,5) size 5x19
-            text run at (634,5) width 5: " "
-          RenderMenuList {SELECT} at (639,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 26x19
-                text run at (2,2) width 11: "A"
-                text run at (13,2) width 15 RTL: "(\x{5D0}"
-          RenderText {#text} at (709,5) size 5x19
-            text run at (709,5) width 5: " "
-          RenderMenuList {SELECT} at (714,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (2,2) size 26x19
-                text run at (2,2) width 16: "(A"
-                text run at (18,2) width 10 RTL: "\x{5D0}"
+        RenderBlock {DIV} at (0,31) size 784x31
+          RenderMenuList {SELECT} at (489,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 21x19
+                text run at (3,3) width 11: "A"
+                text run at (14,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (559,6) size 5x19
+            text run at (559,6) width 5: " "
+          RenderMenuList {SELECT} at (564,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 21x19
+                text run at (3,3) width 11: "A"
+                text run at (14,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (634,6) size 5x19
+            text run at (634,6) width 5: " "
+          RenderMenuList {SELECT} at (639,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 26x19
+                text run at (3,3) width 11: "A"
+                text run at (14,3) width 15 RTL: "(\x{5D0}"
+          RenderText {#text} at (709,6) size 5x19
+            text run at (709,6) width 5: " "
+          RenderMenuList {SELECT} at (714,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (3,3) size 26x19
+                text run at (3,3) width 16: "(A"
+                text run at (19,3) width 10 RTL: "\x{5D0}"
           RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,166) size 784x58
-        RenderBlock {DIV} at (0,0) size 784x29
-          RenderMenuList {SELECT} at (225,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 21x19
-                text run at (19,2) width 11: "A"
-                text run at (30,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (220,5) size 5x19
-            text run at (220,5) width 5 RTL: " "
-          RenderMenuList {SELECT} at (150,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 21x19
-                text run at (19,2) width 11: "A"
-                text run at (30,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (145,5) size 5x19
-            text run at (145,5) width 5 RTL: " "
-          RenderMenuList {SELECT} at (75,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 26x19
-                text run at (19,2) width 11: "A"
-                text run at (30,2) width 15 RTL: "(\x{5D0}"
-          RenderText {#text} at (70,5) size 5x19
-            text run at (70,5) width 5 RTL: " "
-          RenderMenuList {SELECT} at (0,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 26x19
-                text run at (19,2) width 16: "(A"
-                text run at (35,2) width 10 RTL: "\x{5D0}"
+      RenderBlock {DIV} at (0,170) size 784x62
+        RenderBlock {DIV} at (0,0) size 784x31
+          RenderMenuList {SELECT} at (225,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 21x19
+                text run at (27,3) width 11: "A"
+                text run at (38,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (220,6) size 5x19
+            text run at (220,6) width 5 RTL: " "
+          RenderMenuList {SELECT} at (150,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 21x19
+                text run at (27,3) width 11: "A"
+                text run at (38,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (145,6) size 5x19
+            text run at (145,6) width 5 RTL: " "
+          RenderMenuList {SELECT} at (75,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 26x19
+                text run at (27,3) width 11: "A"
+                text run at (38,3) width 15 RTL: "(\x{5D0}"
+          RenderText {#text} at (70,6) size 5x19
+            text run at (70,6) width 5 RTL: " "
+          RenderMenuList {SELECT} at (0,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 26x19
+                text run at (27,3) width 16: "(A"
+                text run at (43,3) width 10 RTL: "\x{5D0}"
           RenderText {#text} at (0,0) size 0x0
-        RenderBlock {DIV} at (0,29) size 784x29
-          RenderMenuList {SELECT} at (714,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 21x19
-                text run at (19,2) width 11: "A"
-                text run at (30,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (709,5) size 5x19
-            text run at (709,5) width 5 RTL: " "
-          RenderMenuList {SELECT} at (639,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 21x19
-                text run at (19,2) width 11: "A"
-                text run at (30,2) width 10 RTL: "\x{5D0}"
-          RenderText {#text} at (634,5) size 5x19
-            text run at (634,5) width 5 RTL: " "
-          RenderMenuList {SELECT} at (564,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 26x19
-                text run at (19,2) width 11: "A"
-                text run at (30,2) width 15 RTL: "(\x{5D0}"
-          RenderText {#text} at (559,5) size 5x19
-            text run at (559,5) width 5 RTL: " "
-          RenderMenuList {SELECT} at (489,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-            RenderBlock (anonymous) at (1,1) size 68x23
-              RenderText at (19,2) size 26x19
-                text run at (19,2) width 16: "(A"
-                text run at (35,2) width 10 RTL: "\x{5D0}"
+        RenderBlock {DIV} at (0,31) size 784x31
+          RenderMenuList {SELECT} at (714,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 21x19
+                text run at (27,3) width 11: "A"
+                text run at (38,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (709,6) size 5x19
+            text run at (709,6) width 5 RTL: " "
+          RenderMenuList {SELECT} at (639,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 21x19
+                text run at (27,3) width 11: "A"
+                text run at (38,3) width 10 RTL: "\x{5D0}"
+          RenderText {#text} at (634,6) size 5x19
+            text run at (634,6) width 5 RTL: " "
+          RenderMenuList {SELECT} at (564,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 26x19
+                text run at (27,3) width 11: "A"
+                text run at (38,3) width 15 RTL: "(\x{5D0}"
+          RenderText {#text} at (559,6) size 5x19
+            text run at (559,6) width 5 RTL: " "
+          RenderMenuList {SELECT} at (489,2) size 70x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+            RenderBlock (anonymous) at (1,1) size 68x25
+              RenderText at (27,3) size 26x19
+                text run at (27,3) width 16: "(A"
+                text run at (43,3) width 10 RTL: "\x{5D0}"
           RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.checksum b/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.checksum
index 4953b9d..58c1331 100644
--- a/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.checksum
+++ b/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.checksum
@@ -1 +1 @@
-686a328a2e7b36839a08c33b3e9327c3
\ No newline at end of file
+e23c980f63589309fd70a4a94df1f197
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.png b/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.png
index 2a34439..8b00e7a 100644
Binary files a/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.png and b/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.txt b/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.txt
index 703573a..0dbddb1 100644
--- a/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.txt
+++ b/LayoutTests/platform/gtk/fast/forms/stuff-on-my-optgroup-expected.txt
@@ -3,13 +3,13 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderMenuList {SELECT} at (2,2) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 68x23
-          RenderText at (2,2) size 30x19
-            text run at (2,2) width 30: "One"
-      RenderBR {BR} at (74,20) size 0x0
-      RenderMenuList {SELECT} at (2,31) size 70x25 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-        RenderBlock (anonymous) at (1,1) size 68x23
-          RenderText at (2,2) size 30x19
-            text run at (2,2) width 30: "One"
+      RenderMenuList {SELECT} at (2,2) size 79x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 77x25
+          RenderText at (3,3) size 30x19
+            text run at (3,3) width 30: "One"
+      RenderBR {BR} at (83,21) size 0x0
+      RenderMenuList {SELECT} at (2,33) size 79x27 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 77x25
+          RenderText at (3,3) size 30x19
+            text run at (3,3) width 30: "One"
       RenderText {#text} at (0,0) size 0x0
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 80c3f6a..daae023 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,50 @@
+2011-01-21  Martin Robinson  <mrobinson at igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [GTK] Menulist text often collides with separator
+        https://bugs.webkit.org/show_bug.cgi?id=51155
+
+        Move menulist rendering to RenderThemeGtk and correct padding code
+        for separators in menulists.
+
+        * platform/gtk/RenderThemeGtk.cpp:
+        (WebCore::RenderThemeGtk::RenderThemeGtk): Initialize new widget members.
+        (WebCore::RenderThemeGtk::getComboBoxSeparatorWidth): Added.
+        (WebCore::RenderThemeGtk::comboBoxArrowSize): Added.
+        (WebCore::getButtonInnerBorder): Added.
+        (WebCore::RenderThemeGtk::getComboBoxPadding): Do this manually instead of using
+        Mozilla code.
+        (WebCore::RenderThemeGtk::paintMenuList): Ditto.
+        (WebCore::setupWidget): Abstracted this part of the setupWidgetAndAddToContainer
+        out to handle child widgets of comboboxes.
+        (WebCore::RenderThemeGtk::setupWidgetAndAddToContainer): Abstracted out setupWidget.
+        (WebCore::RenderThemeGtk::gtkContainer): Added.
+        (WebCore::getGtkComboBoxButton): Added.
+        (WebCore::getGtkComboBoxPieces): Added.
+        (WebCore::RenderThemeGtk::gtkComboBox): Call setupWidget here.
+        (WebCore::RenderThemeGtk::refreshComboBoxChildren): Added.
+        (WebCore::RenderThemeGtk::gtkComboBoxButton): Added.
+        (WebCore::RenderThemeGtk::gtkComboBoxArrow): Added.
+        (WebCore::RenderThemeGtk::gtkComboBoxSeparator): Added.
+        * platform/gtk/RenderThemeGtk.h: Added new members and methods.
+        * platform/gtk/WidgetRenderingContext.h: Added new members and methods.
+        * platform/gtk/WidgetRenderingContextGtk2.cpp:
+        (WebCore::WidgetRenderingContext::gtkPaintArrow):
+        (WebCore::WidgetRenderingContext::gtkPaintVLine):
+        * platform/gtk/WidgetRenderingContextGtk3.cpp:
+        (WebCore::WidgetRenderingContext::gtkPaintArrow):
+        (WebCore::WidgetRenderingContext::gtkPaintVLine):
+        * platform/gtk/gtk2drawing.c: Removed code for drawing menulists and buttons.
+        (moz_gtk_init):
+        (moz_gtk_get_widget_border):
+        (moz_gtk_widget_paint):
+        * platform/gtk/gtk3drawing.c:
+        (moz_gtk_init):
+        (moz_gtk_get_widget_border):
+        (moz_gtk_widget_paint):
+        * platform/gtk/gtkdrawing.h:
+
 2011-01-21  Sam Weinig  <sam at webkit.org>
 
         Fix chromium mac build.
diff --git a/Source/WebCore/platform/gtk/RenderThemeGtk.cpp b/Source/WebCore/platform/gtk/RenderThemeGtk.cpp
index cd9e247..bfe3901 100644
--- a/Source/WebCore/platform/gtk/RenderThemeGtk.cpp
+++ b/Source/WebCore/platform/gtk/RenderThemeGtk.cpp
@@ -352,7 +352,7 @@ double RenderThemeGtk::caretBlinkInterval() const
     return time / 2000.;
 }
 
-static double getScreenDPI()
+double RenderThemeGtk::getScreenDPI()
 {
     // FIXME: Really this should be the widget's screen.
     GdkScreen* screen = gdk_screen_get_default();
diff --git a/Source/WebCore/platform/gtk/RenderThemeGtk.h b/Source/WebCore/platform/gtk/RenderThemeGtk.h
index a55d131..5765782 100644
--- a/Source/WebCore/platform/gtk/RenderThemeGtk.h
+++ b/Source/WebCore/platform/gtk/RenderThemeGtk.h
@@ -175,6 +175,7 @@ private:
     void platformInit();
     static void setTextInputBorders(RenderStyle*);
     GRefPtr<GdkPixbuf> getStockIcon(GType, const char* iconName, gint direction, gint state, gint iconSize);
+    static double getScreenDPI();
 
 #if ENABLE(VIDEO)
     bool paintMediaButton(RenderObject*, GraphicsContext*, const IntRect&, const char* iconName);
@@ -195,7 +196,12 @@ private:
 #ifdef GTK_API_VERSION_2
     void setupWidgetAndAddToContainer(GtkWidget*, GtkWidget*) const;
     bool paintRenderObject(GtkThemeWidgetType, RenderObject*, GraphicsContext*, const IntRect&, int flags = 0);
+    void refreshComboBoxChildren() const;
+    void getComboBoxPadding(RenderStyle*, int& left, int& top, int& right, int& bottom) const;
+    int getComboBoxSeparatorWidth() const;
+    int comboBoxArrowSize(RenderStyle*) const;
     GtkThemeParts m_themeParts;
+
     GtkWidget* gtkButton() const;
     GtkWidget* gtkEntry() const;
     GtkWidget* gtkTreeView() const;
@@ -205,6 +211,10 @@ private:
     GtkWidget* gtkRadioButton() const;
     GtkWidget* gtkCheckButton() const;
     GtkWidget* gtkProgressBar() const;
+    GtkWidget* gtkComboBox() const;
+    GtkWidget* gtkComboBoxButton() const;
+    GtkWidget* gtkComboBoxArrow() const;
+    GtkWidget* gtkComboBoxSeparator() const;
 
     mutable GtkWidget* m_gtkWindow;
     mutable GtkWidget* m_gtkContainer;
@@ -216,7 +226,10 @@ private:
     mutable GtkWidget* m_gtkRadioButton;
     mutable GtkWidget* m_gtkCheckButton;
     mutable GtkWidget* m_gtkProgressBar;
-
+    mutable GtkWidget* m_gtkComboBox;
+    mutable GtkWidget* m_gtkComboBoxButton;
+    mutable GtkWidget* m_gtkComboBoxArrow;
+    mutable GtkWidget* m_gtkComboBoxSeparator;
     bool m_themePartsHaveRGBAColormap;
     friend class WidgetRenderingContext;
 #endif
diff --git a/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp b/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp
index 093e735..de4195d 100644
--- a/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp
+++ b/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp
@@ -64,6 +64,10 @@ void RenderThemeGtk::platformInit()
     m_gtkRadioButton = 0;
     m_gtkCheckButton = 0;
     m_gtkProgressBar = 0;
+    m_gtkComboBox = 0;
+    m_gtkComboBoxButton = 0;
+    m_gtkComboBoxArrow = 0;
+    m_gtkComboBoxSeparator = 0;
 
     memset(&m_themeParts, 0, sizeof(GtkThemeParts));
     GdkColormap* colormap = gdk_screen_get_rgba_colormap(gdk_screen_get_default());
@@ -300,14 +304,70 @@ bool RenderThemeGtk::paintButton(RenderObject* object, const PaintInfo& info, co
     return false;
 }
 
-static void getComboBoxPadding(RenderStyle* style, int& left, int& top, int& right, int& bottom)
+int RenderThemeGtk::getComboBoxSeparatorWidth() const
+{
+    GtkWidget* separator = gtkComboBoxSeparator();
+    if (!separator)
+        return 0;
+
+    gboolean hasWideSeparators = FALSE;
+    gint separatorWidth = 0;
+    gtk_widget_style_get(separator,
+                         "wide-separators", &hasWideSeparators,
+                         "separator-width", &separatorWidth,
+                         NULL);
+    if (hasWideSeparators)
+        return separatorWidth;
+    return gtk_widget_get_style(separator)->xthickness;
+}
+
+int RenderThemeGtk::comboBoxArrowSize(RenderStyle* style) const
+{
+    // Taking the font size and reversing the DPI conversion seems to match
+    // GTK+ rendering as closely as possible.
+    return style->font().size() * (72.0 / RenderThemeGtk::getScreenDPI());
+}
+
+static void getButtonInnerBorder(GtkWidget* button, int& left, int& top, int& right, int& bottom)
+{
+    GtkStyle* style = gtk_widget_get_style(button);
+    int outerBorder = gtk_container_get_border_width(GTK_CONTAINER(button));
+    static GtkBorder defaultInnerBorder = {1, 1, 1, 1};
+    GtkBorder* innerBorder;
+    gtk_widget_style_get(button, "inner-border", &innerBorder, NULL);
+    if (!innerBorder)
+        innerBorder = &defaultInnerBorder;
+
+    left = outerBorder + innerBorder->left + style->xthickness;
+    right = outerBorder + innerBorder->right + style->xthickness;
+    top = outerBorder + innerBorder->top + style->ythickness;
+    bottom = outerBorder + innerBorder->bottom + style->ythickness;
+
+    if (innerBorder != &defaultInnerBorder)
+        gtk_border_free(innerBorder);
+}
+
+
+void RenderThemeGtk::getComboBoxPadding(RenderStyle* style, int& left, int& top, int& right, int& bottom) const
 {
     // If this menu list button isn't drawn using the native theme, we
     // don't add any extra padding beyond what WebCore already uses.
     if (style->appearance() == NoControlPart)
         return;
-    moz_gtk_get_widget_border(MOZ_GTK_DROPDOWN, &left, &top, &right, &bottom,
-                              gtkTextDirection(style->direction()), TRUE);
+
+    // A combo box button is a button with widgets packed into it.
+    GtkStyle* buttonWidgetStyle = gtk_widget_get_style(gtkComboBoxButton());
+    getButtonInnerBorder(gtkComboBoxButton(), left, top, right, bottom);
+
+    // Add xthickness amount of padding for each side of the separator. This ensures
+    // that the text does not bump up against the separator.
+    int arrowAndSeperatorLength = comboBoxArrowSize(style) +
+        getComboBoxSeparatorWidth() + (3 * buttonWidgetStyle->xthickness);
+
+    if (style->direction() == RTL)
+        left += arrowAndSeperatorLength;
+    else
+        right += arrowAndSeperatorLength;
 }
 
 int RenderThemeGtk::popupInternalPaddingLeft(RenderStyle* style) const
@@ -340,7 +400,59 @@ int RenderThemeGtk::popupInternalPaddingBottom(RenderStyle* style) const
 
 bool RenderThemeGtk::paintMenuList(RenderObject* object, const PaintInfo& info, const IntRect& rect)
 {
-    return paintRenderObject(MOZ_GTK_DROPDOWN, object, info.context, rect);
+    if (paintButton(object, info, rect))
+        return true;
+
+    // Menu list button painting strategy.
+    // For buttons with appears-as-list set to false (having a separator):
+    // | left border | Button text | xthickness | vseparator | xthickness | arrow | xthickness | right border |
+    // For buttons with appears-as-list set to true (not having a separator):
+    // | left border | Button text | arrow | xthickness | right border |
+
+    int leftBorder = 0, rightBorder = 0, bottomBorder = 0, topBorder = 0;
+    getButtonInnerBorder(gtkComboBoxButton(), leftBorder, topBorder, rightBorder, bottomBorder);
+    RenderStyle* style = object->style();
+    int arrowSize = comboBoxArrowSize(style);
+    GtkStyle* buttonStyle = gtk_widget_get_style(gtkComboBoxButton());
+
+    IntRect arrowRect(0, (rect.height() - arrowSize) / 2, arrowSize, arrowSize);
+    if (style->direction() == RTL)
+        arrowRect.setX(leftBorder + buttonStyle->xthickness);
+    else
+        arrowRect.setX(rect.width() - rightBorder - buttonStyle->xthickness - arrowSize);
+    GtkShadowType shadowType = isPressed(object) ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
+
+    WidgetRenderingContext widgetContext(info.context, rect);
+    GtkStateType stateType = getGtkStateType(this, object);
+    widgetContext.gtkPaintArrow(arrowRect, gtkComboBoxArrow(), stateType, shadowType, GTK_ARROW_DOWN, "arrow");
+
+    // Some combo boxes do not have a separator.
+    GtkWidget* separator = gtkComboBoxSeparator();
+    if (!separator)
+        return false;
+
+    // We want to decrease the height of the separator based on the focus padding of the button.
+    gint focusPadding = 0, focusWidth = 0; 
+    gtk_widget_style_get(gtkComboBoxButton(),
+                         "focus-line-width", &focusWidth,
+                         "focus-padding", &focusPadding, NULL);
+    topBorder += focusPadding + focusWidth;
+    bottomBorder += focusPadding + focusWidth;
+    int separatorWidth = getComboBoxSeparatorWidth();
+    IntRect separatorRect(0, topBorder, separatorWidth, rect.height() - topBorder - bottomBorder);
+    if (style->direction() == RTL)
+        separatorRect.setX(arrowRect.x() + arrowRect.width() + buttonStyle->xthickness + separatorWidth);
+    else
+        separatorRect.setX(arrowRect.x() - buttonStyle->xthickness - separatorWidth);
+
+    gboolean hasWideSeparators = FALSE;
+    gtk_widget_style_get(separator, "wide-separators", &hasWideSeparators, NULL);
+    if (hasWideSeparators)
+        widgetContext.gtkPaintBox(separatorRect, separator, GTK_STATE_NORMAL, GTK_SHADOW_ETCHED_OUT, "vseparator");
+    else
+        widgetContext.gtkPaintVLine(separatorRect, separator, GTK_STATE_NORMAL, "vseparator");
+
+    return false;
 }
 
 bool RenderThemeGtk::paintTextField(RenderObject* renderObject, const PaintInfo& info, const IntRect& rect)
@@ -575,11 +687,16 @@ static void gtkStyleSetCallback(GtkWidget* widget, GtkStyle* previous, RenderThe
     renderTheme->platformColorsDidChange();
 }
 
-void RenderThemeGtk::setupWidgetAndAddToContainer(GtkWidget* widget, GtkWidget* window) const
+static void setupWidget(GtkWidget* widget)
 {
-    gtk_container_add(GTK_CONTAINER(window), widget);
     gtk_widget_realize(widget);
     g_object_set_data(G_OBJECT(widget), "transparent-bg-hint", GINT_TO_POINTER(TRUE));
+}
+
+void RenderThemeGtk::setupWidgetAndAddToContainer(GtkWidget* widget, GtkWidget* window) const
+{
+    gtk_container_add(GTK_CONTAINER(window), widget);
+    setupWidget(widget);
 
     // FIXME: Perhaps this should only be called for the containing window or parent container.
     g_signal_connect(widget, "style-set", G_CALLBACK(gtkStyleSetCallback), const_cast<RenderThemeGtk*>(this));
@@ -592,7 +709,7 @@ GtkWidget* RenderThemeGtk::gtkContainer() const
 
     m_gtkWindow = gtk_window_new(GTK_WINDOW_POPUP);
     gtk_widget_set_colormap(m_gtkWindow, m_themeParts.colormap);
-    gtk_widget_realize(m_gtkWindow);
+    setupWidget(m_gtkWindow);
     gtk_widget_set_name(m_gtkWindow, "MozillaGtkWidget");
 
     m_gtkContainer = gtk_fixed_new();
@@ -672,6 +789,98 @@ GtkWidget* RenderThemeGtk::gtkProgressBar() const
     return m_gtkProgressBar;
 }
 
+static void getGtkComboBoxButton(GtkWidget* widget, gpointer target)
+{
+    if (!GTK_IS_TOGGLE_BUTTON(widget))
+        return;
+    GtkWidget** widgetTarget = static_cast<GtkWidget**>(target);
+    *widgetTarget = widget;
+}
+
+typedef struct {
+    GtkWidget* arrow;
+    GtkWidget* separator;
+} ComboBoxWidgetPieces;
+
+static void getGtkComboBoxPieces(GtkWidget* widget, gpointer data)
+{
+    if (GTK_IS_ARROW(widget)) {
+        static_cast<ComboBoxWidgetPieces*>(data)->arrow = widget;
+        return;
+    }
+    if (GTK_IS_SEPARATOR(widget)) 
+        static_cast<ComboBoxWidgetPieces*>(data)->separator = widget;
+}
+
+GtkWidget* RenderThemeGtk::gtkComboBox() const
+{
+    if (m_gtkComboBox)
+        return m_gtkComboBox;
+    m_gtkComboBox = gtk_combo_box_new();
+    setupWidgetAndAddToContainer(m_gtkComboBox, gtkContainer());
+    return m_gtkComboBox;
+}
+
+void RenderThemeGtk::refreshComboBoxChildren() const
+{
+    gtkComboBox(); // Ensure that we've initialized the combo box.
+
+    // Some themes look at widget ancestry to determine how to render widgets, so
+    // get the GtkButton that is the actual child of the combo box.
+    gtk_container_forall(GTK_CONTAINER(m_gtkComboBox), getGtkComboBoxButton, &m_gtkComboBoxButton);
+    ASSERT(m_gtkComboBoxButton);
+    setupWidget(m_gtkComboBoxButton);
+    g_object_add_weak_pointer(G_OBJECT(m_gtkComboBoxButton), reinterpret_cast<gpointer*>(&m_gtkComboBoxButton));
+
+    ComboBoxWidgetPieces pieces = { 0, 0 };
+    GtkWidget* buttonChild = gtk_bin_get_child(GTK_BIN(gtkComboBoxButton()));
+    if (GTK_IS_HBOX(buttonChild))
+        gtk_container_forall(GTK_CONTAINER(buttonChild), getGtkComboBoxPieces, &pieces);
+    else if (GTK_IS_ARROW(buttonChild))
+        pieces.arrow = buttonChild;
+
+    ASSERT(pieces.arrow);
+    m_gtkComboBoxArrow = pieces.arrow;
+    setupWidget(m_gtkComboBoxArrow);
+    // When the style changes, the combo box may destroy its children.
+    g_object_add_weak_pointer(G_OBJECT(m_gtkComboBoxArrow), reinterpret_cast<gpointer*>(&m_gtkComboBoxArrow));
+
+    m_gtkComboBoxSeparator = pieces.separator;
+    if (m_gtkComboBoxSeparator) {
+        setupWidget(m_gtkComboBoxSeparator);
+        // When the style changes, the combo box may destroy its children.
+        g_object_add_weak_pointer(G_OBJECT(m_gtkComboBoxSeparator), reinterpret_cast<gpointer*>(&m_gtkComboBoxSeparator));
+    }
+}
+
+GtkWidget* RenderThemeGtk::gtkComboBoxButton() const
+{
+    if (m_gtkComboBoxButton)
+        return m_gtkComboBoxButton;
+    refreshComboBoxChildren();
+    ASSERT(m_gtkComboBoxButton);
+    return m_gtkComboBoxButton;
+}
+
+GtkWidget* RenderThemeGtk::gtkComboBoxArrow() const
+{
+    if (m_gtkComboBoxArrow)
+        return m_gtkComboBoxArrow;
+    refreshComboBoxChildren();
+    ASSERT(m_gtkComboBoxArrow);
+    return m_gtkComboBoxArrow;
+}
+
+GtkWidget* RenderThemeGtk::gtkComboBoxSeparator() const
+{
+    // m_gtkComboBoxSeparator may be null either because we haven't initialized the combo box
+    // or because the combo boxes in this theme don't have separators. If m_gtkComboBoxArrow
+    // arrow isn't null, we definitely have initialized the combo box.
+    if (m_gtkComboBoxArrow || m_gtkComboBoxButton)
+        return m_gtkComboBoxSeparator;
+    refreshComboBoxChildren();
+    return m_gtkComboBoxSeparator;
+}
 
 GtkWidget* RenderThemeGtk::gtkScrollbar()
 {
diff --git a/Source/WebCore/platform/gtk/WidgetRenderingContext.cpp b/Source/WebCore/platform/gtk/WidgetRenderingContext.cpp
index 29f5ada..51b32ea 100644
--- a/Source/WebCore/platform/gtk/WidgetRenderingContext.cpp
+++ b/Source/WebCore/platform/gtk/WidgetRenderingContext.cpp
@@ -201,6 +201,20 @@ void WidgetRenderingContext::gtkPaintShadow(const IntRect& rect, GtkWidget* widg
                      detail, paintRect.x, paintRect.y, paintRect.width, paintRect.height);
 }
 
+void WidgetRenderingContext::gtkPaintArrow(const IntRect& rect, GtkWidget* widget, GtkStateType stateType, GtkShadowType shadowType, int arrowDirection, const gchar* detail)
+{
+    GdkRectangle paintRect = { m_paintRect.x + rect.x(), m_paintRect.y + rect.y(), rect.width(), rect.height() };
+    gtk_paint_arrow(gtk_widget_get_style(widget), m_target, stateType, shadowType, &paintRect, widget, detail,
+                    static_cast<GtkArrowType>(arrowDirection), TRUE, paintRect.x, paintRect.y, paintRect.width, paintRect.height);
+}
+
+void WidgetRenderingContext::gtkPaintVLine(const IntRect& rect, GtkWidget* widget, GtkStateType stateType, const gchar* detail)
+{
+    GdkRectangle paintRect = { m_paintRect.x + rect.x(), m_paintRect.y + rect.y(), rect.width(), rect.height() };
+    gtk_paint_vline(gtk_widget_get_style(widget), m_target, stateType, &paintRect, widget, detail,
+                    paintRect.y, paintRect.y + paintRect.height, paintRect.x);
+
+}
 
 }
 
diff --git a/Source/WebCore/platform/gtk/WidgetRenderingContext.h b/Source/WebCore/platform/gtk/WidgetRenderingContext.h
index 69e1eb7..e248f04 100644
--- a/Source/WebCore/platform/gtk/WidgetRenderingContext.h
+++ b/Source/WebCore/platform/gtk/WidgetRenderingContext.h
@@ -45,6 +45,8 @@ public:
     void gtkPaintCheck(const IntRect&, GtkWidget*, GtkStateType, GtkShadowType, const gchar*);
     void gtkPaintOption(const IntRect&, GtkWidget*, GtkStateType, GtkShadowType, const gchar*);
     void gtkPaintShadow(const IntRect&, GtkWidget*, GtkStateType, GtkShadowType, const gchar*);
+    void gtkPaintArrow(const IntRect&, GtkWidget*, GtkStateType, GtkShadowType, int arrowDirection, const gchar*);
+    void gtkPaintVLine(const IntRect&, GtkWidget*, GtkStateType, const gchar*);
 
 private:
     GraphicsContext* m_graphicsContext;
diff --git a/Source/WebCore/platform/gtk/gtk2drawing.c b/Source/WebCore/platform/gtk/gtk2drawing.c
index ab79ce3..3979b7f 100644
--- a/Source/WebCore/platform/gtk/gtk2drawing.c
+++ b/Source/WebCore/platform/gtk/gtk2drawing.c
@@ -60,7 +60,6 @@
 
 static GtkThemeParts *gParts = NULL;
 static style_prop_t style_prop_func;
-static gboolean have_arrow_scaling;
 static gboolean is_initialized;
 
 void
@@ -116,41 +115,6 @@ setup_widget_prototype(GtkWidget* widget)
 }
 
 static gint
-ensure_button_widget()
-{
-    if (!gParts->buttonWidget) {
-        gParts->buttonWidget = gtk_button_new_with_label("M");
-        setup_widget_prototype(gParts->buttonWidget);
-    }
-    return MOZ_GTK_SUCCESS;
-}
-
-static gint
-ensure_toggle_button_widget()
-{
-    if (!gParts->toggleButtonWidget) {
-        gParts->toggleButtonWidget = gtk_toggle_button_new();
-        setup_widget_prototype(gParts->toggleButtonWidget);
-        /* toggle button must be set active to get the right style on hover. */
-        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gParts->toggleButtonWidget), TRUE);
-  }
-  return MOZ_GTK_SUCCESS;
-}
-
-static gint
-ensure_button_arrow_widget()
-{
-    if (!gParts->buttonArrowWidget) {
-        ensure_toggle_button_widget();
-
-        gParts->buttonArrowWidget = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
-        gtk_container_add(GTK_CONTAINER(gParts->toggleButtonWidget), gParts->buttonArrowWidget);
-        gtk_widget_realize(gParts->buttonArrowWidget);
-    }
-    return MOZ_GTK_SUCCESS;
-}
-
-static gint
 ensure_scrollbar_widget()
 {
     if (!gParts->vertScrollbarWidget) {
@@ -164,109 +128,6 @@ ensure_scrollbar_widget()
     return MOZ_GTK_SUCCESS;
 }
 
-/* We need to have pointers to the inner widgets (button, separator, arrow)
- * of the ComboBox to get the correct rendering from theme engines which
- * special cases their look. Since the inner layout can change, we ask GTK
- * to NULL our pointers when they are about to become invalid because the
- * corresponding widgets don't exist anymore. It's the role of
- * g_object_add_weak_pointer().
- * Note that if we don't find the inner widgets (which shouldn't happen), we
- * fallback to use generic "non-inner" widgets, and they don't need that kind
- * of weak pointer since they are explicit children of gParts->protoWindow and as
- * such GTK holds a strong reference to them. */
-static void
-moz_gtk_get_combo_box_inner_button(GtkWidget *widget, gpointer client_data)
-{
-    if (GTK_IS_TOGGLE_BUTTON(widget)) {
-        gParts->comboBoxButtonWidget = widget;
-        g_object_add_weak_pointer(G_OBJECT(widget),
-                                  (gpointer) &gParts->comboBoxButtonWidget);
-        gtk_widget_realize(widget);
-        g_object_set_data(G_OBJECT(widget), "transparent-bg-hint", GINT_TO_POINTER(TRUE));
-    }
-}
-
-static void
-moz_gtk_get_combo_box_button_inner_widgets(GtkWidget *widget,
-                                           gpointer client_data)
-{
-    if (GTK_IS_SEPARATOR(widget)) {
-        gParts->comboBoxSeparatorWidget = widget;
-        g_object_add_weak_pointer(G_OBJECT(widget),
-                                  (gpointer) &gParts->comboBoxSeparatorWidget);
-    } else if (GTK_IS_ARROW(widget)) {
-        gParts->comboBoxArrowWidget = widget;
-        g_object_add_weak_pointer(G_OBJECT(widget),
-                                  (gpointer) &gParts->comboBoxArrowWidget);
-    } else
-        return;
-    gtk_widget_realize(widget);
-    g_object_set_data(G_OBJECT(widget), "transparent-bg-hint", GINT_TO_POINTER(TRUE));
-}
-
-static gint
-ensure_combo_box_widgets()
-{
-    GtkWidget* buttonChild;
-
-    if (gParts->comboBoxButtonWidget && gParts->comboBoxArrowWidget)
-        return MOZ_GTK_SUCCESS;
-
-    /* Create a ComboBox if needed */
-    if (!gParts->comboBoxWidget) {
-        gParts->comboBoxWidget = gtk_combo_box_new();
-        setup_widget_prototype(gParts->comboBoxWidget);
-    }
-
-    /* Get its inner Button */
-    gtk_container_forall(GTK_CONTAINER(gParts->comboBoxWidget),
-                         moz_gtk_get_combo_box_inner_button,
-                         NULL);
-
-    if (gParts->comboBoxButtonWidget) {
-        /* Get the widgets inside the Button */
-        buttonChild = gtk_bin_get_child(GTK_BIN(gParts->comboBoxButtonWidget));
-        if (GTK_IS_HBOX(buttonChild)) {
-            /* appears-as-list = FALSE, cell-view = TRUE; the button
-             * contains an hbox. This hbox is there because the ComboBox
-             * needs to place a cell renderer, a separator, and an arrow in
-             * the button when appears-as-list is FALSE. */
-            gtk_container_forall(GTK_CONTAINER(buttonChild),
-                                 moz_gtk_get_combo_box_button_inner_widgets,
-                                 NULL);
-        } else if(GTK_IS_ARROW(buttonChild)) {
-            /* appears-as-list = TRUE, or cell-view = FALSE;
-             * the button only contains an arrow */
-            gParts->comboBoxArrowWidget = buttonChild;
-            g_object_add_weak_pointer(G_OBJECT(buttonChild), (gpointer)
-                                      &gParts->comboBoxArrowWidget);
-            gtk_widget_realize(gParts->comboBoxArrowWidget);
-            g_object_set_data(G_OBJECT(gParts->comboBoxArrowWidget),
-                              "transparent-bg-hint", GINT_TO_POINTER(TRUE));
-        }
-    } else {
-        /* Shouldn't be reached with current internal gtk implementation; we
-         * use a generic toggle button as last resort fallback to avoid
-         * crashing. */
-        ensure_toggle_button_widget();
-        gParts->comboBoxButtonWidget = gParts->toggleButtonWidget;
-    }
-
-    if (!gParts->comboBoxArrowWidget) {
-        /* Shouldn't be reached with current internal gtk implementation;
-         * we gParts->buttonArrowWidget as last resort fallback to avoid
-         * crashing. */
-        ensure_button_arrow_widget();
-        gParts->comboBoxArrowWidget = gParts->buttonArrowWidget;
-    }
-
-    /* We don't test the validity of gParts->comboBoxSeparatorWidget since there
-     * is none when "appears-as-list" = TRUE or "cell-view" = FALSE; if it
-     * is invalid we just won't paint it. */
-
-    return MOZ_GTK_SUCCESS;
-}
-
 static gint
 ensure_scrolled_window_widget()
 {
@@ -315,93 +176,12 @@ TSOffsetStyleGCs(GtkStyle* style, gint xorigin, gint yorigin)
     return MOZ_GTK_SUCCESS;
 }
 
-static gint
-moz_gtk_button_paint(GdkDrawable* drawable, GdkRectangle* rect,
-                     GdkRectangle* cliprect, GtkWidgetState* state,
-                     GtkReliefStyle relief, GtkWidget* widget,
-                     GtkTextDirection direction)
-{
-    GtkShadowType shadow_type;
-    GtkStyle* style = gtk_widget_get_style(widget);
-    GtkStateType button_state = ConvertGtkState(state);
-    gint x = rect->x, y=rect->y, width=rect->width, height=rect->height;
-
-    gboolean interior_focus;
-    gint focus_width, focus_pad;
-
-    moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad);
-
-    gtk_widget_set_state(widget, button_state);
-    gtk_widget_set_direction(widget, direction);
-
-    if (state->isDefault)
-        GTK_WIDGET_SET_FLAGS(widget, GTK_HAS_DEFAULT);
-
-    gtk_button_set_relief(GTK_BUTTON(widget), relief);
-
-    /* Some theme engines love to cause us pain in that gtk_paint_focus is a
-       no-op on buttons and button-like widgets. They only listen to this flag. */
-    if (state->focused && !state->disabled)
-        GTK_WIDGET_SET_FLAGS(widget, GTK_HAS_FOCUS);
-
-    if (!interior_focus && state->focused) {
-        x += focus_width + focus_pad;
-        y += focus_width + focus_pad;
-        width -= 2 * (focus_width + focus_pad);
-        height -= 2 * (focus_width + focus_pad);
-    }
-
-    shadow_type = button_state == GTK_STATE_ACTIVE ||
-                      state->depressed ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
- 
-    if (state->isDefault && relief == GTK_RELIEF_NORMAL) {
-        gtk_paint_box(style, drawable, button_state, shadow_type, cliprect,
-                      widget, "buttondefault", x, y, width, height);                   
-    }
- 
-    if (relief != GTK_RELIEF_NONE || state->depressed ||
-           (button_state != GTK_STATE_NORMAL &&
-            button_state != GTK_STATE_INSENSITIVE)) {
-        TSOffsetStyleGCs(style, x, y);
-        /* the following line can trigger an assertion (Crux theme)
-           file ../../gdk/gdkwindow.c: line 1846 (gdk_window_clear_area):
-           assertion `GDK_IS_WINDOW (window)' failed */
-        gtk_paint_box(style, drawable, button_state, shadow_type, cliprect,
-                      widget, "button", x, y, width, height);
-    }
-
-    if (state->focused) {
-        if (interior_focus) {
-            GtkStyle* style = gtk_widget_get_style(widget);
-            x += style->xthickness + focus_pad;
-            y += style->ythickness + focus_pad;
-            width -= 2 * (style->xthickness + focus_pad);
-            height -= 2 * (style->ythickness + focus_pad);
-        } else {
-            x -= focus_width + focus_pad;
-            y -= focus_width + focus_pad;
-            width += 2 * (focus_width + focus_pad);
-            height += 2 * (focus_width + focus_pad);
-        }
-
-        TSOffsetStyleGCs(style, x, y);
-        gtk_paint_focus(style, drawable, button_state, cliprect,
-                        widget, "button", x, y, width, height);
-    }
-
-    GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_DEFAULT);
-    GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS);
-    return MOZ_GTK_SUCCESS;
-}
-
 gint
 moz_gtk_init()
 {
     GtkWidgetClass *entry_class;
 
     is_initialized = TRUE;
-    have_arrow_scaling = (gtk_major_version > 2 ||
-                          (gtk_major_version == 2 && gtk_minor_version >= 12));
 
     /* Add style property to GtkEntry.
      * Adding the style property to the normal GtkEntry class means that it
@@ -417,106 +197,6 @@ moz_gtk_init()
     return MOZ_GTK_SUCCESS;
 }
 
-gint
-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
-                         gint* focus_width, gint* focus_pad) 
-{
-    gtk_widget_style_get (widget,
-                          "interior-focus", interior_focus,
-                          "focus-line-width", focus_width,
-                          "focus-padding", focus_pad,
-                          NULL);
-
-    return MOZ_GTK_SUCCESS;
-}
-
-gint
-moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border)
-{
-    static const GtkBorder default_inner_border = { 1, 1, 1, 1 };
-    GtkBorder *tmp_border;
-
-    gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL);
-
-    if (tmp_border) {
-        *inner_border = *tmp_border;
-        gtk_border_free(tmp_border);
-    }
-    else
-        *inner_border = default_inner_border;
-
-    return MOZ_GTK_SUCCESS;
-}
-
-static gint
-calculate_button_inner_rect(GtkWidget* button, GdkRectangle* rect,
-                            GdkRectangle* inner_rect,
-                            GtkTextDirection direction,
-                            gboolean ignore_focus)
-{
-    GtkBorder inner_border;
-    gboolean interior_focus;
-    gint focus_width, focus_pad;
-    GtkStyle* style;
-
-    style = gtk_widget_get_style(button);
-
-    /* This mirrors gtkbutton's child positioning */
-    moz_gtk_button_get_inner_border(button, &inner_border);
-    moz_gtk_widget_get_focus(button, &interior_focus,
-                             &focus_width, &focus_pad);
-
-    if (ignore_focus)
-        focus_width = focus_pad = 0;
-
-    inner_rect->x = rect->x + XTHICKNESS(style) + focus_width + focus_pad;
-    inner_rect->x += direction == GTK_TEXT_DIR_LTR ?
-                        inner_border.left : inner_border.right;
-    inner_rect->y = rect->y + inner_border.top + YTHICKNESS(style) +
-                    focus_width + focus_pad;
-    inner_rect->width = MAX(1, rect->width - inner_border.left -
-       inner_border.right - (XTHICKNESS(style) + focus_pad + focus_width) * 2);
-    inner_rect->height = MAX(1, rect->height - inner_border.top -
-       inner_border.bottom - (YTHICKNESS(style) + focus_pad + focus_width) * 2);
-
-    return MOZ_GTK_SUCCESS;
-}
-
-
-static gint
-calculate_arrow_rect(GtkWidget* arrow, GdkRectangle* rect,
-                     GdkRectangle* arrow_rect, GtkTextDirection direction)
-{
-    /* defined in gtkarrow.c */
-    gfloat arrow_scaling = 0.7;
-    gfloat xalign, xpad;
-    gint extent;
-    GtkMisc* misc = GTK_MISC(arrow);
-    gfloat misc_xalign, misc_yalign;
-    gint misc_xpad, misc_ypad;
-
-    if (have_arrow_scaling)
-        gtk_widget_style_get(arrow, "arrow_scaling", &arrow_scaling, NULL);
-
-    gtk_misc_get_padding(misc, &misc_xpad, &misc_ypad);
-    gtk_misc_get_alignment(misc, &misc_xalign, &misc_yalign);
-
-    extent = MIN((rect->width - misc_xpad * 2),
-                 (rect->height - misc_ypad * 2)) * arrow_scaling;
-
-    xalign = direction == GTK_TEXT_DIR_LTR ? misc_xalign : 1.0 - misc_xalign;
-    xpad = misc_xpad + (rect->width - extent) * xalign;
-
-    arrow_rect->x = direction == GTK_TEXT_DIR_LTR ?
-                        floor(rect->x + xpad) : ceil(rect->x + xpad);
-    arrow_rect->y = floor(rect->y + misc_ypad +
-                          ((rect->height - extent) * misc_yalign));
-
-    arrow_rect->width = arrow_rect->height = extent;
-
-    return MOZ_GTK_SUCCESS;
-}
-
 static gint
 moz_gtk_scrolled_window_paint(GdkDrawable* drawable, GdkRectangle* rect,
                               GdkRectangle* cliprect, GtkWidgetState* state)
@@ -757,87 +437,6 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWidgetType widget,
     return MOZ_GTK_SUCCESS;
 }
 
-static gint
-moz_gtk_combo_box_paint(GdkDrawable* drawable, GdkRectangle* rect,
-                        GdkRectangle* cliprect, GtkWidgetState* state,
-                        gboolean ishtml, GtkTextDirection direction)
-{
-    GdkRectangle arrow_rect, real_arrow_rect;
-    gint /* arrow_size, */ separator_width;
-    gboolean wide_separators;
-    GtkStateType state_type = ConvertGtkState(state);
-    GtkShadowType shadow_type = state->active ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
-    GtkStyle* style;
-    GtkRequisition arrow_req;
-
-    ensure_combo_box_widgets();
-
-    /* Also sets the direction on gParts->comboBoxButtonWidget, which is then
-     * inherited by the separator and arrow */
-    moz_gtk_button_paint(drawable, rect, cliprect, state, GTK_RELIEF_NORMAL,
-                         gParts->comboBoxButtonWidget, direction);
-
-    calculate_button_inner_rect(gParts->comboBoxButtonWidget,
-                                rect, &arrow_rect, direction, ishtml);
-    /* Now arrow_rect contains the inner rect ; we want to correct the width
-     * to what the arrow needs (see gtk_combo_box_size_allocate) */
-    gtk_widget_size_request(gParts->comboBoxArrowWidget, &arrow_req);
-    if (direction == GTK_TEXT_DIR_LTR)
-        arrow_rect.x += arrow_rect.width - arrow_req.width;
-    arrow_rect.width = arrow_req.width;
-
-    calculate_arrow_rect(gParts->comboBoxArrowWidget,
-                         &arrow_rect, &real_arrow_rect, direction);
-
-    style = gtk_widget_get_style(gParts->comboBoxArrowWidget);
-    TSOffsetStyleGCs(style, rect->x, rect->y);
-
-    gtk_widget_size_allocate(gParts->comboBoxWidget, rect);
-
-    gtk_paint_arrow(style, drawable, state_type, shadow_type, cliprect,
-                    gParts->comboBoxArrowWidget, "arrow",  GTK_ARROW_DOWN, TRUE,
-                    real_arrow_rect.x, real_arrow_rect.y,
-                    real_arrow_rect.width, real_arrow_rect.height);
-
-
-    /* If there is no separator in the theme, there's nothing left to do. */
-    if (!gParts->comboBoxSeparatorWidget)
-        return MOZ_GTK_SUCCESS;
-
-    style = gtk_widget_get_style(gParts->comboBoxSeparatorWidget);
-    TSOffsetStyleGCs(style, rect->x, rect->y);
-
-    gtk_widget_style_get(gParts->comboBoxSeparatorWidget,
-                         "wide-separators", &wide_separators,
-                         "separator-width", &separator_width,
-                         NULL);
-
-    if (wide_separators) {
-        if (direction == GTK_TEXT_DIR_LTR)
-            arrow_rect.x -= separator_width;
-        else
-            arrow_rect.x += arrow_rect.width;
-
-        gtk_paint_box(style, drawable,
-                      GTK_STATE_NORMAL, GTK_SHADOW_ETCHED_OUT,
-                      cliprect, gParts->comboBoxSeparatorWidget, "vseparator",
-                      arrow_rect.x, arrow_rect.y,
-                      separator_width, arrow_rect.height);
-    } else {
-        if (direction == GTK_TEXT_DIR_LTR)
-            arrow_rect.x -= XTHICKNESS(style);
-        else
-            arrow_rect.x += arrow_rect.width;
-
-        gtk_paint_vline(style, drawable, GTK_STATE_NORMAL, cliprect,
-                        gParts->comboBoxSeparatorWidget, "vseparator",
-                        arrow_rect.y, arrow_rect.y + arrow_rect.height,
-                        arrow_rect.x);
-    }
-
-    return MOZ_GTK_SUCCESS;
-}
-
 gint
 moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
                           gint* right, gint* bottom, GtkTextDirection direction,
@@ -847,82 +446,6 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
     GtkStyle *style;
 
     switch (widget) {
-    case MOZ_GTK_BUTTON:
-        {
-            GtkBorder inner_border;
-            gboolean interior_focus;
-            gint focus_width, focus_pad;
-            GtkStyle *style;
-
-            ensure_button_widget();
-            *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gParts->buttonWidget));
-
-            /* Don't add this padding in HTML, otherwise the buttons will
-               become too big and stuff the layout. */
-            if (!inhtml) {
-                moz_gtk_widget_get_focus(gParts->buttonWidget, &interior_focus, &focus_width, &focus_pad);
-                moz_gtk_button_get_inner_border(gParts->buttonWidget, &inner_border);
-                *left += focus_width + focus_pad + inner_border.left;
-                *right += focus_width + focus_pad + inner_border.right;
-                *top += focus_width + focus_pad + inner_border.top;
-                *bottom += focus_width + focus_pad + inner_border.bottom;
-            }
-
-            style = gtk_widget_get_style(gParts->buttonWidget);
-            *left += style->xthickness;
-            *right += style->xthickness;
-            *top += style->ythickness;
-            *bottom += style->ythickness;
-            return MOZ_GTK_SUCCESS;
-        }
-    case MOZ_GTK_DROPDOWN:
-        {
-            /* We need to account for the arrow on the dropdown, so text
-             * doesn't come too close to the arrow, or in some cases spill
-             * into the arrow. */
-            gboolean ignored_interior_focus, wide_separators;
-            gint focus_width, focus_pad, separator_width;
-            GtkRequisition arrow_req;
-            GtkStyle* style;
-
-            ensure_combo_box_widgets();
-
-            *left = gtk_container_get_border_width(GTK_CONTAINER(gParts->comboBoxButtonWidget));
-
-            if (!inhtml) {
-                moz_gtk_widget_get_focus(gParts->comboBoxButtonWidget,
-                                         &ignored_interior_focus,
-                                         &focus_width, &focus_pad);
-                *left += focus_width + focus_pad;
-            }
-
-            style = gtk_widget_get_style(gParts->comboBoxButtonWidget);
-            *top = *left + style->ythickness;
-            *left += style->xthickness;
-
-            *right = *left; *bottom = *top;
-
-            /* If there is no separator, don't try to count its width. */
-            separator_width = 0;
-            if (gParts->comboBoxSeparatorWidget) {
-                gtk_widget_style_get(gParts->comboBoxSeparatorWidget,
-                                     "wide-separators", &wide_separators,
-                                     "separator-width", &separator_width,
-                                     NULL);
-
-                if (!wide_separators)
-                    separator_width =
-                        XTHICKNESS(style);
-            }
-
-            gtk_widget_size_request(gParts->comboBoxArrowWidget, &arrow_req);
-            if (direction == GTK_TEXT_DIR_RTL)
-                *left += separator_width + arrow_req.width;
-            else
-                *right += separator_width + arrow_req.width;
-
-            return MOZ_GTK_SUCCESS;
-        }
     /* These widgets have no borders, since they are not containers. */
     case MOZ_GTK_SCROLLBAR_BUTTON:
     case MOZ_GTK_SCROLLBAR_TRACK_HORIZONTAL:
@@ -970,18 +493,6 @@ moz_gtk_widget_paint(GtkThemeWidgetType widget, GdkDrawable* drawable,
                      GtkTextDirection direction)
 {
     switch (widget) {
-    case MOZ_GTK_BUTTON:
-        if (state->depressed) {
-            ensure_toggle_button_widget();
-            return moz_gtk_button_paint(drawable, rect, cliprect, state,
-                                        (GtkReliefStyle) flags,
-                                        gParts->toggleButtonWidget, direction);
-        }
-        ensure_button_widget();
-        return moz_gtk_button_paint(drawable, rect, cliprect, state,
-                                    (GtkReliefStyle) flags, gParts->buttonWidget,
-                                    direction);
-        break;
     case MOZ_GTK_SCROLLBAR_BUTTON:
         return moz_gtk_scrollbar_button_paint(drawable, rect, cliprect, state,
                                               (GtkScrollbarButtonFlags) flags,
@@ -1000,10 +511,6 @@ moz_gtk_widget_paint(GtkThemeWidgetType widget, GdkDrawable* drawable,
     case MOZ_GTK_SCROLLED_WINDOW:
         return moz_gtk_scrolled_window_paint(drawable, rect, cliprect, state);
         break;
-    case MOZ_GTK_DROPDOWN:
-        return moz_gtk_combo_box_paint(drawable, rect, cliprect, state,
-                                       (gboolean) flags, direction);
-        break;
     default:
         g_warning("Unknown widget type: %d", widget);
     }
diff --git a/Source/WebCore/platform/gtk/gtkdrawing.h b/Source/WebCore/platform/gtk/gtkdrawing.h
index d4c59e4..cdb343c 100644
--- a/Source/WebCore/platform/gtk/gtkdrawing.h
+++ b/Source/WebCore/platform/gtk/gtkdrawing.h
@@ -86,19 +86,8 @@ typedef struct _GtkThemeParts {
     GdkColormap* colormap;
     GtkWidget* protoWindow;
     GtkWidget* protoLayout;
-    GtkWidget* buttonWidget;
-    GtkWidget* toggleButtonWidget;
-    GtkWidget* buttonArrowWidget;
     GtkWidget* horizScrollbarWidget;
     GtkWidget* vertScrollbarWidget;
-    GtkWidget* comboBoxWidget;
-    GtkWidget* comboBoxButtonWidget;
-    GtkWidget* comboBoxArrowWidget;
-    GtkWidget* comboBoxSeparatorWidget;
-    GtkWidget* comboBoxEntryWidget;
-    GtkWidget* comboBoxEntryTextareaWidget;
-    GtkWidget* comboBoxEntryButtonWidget;
-    GtkWidget* comboBoxEntryArrowWidget;
     GtkWidget* scrolledWindowWidget;
 } GtkThemeParts;
 
@@ -133,8 +122,6 @@ typedef enum {
   MOZ_GTK_SCROLLBAR_THUMB_VERTICAL,
   /* Paints the background of a scrolled window */
   MOZ_GTK_SCROLLED_WINDOW,
-  /* Paints a GtkOptionMenu. */
-  MOZ_GTK_DROPDOWN,
 } GtkThemeWidgetType;
 
 /*** General library functions ***/
@@ -208,20 +195,6 @@ moz_gtk_widget_paint(GtkThemeWidgetType widget, GdkDrawable* drawable,
 gint moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top, 
                                gint* right, gint* bottom, GtkTextDirection direction,
                                gboolean inhtml);
-
-/** Get the focus metrics for a treeheadercell, button, checkbox, or radio button.
- * widget:             [IN]  the widget to get the focus metrics for    
- * interior_focus:     [OUT] whether the focus is drawn around the
- *                           label (TRUE) or around the whole container (FALSE)
- * focus_width:        [OUT] the width of the focus line
- * focus_pad:          [OUT] the padding between the focus line and children
- *
- * returns:    MOZ_GTK_SUCCESS if there was no error, an error code otherwise
- */
-gint
-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
-                         gint* focus_width, gint* focus_pad);
-
 /**
  * Get the desired metrics for a GtkScrollbar
  * metrics:          [IN]  struct which will contain the metrics

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list