mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-22 17:52:42 +00:00
General tidyup - make updates work properly etc.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@3647 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
6f7d5e3738
commit
d9402deccf
5 changed files with 1402 additions and 1179 deletions
|
@ -1220,23 +1220,25 @@ BOOL done = NO;
|
|||
windows_need_update = flag;
|
||||
}
|
||||
|
||||
- (void)updateWindows // send an update message
|
||||
- (void) updateWindows // send an update message
|
||||
{ // to all visible windows
|
||||
int i, count;
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
int i, count;
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
NSArray *window_list = [self windows];
|
||||
|
||||
windows_need_update = NO;
|
||||
// notify that an update is
|
||||
// imminent
|
||||
[nc postNotificationName:NSApplicationWillUpdateNotification object:self];
|
||||
[nc postNotificationName:NSApplicationWillUpdateNotification object: self];
|
||||
|
||||
for (i = 0, count = [window_list count]; i < count; i++)
|
||||
{
|
||||
NSWindow *win = [window_list objectAtIndex:i];
|
||||
if ([win isVisible]) // send update only if the
|
||||
[win update]; // window is visible
|
||||
}
|
||||
// notify update did occur
|
||||
[nc postNotificationName:NSApplicationDidUpdateNotification object:self];
|
||||
for (i = 0, count = [window_list count]; i < count; i++)
|
||||
{
|
||||
NSWindow *win = [window_list objectAtIndex: i];
|
||||
if ([win isVisible]) // send update only if the
|
||||
[win update]; // window is visible
|
||||
}
|
||||
// notify update did occur
|
||||
[nc postNotificationName:NSApplicationDidUpdateNotification object:self];
|
||||
}
|
||||
|
||||
- (NSArray*) windows
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
|
||||
Author: Ovidiu Predescu <ovidiu@net-community.com>
|
||||
Date: July 1997
|
||||
|
||||
|
||||
This file is part of the GNUstep GUI Library.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
|
@ -42,7 +42,7 @@
|
|||
return self;
|
||||
}
|
||||
|
||||
- (void)setDocumentView:(NSView*)aView
|
||||
- (void) setDocumentView: (NSView*)aView
|
||||
{
|
||||
if (_documentView == aView)
|
||||
return;
|
||||
|
@ -81,11 +81,11 @@
|
|||
[[self superview] reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)resetCursorRects
|
||||
- (void) resetCursorRects
|
||||
{
|
||||
[self addCursorRect:[self bounds] cursor:_cursor];
|
||||
}
|
||||
|
||||
|
||||
- (void) resizeSubviewsWithOldSize: (NSSize)old_size
|
||||
{
|
||||
[super resizeSubviewsWithOldSize: old_size];
|
||||
|
@ -95,8 +95,11 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (void)scrollToPoint:(NSPoint)point
|
||||
- (void) scrollToPoint: (NSPoint)point
|
||||
{
|
||||
NSRect originalBounds = [self bounds];
|
||||
NSRect newBounds = originalBounds;
|
||||
NSRect intersection;
|
||||
#ifdef DEBUGLOG
|
||||
NSPoint currentPoint = [self bounds].origin;
|
||||
|
||||
|
@ -105,26 +108,101 @@
|
|||
point.x, point.y);
|
||||
#endif
|
||||
|
||||
point = [self constrainScrollPoint: point];
|
||||
[self setBoundsOrigin: NSMakePoint(point.x, point.y)];
|
||||
newBounds.origin = [self constrainScrollPoint: point];
|
||||
|
||||
if (NSEqualPoints(originalBounds.origin, newBounds.origin))
|
||||
return;
|
||||
|
||||
// [self setBoundsOrigin: newBounds.origin];
|
||||
|
||||
[self setNeedsDisplay: YES];
|
||||
if (_copiesOnScroll)
|
||||
/* TODO: move the visible portion of the document */
|
||||
[_documentView displayRect: bounds];
|
||||
{
|
||||
// copy the portion of the view that is common before and after scrolling.
|
||||
// then tell docview to draw the exposed parts.
|
||||
// intersection is the common rectangle
|
||||
intersection = NSIntersectionRect(originalBounds, newBounds);
|
||||
if (NSEqualRects(intersection, NSZeroRect))
|
||||
{
|
||||
// no intersection -- docview should draw everyting
|
||||
[self setBoundsOrigin: newBounds.origin];
|
||||
[_documentView setNeedsDisplayInRect: newBounds];
|
||||
}
|
||||
else
|
||||
{
|
||||
NSPoint destPoint = intersection.origin;
|
||||
float dx = newBounds.origin.x - originalBounds.origin.x;
|
||||
float dy = newBounds.origin.y - originalBounds.origin.y;
|
||||
destPoint.x -= dx;
|
||||
destPoint.y -= dy;
|
||||
[self lockFocus];
|
||||
NSCopyBits(0, intersection, destPoint);
|
||||
[self unlockFocus];
|
||||
|
||||
[self setBoundsOrigin: newBounds.origin];
|
||||
if (dx != 0)
|
||||
{
|
||||
// moved in x -- redraw a full-height rectangle at
|
||||
// side of intersection
|
||||
NSRect redrawRect;
|
||||
|
||||
redrawRect.origin.y = newBounds.origin.y;
|
||||
redrawRect.size.height = newBounds.size.height;
|
||||
redrawRect.size.width = newBounds.size.width
|
||||
- intersection.size.width;
|
||||
if (dx < 0)
|
||||
{
|
||||
// moved to the left -- redraw at left of intersection
|
||||
redrawRect.origin.x = newBounds.origin.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
// moved to the right -- redraw at right of intersection
|
||||
redrawRect.origin.x = newBounds.origin.x
|
||||
+ intersection.size.width;
|
||||
}
|
||||
[_documentView setNeedsDisplayInRect: redrawRect];
|
||||
}
|
||||
|
||||
if (dy != 0)
|
||||
{
|
||||
// moved in y
|
||||
// -- redraw rectangle with intersection's width over or under it
|
||||
NSRect redrawRect;
|
||||
|
||||
redrawRect.origin.x = intersection.origin.x;
|
||||
redrawRect.size.width = intersection.size.width;
|
||||
redrawRect.size.height = newBounds.size.height
|
||||
- intersection.size.height;
|
||||
if (dy < 0)
|
||||
{
|
||||
// moved down -- redraw under intersection
|
||||
redrawRect.origin.y = newBounds.origin.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
// moved up -- redraw over intersection
|
||||
redrawRect.origin.y = newBounds.origin.y
|
||||
+ intersection.size.height;
|
||||
}
|
||||
[_documentView setNeedsDisplayInRect: redrawRect];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
[_documentView setNeedsDisplayInRect: bounds];
|
||||
// [_documentView setNeedsDisplay: YES];
|
||||
[self display];
|
||||
{
|
||||
// dont copy anything -- docview draws it all
|
||||
[self setBoundsOrigin: newBounds.origin];
|
||||
[_documentView setNeedsDisplayInRect: newBounds];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSPoint)constrainScrollPoint:(NSPoint)proposedNewOrigin
|
||||
- (NSPoint) constrainScrollPoint: (NSPoint)proposedNewOrigin
|
||||
{
|
||||
NSRect documentFrame = [_documentView frame];
|
||||
NSPoint new = proposedNewOrigin;
|
||||
|
||||
if (documentFrame.size.width <= bounds.size.width)
|
||||
new.x = 0.0;
|
||||
new.x = documentFrame.origin.x;
|
||||
else if (proposedNewOrigin.x <= documentFrame.origin.x)
|
||||
new.x = documentFrame.origin.x;
|
||||
else if (proposedNewOrigin.x
|
||||
|
@ -145,7 +223,7 @@
|
|||
else
|
||||
{
|
||||
if (documentFrame.size.height <= bounds.size.height)
|
||||
new.y = 0.0;
|
||||
new.y = documentFrame.origin.y;
|
||||
else if (proposedNewOrigin.y <= documentFrame.origin.y)
|
||||
new.y = documentFrame.origin.y;
|
||||
else if (proposedNewOrigin.y
|
||||
|
@ -156,7 +234,7 @@
|
|||
return new;
|
||||
}
|
||||
|
||||
- (NSRect)documentRect
|
||||
- (NSRect) documentRect
|
||||
{
|
||||
NSRect documentFrame = [_documentView frame];
|
||||
NSRect clipViewBounds = bounds;
|
||||
|
@ -169,7 +247,7 @@
|
|||
return rect;
|
||||
}
|
||||
|
||||
- (NSRect)documentVisibleRect
|
||||
- (NSRect) documentVisibleRect
|
||||
{
|
||||
NSRect documentBounds = [_documentView bounds];
|
||||
NSRect clipViewBounds = bounds;
|
||||
|
@ -183,97 +261,132 @@
|
|||
return rect;
|
||||
}
|
||||
|
||||
- (void) drawRect:(NSRect)rect
|
||||
- (void) drawRect: (NSRect)rect
|
||||
{
|
||||
[[self backgroundColor] set];
|
||||
NSRectFill(rect);
|
||||
}
|
||||
|
||||
- (BOOL)autoscroll:(NSEvent*)theEvent
|
||||
- (BOOL) autoscroll: (NSEvent*)theEvent
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (void)viewBoundsChanged:(NSNotification*)aNotification
|
||||
- (void) viewBoundsChanged: (NSNotification*)aNotification
|
||||
{
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)viewFrameChanged:(NSNotification*)aNotification
|
||||
- (void) viewFrameChanged: (NSNotification*)aNotification
|
||||
{
|
||||
[self setBoundsOrigin: [self constrainScrollPoint: bounds.origin]];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)scaleUnitSquareToSize:(NSSize)newUnitSize
|
||||
- (void) scaleUnitSquareToSize: (NSSize)newUnitSize
|
||||
{
|
||||
[super scaleUnitSquareToSize:newUnitSize];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)setBoundsOrigin:(NSPoint)aPoint
|
||||
- (void) setBoundsOrigin: (NSPoint)aPoint
|
||||
{
|
||||
[super setBoundsOrigin:aPoint];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)setBoundsSize:(NSSize)aSize
|
||||
- (void) setBoundsSize: (NSSize)aSize
|
||||
{
|
||||
[super setBoundsSize:aSize];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)setFrameSize:(NSSize)aSize
|
||||
- (void) setFrameSize: (NSSize)aSize
|
||||
{
|
||||
[super setFrameSize:aSize];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)setFrameOrigin:(NSPoint)aPoint
|
||||
- (void) setFrameOrigin: (NSPoint)aPoint
|
||||
{
|
||||
[super setFrameOrigin:aPoint];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)setFrame:(NSRect)rect
|
||||
- (void) setFrame: (NSRect)rect
|
||||
{
|
||||
[super setFrame:rect];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (void)translateOriginToPoint:(NSPoint)aPoint
|
||||
- (void) translateOriginToPoint: (NSPoint)aPoint
|
||||
{
|
||||
[super translateOriginToPoint:aPoint];
|
||||
[super_view reflectScrolledClipView:self];
|
||||
}
|
||||
|
||||
- (BOOL)isOpaque { return YES; }
|
||||
- (id)documentView { return _documentView; }
|
||||
- (void)setCopiesOnScroll:(BOOL)flag { _copiesOnScroll = flag; }
|
||||
- (BOOL)copiesOnScroll { return _copiesOnScroll; }
|
||||
- (void)setDocumentCursor:(NSCursor*)aCursor { ASSIGN(_cursor, aCursor); }
|
||||
- (NSCursor*)documentCursor { return _cursor; }
|
||||
- (NSColor*)backgroundColor { return _backgroundColor; }
|
||||
- (BOOL)isFlipped { return [_documentView isFlipped]; }
|
||||
- (BOOL)acceptsFirstResponder { return _documentView != nil; }
|
||||
- (BOOL) isOpaque
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)setBackgroundColor:(NSColor*)aColor
|
||||
- (id) documentView
|
||||
{
|
||||
return _documentView;
|
||||
}
|
||||
|
||||
- (void) setCopiesOnScroll: (BOOL)flag
|
||||
{
|
||||
_copiesOnScroll = flag;
|
||||
}
|
||||
|
||||
- (BOOL) copiesOnScroll
|
||||
{
|
||||
return _copiesOnScroll;
|
||||
}
|
||||
|
||||
- (void) setDocumentCursor: (NSCursor*)aCursor
|
||||
{
|
||||
ASSIGN(_cursor, aCursor);
|
||||
}
|
||||
|
||||
- (NSCursor*) documentCursor
|
||||
{
|
||||
return _cursor;
|
||||
}
|
||||
|
||||
- (NSColor*) backgroundColor
|
||||
{
|
||||
return _backgroundColor;
|
||||
}
|
||||
|
||||
- (BOOL) isFlipped
|
||||
{
|
||||
return [_documentView isFlipped];
|
||||
}
|
||||
|
||||
- (BOOL) acceptsFirstResponder
|
||||
{
|
||||
return _documentView != nil;
|
||||
}
|
||||
|
||||
- (void) setBackgroundColor: (NSColor*)aColor
|
||||
{
|
||||
ASSIGN(_backgroundColor, aColor);
|
||||
}
|
||||
|
||||
/* Disable rotation of clip view */
|
||||
- (void)rotateByAngle:(float)angle
|
||||
- (void) rotateByAngle: (float)angle
|
||||
{}
|
||||
|
||||
- (void)setBoundsRotation:(float)angle
|
||||
- (void) setBoundsRotation: (float)angle
|
||||
{}
|
||||
|
||||
- (void)setFrameRotation:(float)angle
|
||||
- (void) setFrameRotation: (float)angle
|
||||
{}
|
||||
|
||||
/* Managing responder chain */
|
||||
- (BOOL)becomeFirstResponder
|
||||
- (BOOL) becomeFirstResponder
|
||||
{
|
||||
return [_documentView becomeFirstResponder];
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
1401
Source/NSScroller.m
1401
Source/NSScroller.m
File diff suppressed because it is too large
Load diff
|
@ -561,7 +561,13 @@ NSPoint basePoint;
|
|||
- (BOOL)isAutodisplay { return is_autodisplay; }
|
||||
- (BOOL)isFlushWindowDisabled { return disable_flush_window; }
|
||||
- (void)setAutodisplay:(BOOL)flag { is_autodisplay = flag; }
|
||||
- (void)setViewsNeedDisplay:(BOOL)flag { needs_display = flag; }
|
||||
|
||||
- (void) setViewsNeedDisplay: (BOOL)flag
|
||||
{
|
||||
needs_display = flag;
|
||||
[[NSApplication sharedApplication] setWindowsNeedUpdate: YES];
|
||||
}
|
||||
|
||||
- (BOOL)viewsNeedDisplay { return needs_display; }
|
||||
- (void)useOptimizedDrawing:(BOOL)flag { optimize_drawing = flag; }
|
||||
|
||||
|
|
Loading…
Reference in a new issue