From 2fbe02621587ece892b1bdddcaf59fe33e8fb61b Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Mon, 31 Aug 2009 14:39:00 -0700 Subject: [PATCH] Further drawing fixes. Reviewed by me. --- AppKit/CPSplitView.j | 9 ++-- AppKit/CPView.j | 4 +- AppKit/Platform/DOM/CPDOMDisplayServer.h | 2 +- AppKit/_CPDisplayServer.j | 56 ++++++++++++++---------- 4 files changed, 42 insertions(+), 29 deletions(-) diff --git a/AppKit/CPSplitView.j b/AppKit/CPSplitView.j index 366a2682c..0540bd560 100644 --- a/AppKit/CPSplitView.j +++ b/AppKit/CPSplitView.j @@ -210,7 +210,7 @@ var CPSplitViewHorizontalImage = nil, _DOMDividerElements[_drawingDivider].style.cursor = "move"; _DOMDividerElements[_drawingDivider].style.position = "absolute"; _DOMDividerElements[_drawingDivider].style.backgroundRepeat = "repeat"; - + CPDOMDisplayServerAppendChild(_DOMElement, _DOMDividerElements[_drawingDivider]); if (_isPaneSplitter) @@ -224,7 +224,7 @@ var CPSplitViewHorizontalImage = nil, _DOMDividerElements[_drawingDivider].style.backgroundImage = "url('"+_dividerImagePath+"')"; } } - + CPDOMDisplayServerSetStyleLeftTop(_DOMDividerElements[_drawingDivider], NULL, _CGRectGetMinX(aRect), _CGRectGetMinY(aRect)); CPDOMDisplayServerSetStyleSize(_DOMDividerElements[_drawingDivider], _CGRectGetWidth(aRect), _CGRectGetHeight(aRect)); #endif @@ -303,7 +303,7 @@ var CPSplitViewHorizontalImage = nil, - (void)trackDivider:(CPEvent)anEvent { var type = [anEvent type]; - + if (type == CPLeftMouseUp) { if (_currentDivider != CPNotFound) @@ -359,6 +359,9 @@ var CPSplitViewHorizontalImage = nil, } } } + + if (_currentDivider === CPNotFound) + return; } else if (type == CPLeftMouseDragged && _currentDivider != CPNotFound) diff --git a/AppKit/CPView.j b/AppKit/CPView.j index c140156ff..d9322fea3 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -1686,11 +1686,11 @@ setBoundsOrigin: - (void)setNeedsLayout { - _needsLayout = YES; - if (!(_viewClassFlags & CPViewHasCustomLayoutSubviews)) return; + _needsLayout = YES; + _CPDisplayServerAddLayoutObject(self); } diff --git a/AppKit/Platform/DOM/CPDOMDisplayServer.h b/AppKit/Platform/DOM/CPDOMDisplayServer.h index e11306aed..34e3ba838 100644 --- a/AppKit/Platform/DOM/CPDOMDisplayServer.h +++ b/AppKit/Platform/DOM/CPDOMDisplayServer.h @@ -20,7 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#define DOM_OPTIMIZATION 1 +#define DOM_OPTIMIZATION 0 #define SetStyleOrigin 0 #define SetStyleLeftTop 0 diff --git a/AppKit/_CPDisplayServer.j b/AppKit/_CPDisplayServer.j index 82e8ecf23..c2dfb3e1e 100644 --- a/AppKit/_CPDisplayServer.j +++ b/AppKit/_CPDisplayServer.j @@ -66,33 +66,43 @@ function _CPDisplayServerAddLayoutObject(anObject) + (void)run { - var index = 0; - - for (; index < layoutObjects.length; ++index) + while (layoutObjects.length || displayObjects.length) { - var object = layoutObjects[index]; + var index = 0; - delete layoutObjectsByUID[[object UID]]; - [object layoutIfNeeded]; + for (; index < layoutObjects.length; ++index) + { + var object = layoutObjects[index]; + + delete layoutObjectsByUID[[object UID]]; + [object layoutIfNeeded]; + } + + layoutObjects = []; + layoutObjectsByUID = { }; + + index = 0; + + for (; index < displayObjects.length; ++index) + { + if (layoutObjects.length) + break; + + var object = displayObjects[index]; + + delete displayObjectsByUID[[object UID]]; + [object displayIfNeeded]; + } + + if (index === displayObjects.length) + { + displayObjects = []; + displayObjectsByUID = { }; + } + else + displayObjects = displayObjects.splice(0, index); } - EXECUTE_DOM_INSTRUCTIONS(); - - layoutObjects = []; - layoutObjectsByUID = { }; - - index = 0; - - var count = displayObjects.length; - - for (; index < count; ++index) - [displayObjects[index] displayIfNeeded]; - - EXECUTE_DOM_INSTRUCTIONS(); - - displayObjects = []; - displayObjectsByUID = { }; - [runLoop performSelector:@selector(run) target:self argument:nil order:0 modes:[CPDefaultRunLoopMode]]; }