Title: [102401] trunk/Source/WebCore
- Revision
- 102401
- Author
- [email protected]
- Date
- 2011-12-08 17:11:02 -0800 (Thu, 08 Dec 2011)
Log Message
Create one WebScrollbarPainterDelegate for each scrollbar
https://bugs.webkit.org/show_bug.cgi?id=74142
Reviewed by Sam Weinig.
Create and destroy WebScrollbarPainterDelegate objects as scrollbars come and go.
This is a step towards simplifying the WebScrollbarPainterDelegate object.
* platform/mac/ScrollAnimatorMac.h:
* platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimatorMac::ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::~ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::didAddVerticalScrollbar):
(WebCore::ScrollAnimatorMac::willRemoveVerticalScrollbar):
(WebCore::ScrollAnimatorMac::didAddHorizontalScrollbar):
(WebCore::ScrollAnimatorMac::willRemoveHorizontalScrollbar):
(WebCore::ScrollAnimatorMac::cancelAnimations):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (102400 => 102401)
--- trunk/Source/WebCore/ChangeLog 2011-12-09 01:04:51 UTC (rev 102400)
+++ trunk/Source/WebCore/ChangeLog 2011-12-09 01:11:02 UTC (rev 102401)
@@ -1,3 +1,23 @@
+2011-12-08 Anders Carlsson <[email protected]>
+
+ Create one WebScrollbarPainterDelegate for each scrollbar
+ https://bugs.webkit.org/show_bug.cgi?id=74142
+
+ Reviewed by Sam Weinig.
+
+ Create and destroy WebScrollbarPainterDelegate objects as scrollbars come and go.
+ This is a step towards simplifying the WebScrollbarPainterDelegate object.
+
+ * platform/mac/ScrollAnimatorMac.h:
+ * platform/mac/ScrollAnimatorMac.mm:
+ (WebCore::ScrollAnimatorMac::ScrollAnimatorMac):
+ (WebCore::ScrollAnimatorMac::~ScrollAnimatorMac):
+ (WebCore::ScrollAnimatorMac::didAddVerticalScrollbar):
+ (WebCore::ScrollAnimatorMac::willRemoveVerticalScrollbar):
+ (WebCore::ScrollAnimatorMac::didAddHorizontalScrollbar):
+ (WebCore::ScrollAnimatorMac::willRemoveHorizontalScrollbar):
+ (WebCore::ScrollAnimatorMac::cancelAnimations):
+
2011-12-08 David Reveman <[email protected]>
[Chromium] Add per-tile painting flag to DumpRenderTree and rename AcceleratedDrawing to AcceleratedPainting in chromium specific code.
Modified: trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h (102400 => 102401)
--- trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h 2011-12-09 01:04:51 UTC (rev 102400)
+++ trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h 2011-12-09 01:11:02 UTC (rev 102401)
@@ -106,7 +106,8 @@
#if USE(SCROLLBAR_PAINTER)
RetainPtr<ScrollbarPainterController> m_scrollbarPainterController;
RetainPtr<WebScrollbarPainterControllerDelegate> m_scrollbarPainterControllerDelegate;
- RetainPtr<WebScrollbarPainterDelegate> m_scrollbarPainterDelegate;
+ RetainPtr<WebScrollbarPainterDelegate> m_horizontalScrollbarPainterDelegate;
+ RetainPtr<WebScrollbarPainterDelegate> m_verticalScrollbarPainterDelegate;
void initialScrollbarPaintTimerFired(Timer<ScrollAnimatorMac>*);
Timer<ScrollAnimatorMac> m_initialScrollbarPaintTimer;
Modified: trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm (102400 => 102401)
--- trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm 2011-12-09 01:04:51 UTC (rev 102400)
+++ trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm 2011-12-09 01:11:02 UTC (rev 102401)
@@ -592,8 +592,6 @@
m_scrollbarPainterController = [[[NSClassFromString(@"NSScrollerImpPair") alloc] init] autorelease];
[m_scrollbarPainterController.get() setDelegate:m_scrollbarPainterControllerDelegate.get()];
[m_scrollbarPainterController.get() setScrollerStyle:wkRecommendedScrollerStyle()];
-
- m_scrollbarPainterDelegate.adoptNS([[WebScrollbarPainterDelegate alloc] initWithScrollAnimator:this]);
#endif
}
@@ -603,7 +601,8 @@
BEGIN_BLOCK_OBJC_EXCEPTIONS;
[m_scrollbarPainterControllerDelegate.get() scrollAnimatorDestroyed];
[m_scrollbarPainterController.get() setDelegate:nil];
- [m_scrollbarPainterDelegate.get() scrollAnimatorDestroyed];
+ [m_horizontalScrollbarPainterDelegate.get() scrollAnimatorDestroyed];
+ [m_verticalScrollbarPainterDelegate.get() scrollAnimatorDestroyed];
[m_scrollAnimationHelperDelegate.get() scrollAnimatorDestroyed];
END_BLOCK_OBJC_EXCEPTIONS;
#endif
@@ -858,12 +857,18 @@
void ScrollAnimatorMac::didAddVerticalScrollbar(Scrollbar* scrollbar)
{
#if USE(SCROLLBAR_PAINTER)
- if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) {
- [painter setDelegate:m_scrollbarPainterDelegate.get()];
- [m_scrollbarPainterController.get() setVerticalScrollerImp:painter];
- if (scrollableArea()->inLiveResize())
- [painter setKnobAlpha:1];
- }
+ ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar);
+ if (!painter)
+ return;
+
+ ASSERT(!m_verticalScrollbarPainterDelegate);
+ m_verticalScrollbarPainterDelegate.adoptNS([[WebScrollbarPainterDelegate alloc] initWithScrollAnimator:this]);
+
+ [painter setDelegate:m_verticalScrollbarPainterDelegate.get()];
+ [m_scrollbarPainterController.get() setVerticalScrollerImp:painter];
+ if (scrollableArea()->inLiveResize())
+ [painter setKnobAlpha:1];
+
#else
UNUSED_PARAM(scrollbar);
#endif
@@ -872,10 +877,16 @@
void ScrollAnimatorMac::willRemoveVerticalScrollbar(Scrollbar* scrollbar)
{
#if USE(SCROLLBAR_PAINTER)
- if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) {
- [painter setDelegate:nil];
- [m_scrollbarPainterController.get() setVerticalScrollerImp:nil];
- }
+ ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar);
+ if (!painter)
+ return;
+
+ ASSERT(m_verticalScrollbarPainterDelegate);
+ [m_verticalScrollbarPainterDelegate.get() scrollAnimatorDestroyed];
+ m_verticalScrollbarPainterDelegate = nullptr;
+
+ [painter setDelegate:nil];
+ [m_scrollbarPainterController.get() setVerticalScrollerImp:nil];
#else
UNUSED_PARAM(scrollbar);
#endif
@@ -884,12 +895,17 @@
void ScrollAnimatorMac::didAddHorizontalScrollbar(Scrollbar* scrollbar)
{
#if USE(SCROLLBAR_PAINTER)
- if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) {
- [painter setDelegate:m_scrollbarPainterDelegate.get()];
- [m_scrollbarPainterController.get() setHorizontalScrollerImp:painter];
- if (scrollableArea()->inLiveResize())
- [painter setKnobAlpha:1];
- }
+ ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar);
+ if (!painter)
+ return;
+
+ ASSERT(!m_horizontalScrollbarPainterDelegate);
+ m_horizontalScrollbarPainterDelegate.adoptNS([[WebScrollbarPainterDelegate alloc] initWithScrollAnimator:this]);
+
+ [painter setDelegate:m_horizontalScrollbarPainterDelegate.get()];
+ [m_scrollbarPainterController.get() setHorizontalScrollerImp:painter];
+ if (scrollableArea()->inLiveResize())
+ [painter setKnobAlpha:1];
#else
UNUSED_PARAM(scrollbar);
#endif
@@ -898,10 +914,16 @@
void ScrollAnimatorMac::willRemoveHorizontalScrollbar(Scrollbar* scrollbar)
{
#if USE(SCROLLBAR_PAINTER)
- if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) {
- [painter setDelegate:nil];
- [m_scrollbarPainterController.get() setHorizontalScrollerImp:nil];
- }
+ ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar);
+ if (!painter)
+ return;
+
+ ASSERT(m_horizontalScrollbarPainterDelegate);
+ [m_horizontalScrollbarPainterDelegate.get() scrollAnimatorDestroyed];
+ m_horizontalScrollbarPainterDelegate = nullptr;
+
+ [painter setDelegate:nil];
+ [m_scrollbarPainterController.get() setHorizontalScrollerImp:nil];
#else
UNUSED_PARAM(scrollbar);
#endif
@@ -914,7 +936,8 @@
#if USE(SCROLLBAR_PAINTER)
if (scrollbarPaintTimerIsActive())
stopScrollbarPaintTimer();
- [m_scrollbarPainterDelegate.get() cancelAnimations];
+ [m_horizontalScrollbarPainterDelegate.get() cancelAnimations];
+ [m_verticalScrollbarPainterDelegate.get() cancelAnimations];
#endif
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes