Title: [93361] trunk/Source
Revision
93361
Author
[email protected]
Date
2011-08-18 15:46:42 -0700 (Thu, 18 Aug 2011)

Log Message

Chromium Mac: Show scrollbar when doing search
https://bugs.webkit.org/show_bug.cgi?id=66209

Patch by Sailesh Agrawal <[email protected]> on 2011-08-18
Reviewed by James Robinson.

Source/WebCore:

Updated the Lion scrollbar drawing code to force the scrollbar to be visible when we have tickmarks for search results.

No tests because there are no Mac 10.7 chromium bots yet.

* platform/chromium/ScrollbarThemeChromiumMac.h:
* platform/chromium/ScrollbarThemeChromiumMac.mm:
(WebCore::ScrollbarThemeChromiumMac::paint):
(WebCore::ScrollbarThemeChromiumMac::paintTickmarks):

Source/WebKit/chromium:

Fixed a bug in invalidateArea where it wouldn't properly invalidate overlay scrollbars. The problem was that it was assuming that the scrollbar was always to the right of the visible scrollbar. This isn't true for overlay scrollbars.

No tests because there are no Mac 10.7 chromium bots yet.

* src/WebFrameImpl.cpp:
(WebKit::WebFrameImpl::invalidateArea):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (93360 => 93361)


--- trunk/Source/WebCore/ChangeLog	2011-08-18 22:42:25 UTC (rev 93360)
+++ trunk/Source/WebCore/ChangeLog	2011-08-18 22:46:42 UTC (rev 93361)
@@ -1,3 +1,19 @@
+2011-08-18  Sailesh Agrawal  <[email protected]>
+
+        Chromium Mac: Show scrollbar when doing search
+        https://bugs.webkit.org/show_bug.cgi?id=66209
+
+        Reviewed by James Robinson.
+
+        Updated the Lion scrollbar drawing code to force the scrollbar to be visible when we have tickmarks for search results.
+
+        No tests because there are no Mac 10.7 chromium bots yet.
+
+        * platform/chromium/ScrollbarThemeChromiumMac.h:
+        * platform/chromium/ScrollbarThemeChromiumMac.mm:
+        (WebCore::ScrollbarThemeChromiumMac::paint):
+        (WebCore::ScrollbarThemeChromiumMac::paintTickmarks):
+
 2011-08-18  James Robinson  <[email protected]>
 
         [chromium] Draw the root/"non-composited content" in compositor side

Modified: trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h (93360 => 93361)


--- trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h	2011-08-18 22:42:25 UTC (rev 93360)
+++ trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h	2011-08-18 22:46:42 UTC (rev 93361)
@@ -80,7 +80,8 @@
     virtual bool shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent&);
     virtual bool shouldDragDocumentInsteadOfThumb(Scrollbar*, const PlatformMouseEvent&);
 
-    virtual void paintTickmarks(GraphicsContext*, Scrollbar*, const IntRect&);
+private:
+    void paintGivenTickmarks(GraphicsContext*, Scrollbar*, const IntRect&, const Vector<IntRect>&);
 
 private:
     RefPtr<Pattern> m_overhangPattern;

Modified: trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm (93360 => 93361)


--- trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm	2011-08-18 22:42:25 UTC (rev 93360)
+++ trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm	2011-08-18 22:46:42 UTC (rev 93361)
@@ -498,6 +498,10 @@
 
 bool ScrollbarThemeChromiumMac::paint(Scrollbar* scrollbar, GraphicsContext* context, const IntRect& damageRect)
 {
+    // Get the tickmarks for the frameview.
+    Vector<IntRect> tickmarks;
+    scrollbar->scrollableArea()->getTickmarks(tickmarks);
+
     if (isScrollbarOverlayAPIAvailable()) {
         float value = 0;
         float overhang = 0;
@@ -526,6 +530,16 @@
         scrollAnimator->setIsDrawingIntoLayer(false);
 #endif
 
+        CGFloat oldKnobAlpha = 0;
+        CGFloat oldTrackAlpha = 0;
+        bool hasTickmarks = tickmarks.size() > 0 && scrollbar->orientation() == VerticalScrollbar;
+        if (hasTickmarks) {
+          oldKnobAlpha = wkScrollbarPainterKnobAlpha(painterForScrollbar(scrollbar));
+          wkSetScrollbarPainterKnobAlpha(painterForScrollbar(scrollbar), 1.0);
+          oldTrackAlpha = wkScrollbarPainterTrackAlpha(painterForScrollbar(scrollbar));
+          wkSetScrollbarPainterTrackAlpha(painterForScrollbar(scrollbar), 1.0);
+        }
+
         GraphicsContextStateSaver stateSaver(*context);
         context->clip(damageRect);
         context->translate(scrollbar->frameRect().x(), scrollbar->frameRect().y());
@@ -547,11 +561,17 @@
             tickmarkTrackRect.setX(tickmarkTrackRect.x() + 2);
             tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 5);
         }
-        paintTickmarks(context, scrollbar, tickmarkTrackRect);
+        paintGivenTickmarks(context, scrollbar, tickmarkTrackRect, tickmarks);
 
         wkScrollbarPainterPaintKnob(scrollbarPainter);
 
         scrollAnimator->setIsDrawingIntoLayer(false);
+
+        if (hasTickmarks) {
+          wkSetScrollbarPainterKnobAlpha(scrollbarPainter, oldKnobAlpha);
+          wkSetScrollbarPainterTrackAlpha(scrollbarPainter, oldTrackAlpha);
+        }
+
         return true;
     }
 
@@ -620,7 +640,7 @@
     // Inset by 2 on the left and 3 on the right.
     tickmarkTrackRect.setX(tickmarkTrackRect.x() + 2);
     tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 5);
-    paintTickmarks(drawingContext, scrollbar, tickmarkTrackRect);
+    paintGivenTickmarks(drawingContext, scrollbar, tickmarkTrackRect, tickmarks);
 
     if (hasThumb(scrollbar)) {
         PlatformBridge::ThemePaintScrollbarInfo scrollbarInfo;
@@ -645,7 +665,7 @@
     return true;
 }
 
-void ScrollbarThemeChromiumMac::paintTickmarks(GraphicsContext* context, Scrollbar* scrollbar, const IntRect& rect)
+void ScrollbarThemeChromiumMac::paintGivenTickmarks(GraphicsContext* context, Scrollbar* scrollbar, const IntRect& rect, const Vector<IntRect>& tickmarks)
 {
     if (scrollbar->orientation() != VerticalScrollbar)
         return;
@@ -653,25 +673,13 @@
     if (rect.height() <= 0 || rect.width() <= 0)
         return;  // nothing to draw on.
 
-    // Get the tickmarks for the frameview.
-    Vector<IntRect> tickmarks;
-    scrollbar->scrollableArea()->getTickmarks(tickmarks);
     if (!tickmarks.size())
         return;
 
-    int alphaInt = 0xFF;
-    if (scrollbarMap()->contains(scrollbar)) {
-        WKScrollbarPainterRef scrollbarPainter = scrollbarMap()->get(scrollbar).get();
-        if (scrollbarPainter)
-            alphaInt = 0xFF * wkScrollbarPainterTrackAlpha(scrollbarPainter);
-    }
-    if (alphaInt == 0)
-        return;
-
     context->save();
     context->setShouldAntialias(false);
-    context->setStrokeColor(Color(0xCC, 0xAA, 0x00, alphaInt), ColorSpaceDeviceRGB);
-    context->setFillColor(Color(0xFF, 0xDD, 0x00, alphaInt), ColorSpaceDeviceRGB);
+    context->setStrokeColor(Color(0xCC, 0xAA, 0x00, 0xFF), ColorSpaceDeviceRGB);
+    context->setFillColor(Color(0xFF, 0xDD, 0x00, 0xFF), ColorSpaceDeviceRGB);
 
     for (Vector<IntRect>::const_iterator i = tickmarks.begin(); i != tickmarks.end(); ++i) {
         // Calculate how far down (in %) the tick-mark should appear.

Modified: trunk/Source/WebKit/chromium/ChangeLog (93360 => 93361)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-08-18 22:42:25 UTC (rev 93360)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-08-18 22:46:42 UTC (rev 93361)
@@ -1,3 +1,17 @@
+2011-08-18  Sailesh Agrawal  <[email protected]>
+
+        Chromium Mac: Show scrollbar when doing search
+        https://bugs.webkit.org/show_bug.cgi?id=66209
+
+        Reviewed by James Robinson.
+
+        Fixed a bug in invalidateArea where it wouldn't properly invalidate overlay scrollbars. The problem was that it was assuming that the scrollbar was always to the right of the visible scrollbar. This isn't true for overlay scrollbars.
+
+        No tests because there are no Mac 10.7 chromium bots yet.
+
+        * src/WebFrameImpl.cpp:
+        (WebKit::WebFrameImpl::invalidateArea):
+
 2011-08-18  James Robinson  <[email protected]>
 
         [chromium] Draw the root/"non-composited content" in compositor side

Modified: trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp (93360 => 93361)


--- trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp	2011-08-18 22:42:25 UTC (rev 93360)
+++ trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp	2011-08-18 22:46:42 UTC (rev 93361)
@@ -2167,13 +2167,9 @@
 
         if ((area & InvalidateScrollbar) == InvalidateScrollbar) {
             // Invalidate the vertical scroll bar region for the view.
-            IntRect scrollBarVert(
-                view->x() + view->visibleWidth(), view->y(),
-                ScrollbarTheme::nativeTheme()->scrollbarThickness(),
-                view->visibleHeight());
-            IntRect frameRect = view->frameRect();
-            scrollBarVert.move(-frameRect.x(), -frameRect.y());
-            view->invalidateRect(scrollBarVert);
+            Scrollbar* scrollbar = view->verticalScrollbar();
+            if (scrollbar)
+                scrollbar->invalidate();
         }
     }
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to