| Index: Source/web/PopupListBox.cpp | 
| diff --git a/Source/web/PopupListBox.cpp b/Source/web/PopupListBox.cpp | 
| index a3213cc437b4a7878d9a91568873be4f90a9f134..4f2c13b23c5af1bfefd670716f429dd44a0eadd8 100644 | 
| --- a/Source/web/PopupListBox.cpp | 
| +++ b/Source/web/PopupListBox.cpp | 
| @@ -292,6 +292,11 @@ HostWindow* PopupListBox::hostWindow() const | 
| return parent() ? parent()->hostWindow() : 0; | 
| } | 
|  | 
| +bool PopupListBox::shouldPlaceVerticalScrollbarOnLeft() const | 
| +{ | 
| +    return m_popupClient->menuStyle().textDirection() == RTL; | 
| +} | 
| + | 
| // From HTMLSelectElement.cpp | 
| static String stripLeadingWhiteSpace(const String& string) | 
| { | 
| @@ -359,7 +364,7 @@ void PopupListBox::paint(GraphicsContext* gc, const IntRect& rect) | 
| { | 
| // Adjust coords for scrolled frame. | 
| IntRect r = intersection(rect, frameRect()); | 
| -    int tx = x() - scrollX(); | 
| +    int tx = x() - scrollX() + ((shouldPlaceVerticalScrollbarOnLeft() && verticalScrollbar()) ? verticalScrollbar()->width() : 0); | 
| int ty = y() - scrollY(); | 
|  | 
| r.move(-tx, -ty); | 
| @@ -671,7 +676,10 @@ void PopupListBox::invalidateRow(int index) | 
|  | 
| // Invalidate in the window contents, as FramelessScrollView::invalidateRect | 
| // paints in the window coordinates. | 
| -    invalidateRect(contentsToWindow(getRowBounds(index))); | 
| +    IntRect clipRect = contentsToWindow(getRowBounds(index)); | 
| +    if (shouldPlaceVerticalScrollbarOnLeft() && verticalScrollbar()) | 
| +        clipRect.move(verticalScrollbar()->width(), 0); | 
| +    invalidateRect(clipRect); | 
| } | 
|  | 
| void PopupListBox::scrollToRevealRow(int index) | 
|  |