summaryrefslogtreecommitdiffstats
path: root/macosx/tkMacOSXDraw.c
diff options
context:
space:
mode:
authorKevin Walzer <kw@codebykevin.com>2014-08-04 21:14:32 (GMT)
committerKevin Walzer <kw@codebykevin.com>2014-08-04 21:14:32 (GMT)
commitfc2388482a673cedc13b2e7a060175259243a33f (patch)
tree943791fbf59c98a23a387b8661bd163865d1c0a7 /macosx/tkMacOSXDraw.c
parent641b317cbd760a8d3676fff03a903c8c294410d0 (diff)
downloadtk-fc2388482a673cedc13b2e7a060175259243a33f.zip
tk-fc2388482a673cedc13b2e7a060175259243a33f.tar.gz
tk-fc2388482a673cedc13b2e7a060175259243a33f.tar.bz2
Further refinement of Mac OS X scrolling; thanks to Marc Culler for an additional patch.
Diffstat (limited to 'macosx/tkMacOSXDraw.c')
-rw-r--r--macosx/tkMacOSXDraw.c46
1 files changed, 5 insertions, 41 deletions
diff --git a/macosx/tkMacOSXDraw.c b/macosx/tkMacOSXDraw.c
index 6eef09d..40400c2 100644
--- a/macosx/tkMacOSXDraw.c
+++ b/macosx/tkMacOSXDraw.c
@@ -1460,12 +1460,12 @@ XMaxRequestSize(
* a damage region.
*
* Results:
- * Returns 0 if the scroll genereated no additional damage.
+ * Returns 0 if the scroll generated no additional damage.
* Otherwise, sets the region that needs to be repainted after
* scrolling and returns 1.
*
* Side effects:
- * Scrolls the bits in the window.
+ * Scrolls the rectangle in the window.
*
*----------------------------------------------------------------------
*/
@@ -1518,51 +1518,15 @@ TkScrollWindow(
/* Scroll the rectangle. */
[view scrollRect:NSRectFromCGRect(scroll_src) by:NSMakeSize(dx, -dy)];
[view displayRect:NSRectFromCGRect(scroll_dst)];
-
- /*
- * When a Text widget contains embedded images, scrolling generates
- * lots of artifacts involving multiple copies of the images
- * displayed on top of each other. Extensive experimentation, with
- * very little help from the Apple documentation, indicates that
- * whenever an image is displayed it gets added as a subview, which
- * then gets automatically redisplayed in its original location.
- *
- * We do two things to combat this. First, each subview that meets
- * the scroll area is added as a damage rectangle. Second, we
- * redisplay the subviews after the scroll.
- */
-
- /*
- * Step 1: Find any subviews that meet the scroll area and mark
- * them as damaged. Use Tk coordinates, shifted to account for the
- * future scrolling.
- */
-
- for (NSView *subview in [view subviews] ) {
- NSRect frame = [subview frame];
- CGRect subviewRect = CGRectMake(
- frame.origin.x - macDraw->xOff + dx,
- (bounds.size.height - frame.origin.y - frame.size.height) - macDraw->yOff + dy,
- frame.size.width, frame.size.height);
- /* Rectangles with negative coordinates seem to cause trouble. */
- if (subviewRect.origin.y < 0 && subviewRect.origin.y + subviewRect.size.height > 0) {
- subviewRect.origin.y = 0;
- }
- CGRect intersection = CGRectIntersection(srcRect, subviewRect);
- if (! CGRectIsEmpty(intersection) ){
- dstRgn = HIShapeCreateWithRect(&subviewRect);
- ChkErr(HIShapeUnion, dmgRgn, dstRgn, (HIMutableShapeRef) dmgRgn);
- CFRelease(dstRgn);
- }
- }
-
}
}
+
+
if ( dmgRgn == NULL ) {
dmgRgn = HIShapeCreateEmpty();
}
- //TkMacOSXInvalidateViewRegion(view, dmgRgn);
+
TkMacOSXSetWithNativeRegion(damageRgn, dmgRgn);
result = HIShapeIsEmpty(dmgRgn) ? 0 : 1;
CFRelease(dmgRgn);