mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 15:11:37 +00:00
and commit the file I really meant to commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@25286 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
e05c982cd9
commit
44153d95a4
1 changed files with 187 additions and 146 deletions
333
Source/NSView.m
333
Source/NSView.m
|
@ -1024,57 +1024,67 @@ GSSetDragTypes(NSView* obj, NSArray *types)
|
|||
frameRect.size.height = 0;
|
||||
}
|
||||
|
||||
if (NSMinX(_frame) != NSMinX(frameRect)
|
||||
|| NSMinY(_frame) != NSMinY(frameRect))
|
||||
changedOrigin = YES;
|
||||
if (NSWidth(_frame) != NSWidth(frameRect)
|
||||
|| NSHeight(_frame) != NSHeight(frameRect))
|
||||
changedSize = YES;
|
||||
|
||||
_frame = frameRect;
|
||||
/* FIXME: Touch bounds only if we are not scaled or rotated */
|
||||
_bounds.size = frameRect.size;
|
||||
|
||||
|
||||
if (changedSize && _is_rotated_or_scaled_from_base)
|
||||
if (NSEqualPoints(_frame.origin, frameRect.origin) == NO)
|
||||
{
|
||||
[self _updateBoundsMatrix];
|
||||
changedOrigin = YES;
|
||||
}
|
||||
|
||||
if (changedSize || changedOrigin)
|
||||
if (NSEqualSizes(_frame.size, frameRect.size) == NO)
|
||||
{
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
[self resizeSubviewsWithOldSize: old_size];
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
changedSize = YES;
|
||||
}
|
||||
|
||||
if (changedSize == YES || changedOrigin == YES)
|
||||
{
|
||||
_frame = frameRect;
|
||||
|
||||
if (changedSize == YES)
|
||||
{
|
||||
if (_is_rotated_or_scaled_from_base == YES)
|
||||
{
|
||||
[self _updateBoundsMatrix];
|
||||
}
|
||||
else
|
||||
{
|
||||
_bounds.size = frameRect.size;
|
||||
}
|
||||
}
|
||||
|
||||
if (changedSize || changedOrigin)
|
||||
{
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
[self resizeSubviewsWithOldSize: old_size];
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setFrameOrigin: (NSPoint)newOrigin
|
||||
{
|
||||
if (_coordinates_valid)
|
||||
if (NSEqualPoints(_frame.origin, newOrigin) == NO)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_frame.origin = newOrigin;
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_frame.origin = newOrigin;
|
||||
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setFrameSize: (NSSize)newSize
|
||||
{
|
||||
NSSize old_size = _frame.size;
|
||||
|
||||
if (newSize.width < 0)
|
||||
{
|
||||
NSWarnMLog(@"given negative width", 0);
|
||||
|
@ -1085,53 +1095,66 @@ GSSetDragTypes(NSView* obj, NSArray *types)
|
|||
NSWarnMLog(@"given negative height", 0);
|
||||
newSize.height = 0;
|
||||
}
|
||||
if (_coordinates_valid)
|
||||
if (NSEqualSizes(_frame.size, newSize) == NO)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
NSSize old_size = _frame.size;
|
||||
|
||||
if (_is_rotated_or_scaled_from_base)
|
||||
{
|
||||
float sx = _bounds.size.width / _frame.size.width;
|
||||
float sy = _bounds.size.height / _frame.size.height;
|
||||
|
||||
_frame.size = newSize;
|
||||
_bounds.size.width = _frame.size.width * sx;
|
||||
_bounds.size.height = _frame.size.height * sy;
|
||||
}
|
||||
else
|
||||
{
|
||||
_frame.size = _bounds.size = newSize;
|
||||
}
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
|
||||
[self resizeSubviewsWithOldSize: old_size];
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
if (_is_rotated_or_scaled_from_base)
|
||||
{
|
||||
float sx = _bounds.size.width / _frame.size.width;
|
||||
float sy = _bounds.size.height / _frame.size.height;
|
||||
|
||||
_frame.size = newSize;
|
||||
_bounds.size.width = _frame.size.width * sx;
|
||||
_bounds.size.height = _frame.size.height * sy;
|
||||
}
|
||||
else
|
||||
{
|
||||
_frame.size = _bounds.size = newSize;
|
||||
}
|
||||
|
||||
[self resizeSubviewsWithOldSize: old_size];
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setFrameRotation: (float)angle
|
||||
{
|
||||
/* no frame matrix, create one since it is needed for rotation */
|
||||
if (_frameMatrix == nil)
|
||||
{
|
||||
_frameMatrix = [NSAffineTransform new]; // Map fromsuperview to frame
|
||||
}
|
||||
float oldAngle = [self frameRotation];
|
||||
|
||||
if (_coordinates_valid)
|
||||
if (oldAngle != angle)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
/* no frame matrix, create one since it is needed for rotation */
|
||||
if (_frameMatrix == nil)
|
||||
{
|
||||
// Map fromsuperview to frame
|
||||
_frameMatrix = [NSAffineTransform new];
|
||||
}
|
||||
|
||||
[_frameMatrix setFrameRotation: angle];
|
||||
_is_rotated_from_base = _is_rotated_or_scaled_from_base = YES;
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
[_frameMatrix setFrameRotation: angle];
|
||||
_is_rotated_from_base = _is_rotated_or_scaled_from_base = YES;
|
||||
|
||||
[self _updateBoundsMatrix];
|
||||
|
||||
if (_post_frame_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewFrameDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1169,31 +1192,34 @@ GSSetDragTypes(NSView* obj, NSArray *types)
|
|||
|
||||
- (void) scaleUnitSquareToSize: (NSSize)newSize
|
||||
{
|
||||
if (newSize.width < 0)
|
||||
if (newSize.width != 1.0 || newSize.height != 1.0)
|
||||
{
|
||||
NSWarnMLog(@"given negative width", 0);
|
||||
newSize.width = 0;
|
||||
}
|
||||
if (newSize.height < 0)
|
||||
{
|
||||
NSWarnMLog(@"given negative height", 0);
|
||||
newSize.height = 0;
|
||||
}
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_bounds.size.width = _bounds.size.width / newSize.width;
|
||||
_bounds.size.height = _bounds.size.height / newSize.height;
|
||||
if (newSize.width < 0)
|
||||
{
|
||||
NSWarnMLog(@"given negative width", 0);
|
||||
newSize.width = 0;
|
||||
}
|
||||
if (newSize.height < 0)
|
||||
{
|
||||
NSWarnMLog(@"given negative height", 0);
|
||||
newSize.height = 0;
|
||||
}
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_bounds.size.width = _bounds.size.width / newSize.width;
|
||||
_bounds.size.height = _bounds.size.height / newSize.height;
|
||||
|
||||
_is_rotated_or_scaled_from_base = YES;
|
||||
|
||||
[self _updateBoundsMatrix];
|
||||
_is_rotated_or_scaled_from_base = YES;
|
||||
|
||||
[self _updateBoundsMatrix];
|
||||
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1209,35 +1235,41 @@ GSSetDragTypes(NSView* obj, NSArray *types)
|
|||
NSWarnMLog(@"given negative height", 0);
|
||||
aRect.size.height = 0;
|
||||
}
|
||||
if (_coordinates_valid)
|
||||
if (NSEqualRects(_bounds, aRect) == NO)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_bounds = aRect;
|
||||
[_boundsMatrix
|
||||
setFrameOrigin: NSMakePoint(-_bounds.origin.x, -_bounds.origin.y)];
|
||||
[self _updateBoundsMatrix];
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_bounds = aRect;
|
||||
[_boundsMatrix
|
||||
setFrameOrigin: NSMakePoint(-_bounds.origin.x, -_bounds.origin.y)];
|
||||
[self _updateBoundsMatrix];
|
||||
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setBoundsOrigin: (NSPoint)newOrigin
|
||||
{
|
||||
if (_coordinates_valid)
|
||||
if (NSEqualPoints(_bounds.origin, newOrigin) == NO)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_bounds.origin = newOrigin;
|
||||
[_boundsMatrix setFrameOrigin: NSMakePoint(-newOrigin.x, -newOrigin.y)];
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
_bounds.origin = newOrigin;
|
||||
[_boundsMatrix setFrameOrigin: NSMakePoint(-newOrigin.x, -newOrigin.y)];
|
||||
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1253,41 +1285,49 @@ GSSetDragTypes(NSView* obj, NSArray *types)
|
|||
NSWarnMLog(@"given negative height", 0);
|
||||
newSize.height = 0;
|
||||
}
|
||||
if (_coordinates_valid)
|
||||
if (NSEqualSizes(_bounds.size, newSize) == NO)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
|
||||
_bounds.size = newSize;
|
||||
[self _updateBoundsMatrix];
|
||||
_bounds.size = newSize;
|
||||
[self _updateBoundsMatrix];
|
||||
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setBoundsRotation: (float)angle
|
||||
{
|
||||
NSAffineTransform *matrix;
|
||||
float oldAngle = [_boundsMatrix rotationAngle];
|
||||
|
||||
if (_coordinates_valid)
|
||||
if (angle != oldAngle)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
[_boundsMatrix rotateByDegrees: angle - [_boundsMatrix rotationAngle]];
|
||||
_is_rotated_from_base = _is_rotated_or_scaled_from_base = YES;
|
||||
// Adjust bounds
|
||||
matrix = [_boundsMatrix copy];
|
||||
[matrix invert];
|
||||
[matrix boundingRectFor: _frame result: &_bounds];
|
||||
RELEASE(matrix);
|
||||
NSAffineTransform *matrix;
|
||||
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
if (_coordinates_valid)
|
||||
{
|
||||
(*invalidateImp)(self, invalidateSel);
|
||||
}
|
||||
[_boundsMatrix rotateByDegrees: angle - oldAngle];
|
||||
_is_rotated_from_base = _is_rotated_or_scaled_from_base = YES;
|
||||
// Adjust bounds
|
||||
matrix = [_boundsMatrix copy];
|
||||
[matrix invert];
|
||||
[matrix boundingRectFor: _frame result: &_bounds];
|
||||
RELEASE(matrix);
|
||||
|
||||
if (_post_bounds_changes)
|
||||
{
|
||||
[nc postNotificationName: NSViewBoundsDidChangeNotification
|
||||
object: self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1394,7 +1434,8 @@ GSSetDragTypes(NSView* obj, NSArray *types)
|
|||
|
||||
|
||||
/* Helper for -convertRect:fromView: and -convertRect:toView:. */
|
||||
static NSRect convert_rect_using_matrices(NSRect aRect, NSAffineTransform *matrix1,
|
||||
static NSRect
|
||||
convert_rect_using_matrices(NSRect aRect, NSAffineTransform *matrix1,
|
||||
NSAffineTransform *matrix2)
|
||||
{
|
||||
NSRect r;
|
||||
|
@ -3580,7 +3621,7 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
|
|||
forType: NSPostScriptPboardType];
|
||||
}
|
||||
|
||||
- (NSData *)dataWithPDFInsideRect:(NSRect)aRect
|
||||
- (NSData *) dataWithPDFInsideRect: (NSRect)aRect
|
||||
{
|
||||
NSMutableData *data = [NSMutableData data];
|
||||
|
||||
|
@ -3596,8 +3637,8 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
|
|||
}
|
||||
}
|
||||
|
||||
- (void)writePDFInsideRect:(NSRect)aRect
|
||||
toPasteboard:(NSPasteboard *)pboard
|
||||
- (void) writePDFInsideRect: (NSRect)aRect
|
||||
toPasteboard: (NSPasteboard *)pboard
|
||||
{
|
||||
NSData *data = [self dataWithPDFInsideRect: aRect];
|
||||
|
||||
|
@ -3606,7 +3647,7 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
|
|||
forType: NSPDFPboardType];
|
||||
}
|
||||
|
||||
- (NSString *)printJobTitle
|
||||
- (NSString *) printJobTitle
|
||||
{
|
||||
id doc;
|
||||
NSString *title;
|
||||
|
@ -3994,8 +4035,8 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
|
|||
_visibleRect = _bounds;
|
||||
}
|
||||
|
||||
- (void)beginPageInRect:(NSRect)aRect
|
||||
atPlacement:(NSPoint)location
|
||||
- (void) beginPageInRect: (NSRect)aRect
|
||||
atPlacement: (NSPoint)location
|
||||
{
|
||||
int nup;
|
||||
NSRect bounds;
|
||||
|
@ -4055,7 +4096,7 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
|
|||
[ctxt endSheet];
|
||||
}
|
||||
|
||||
- (void)endDocument
|
||||
- (void) endDocument
|
||||
{
|
||||
int first, last, current, pages;
|
||||
NSPrintOperation *printOp = [NSPrintOperation currentOperation];
|
||||
|
@ -4486,7 +4527,7 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
|
|||
* [NSView +defaultMenu] and [NSView -menu].
|
||||
* </p>
|
||||
*/
|
||||
- (NSMenu *)menuForEvent:(NSEvent *)theEvent
|
||||
- (NSMenu *)menuForEvent: (NSEvent *)theEvent
|
||||
{
|
||||
return [self menu];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue