*** NSScrollView.m Thu Dec 20 21:41:16 2001 --- /usr/GNUstep/Sources/gui/Source/NSScrollView.m Thu Dec 20 21:41:12 2001 *************** *** 176,181 **** --- 176,182 ---- if ([aView isKindOfClass: [NSView class]] == NO) [NSException raise: NSInvalidArgumentException format: @"Attempt to set non-view object as content view"]; + if (aView != _contentView) { NSView *docView = [aView documentView]; *************** *** 394,403 **** [_headerClipView scrollToPoint: scrollTo]; } [_contentView scrollToPoint: point]; - if (_rulersVisible == YES && _horizRuler != nil) - [_horizRuler setNeedsDisplay: YES]; - if (_rulersVisible == YES && _vertRuler != nil) - [_vertRuler setNeedsDisplay: YES]; } - (void) reflectScrolledClipView: (NSClipView*)aClipView --- 395,400 ---- *************** *** 575,666 **** - (void) tile { NSRect contentRect; ! NSRect vertScrollerRect = NSZeroRect; ! NSRect horizScrollerRect = NSZeroRect; ! NSRect vertRulerRect = NSZeroRect; ! NSRect horizRulerRect = NSZeroRect; ! NSRect headerViewRect = NSZeroRect; ! ! NSRectEdge topEdge; ! NSRectEdge bottomEdge; ! /* NSTableView related vars */ float headerViewHeight = 0; NSView *cornerView = nil; ! contentRect = [self bounds]; ! ! if ([self isFlipped]) { ! topEdge = NSMinYEdge; ! bottomEdge = NSMaxYEdge; } ! else { ! topEdge = NSMaxYEdge; ! bottomEdge = NSMinYEdge; } ! switch (_borderType) { ! case NSNoBorder: ! break; ! case NSLineBorder: ! contentRect = NSInsetRect(contentRect, 1, 1); ! break; ! case NSBezelBorder: ! case NSGrooveBorder: ! contentRect = NSInsetRect(contentRect, 2, 2); ! break; ! } ! if (_hasHeaderView == YES) ! { ! headerViewHeight = NSHeight([[_headerClipView documentView] frame]); ! if (_hasCornerView) ! { ! cornerView = [(NSTableView *)[_contentView documentView] cornerView]; ! } ! if (headerViewHeight == 0 && cornerView != nil) ! { ! headerViewHeight = NSHeight([cornerView frame]); ! } ! NSDivideRect(contentRect, &headerViewRect, &contentRect, ! headerViewHeight, topEdge); ! [_headerClipView setFrame: headerViewRect]; ! if (cornerView != nil) ! { ! [cornerView setFrameOrigin: headerViewRect.origin]; ! } ! } ! if (_rulersVisible && _hasHorizRuler) ! { ! NSDivideRect(contentRect, &horizRulerRect, &contentRect, ! [_horizRuler requiredThickness], topEdge); ! [_horizRuler setFrame: horizRulerRect]; } ! if (_hasVertScroller) { ! NSDivideRect(contentRect, &vertScrollerRect, &contentRect, ! [NSScroller scrollerWidth], NSMinXEdge); ! [_vertScroller setFrame: vertScrollerRect]; } ! if (_rulersVisible && _hasVertRuler) { ! NSDivideRect(contentRect, &vertRulerRect, &contentRect, ! [_vertRuler requiredThickness], NSMinXEdge); ! [_vertRuler setFrame: vertRulerRect]; } ! if (_hasHorizScroller) { ! NSDivideRect(contentRect, &horizScrollerRect, &contentRect, ! [NSScroller scrollerWidth], bottomEdge); ! [_horizScroller setFrame: horizScrollerRect]; } [_contentView setFrame: contentRect]; } --- 572,687 ---- - (void) tile { + NSSize contentSize; NSRect contentRect; ! NSSize border = _sizeForBorderType(_borderType); /* NSTableView related vars */ float headerViewHeight = 0; NSView *cornerView = nil; + NSSize fakeBoundsSize; ! if (_hasHeaderView == YES) { ! headerViewHeight = [[_headerClipView documentView] frame].size.height; } ! ! if (_hasCornerView == YES) ! { ! cornerView = [(NSTableView *)[_contentView documentView] cornerView]; ! if (headerViewHeight == 0) ! headerViewHeight = [cornerView frame].size.height; ! } ! fakeBoundsSize = _bounds.size; ! fakeBoundsSize.height -= headerViewHeight; ! contentSize = [isa contentSizeForFrameSize: fakeBoundsSize ! hasHorizontalScroller: _hasHorizScroller ! hasVerticalScroller: _hasVertScroller ! borderType: _borderType]; ! contentRect = NSMakeRect (0, 0, contentSize.width, contentSize.height); ! contentRect.origin.x = border.width; ! contentRect.origin.y = border.height; ! ! if (_rFlags.flipped_view) { ! contentRect.origin.y += headerViewHeight; } ! if (_hasVertScroller) { ! NSRect vertScrollerRect = NSZeroRect; ! vertScrollerRect.origin.x = _bounds.origin.x + border.width; ! vertScrollerRect.origin.y = _bounds.origin.y + border.height; ! vertScrollerRect.size.width = scrollerWidth; ! vertScrollerRect.size.height = fakeBoundsSize.height ! - 2 * border.height; ! contentRect.origin.x += scrollerWidth + 1; ! if (_rFlags.flipped_view) ! { ! vertScrollerRect.origin.y += headerViewHeight; ! } ! [_vertScroller setFrame: vertScrollerRect]; } ! ! if (_hasHorizScroller) { ! NSRect horizScrollerRect = NSZeroRect; ! ! horizScrollerRect.origin.x = contentRect.origin.x; ! horizScrollerRect.origin.y = _bounds.origin.y + border.height; ! horizScrollerRect.size.width = contentRect.size.width; ! horizScrollerRect.size.height = scrollerWidth; ! ! if (_rFlags.flipped_view) ! { ! horizScrollerRect.origin.y += headerViewHeight; ! horizScrollerRect.origin.y += contentRect.size.height + 1; ! } ! else ! { ! contentRect.origin.y += scrollerWidth + 1; ! } ! [_horizScroller setFrame: horizScrollerRect]; } ! ! if (_hasHeaderView) { ! NSRect rect; ! ! rect.origin.x = contentRect.origin.x; ! if (_rFlags.flipped_view) ! { ! rect.origin.y = _bounds.origin.y + border.height; ! } ! else ! { ! rect.origin.y = NSMaxY (_bounds); ! rect.origin.y -= headerViewHeight + border.height; ! } ! rect.size.width = contentRect.size.width; ! rect.size.height = headerViewHeight; ! [_headerClipView setFrame: rect]; } ! ! if (_hasCornerView) { ! NSPoint origin; ! ! origin.x = _bounds.origin.x + border.width; ! if (_rFlags.flipped_view) ! { ! origin.y = _bounds.origin.y + border.height; ! } ! else ! { ! origin.y = NSMaxY (_bounds) - headerViewHeight - border.height; ! } ! [cornerView setFrameOrigin: origin]; } + // FIXME: The Rulers should be positioned too [_contentView setFrame: contentRect]; } *************** *** 732,738 **** if (_hasHorizScroller) { ! float ypos = scrollerWidth + border.width + 1; if (_rFlags.flipped_view) ypos = _bounds.size.height - ypos; --- 753,759 ---- if (_hasHorizScroller) { ! float ypos = scrollerWidth + border.height + 1; if (_rFlags.flipped_view) ypos = _bounds.size.height - ypos; *************** *** 879,903 **** - (NSRulerView *) horizontalRulerView { - if (_hasHorizRuler == YES && _horizRuler == nil) - { - _horizRuler = [[[[self class] rulerViewClass] alloc] - initWithScrollView: self orientation: NSHorizontalRuler]; - [self addSubview: _horizRuler]; - } - return _horizRuler; } - (NSRulerView *) verticalRulerView { - if (_hasVertRuler == YES && _vertRuler == nil) - { - _vertRuler = [[[[self class] rulerViewClass] alloc] - initWithScrollView: self orientation: NSVerticalRuler]; - [self addSubview: _vertRuler]; - } - return _vertRuler; } --- 900,910 ----