Hi all,
I have a view subclass with
- (void)mouseDown:(NSEvent *)theEvent
{
NSPoint locA = [self convertPoint:[theEvent locationInWindow]
fromView:nil];
BOOL shiftPressed = (([theEvent modifierFlags] & NSShiftKeyMask) >
0);
BOOL keepOn = YES;
BOOL hasDragged = NO;
while (keepOn)
{
theEvent = [[self window]
nextEventMatchingMask:NSLeftMouseUpMask | NSLeftMouseDraggedMask];
switch ([theEvent type])
{
case NSLeftMouseDragged:
{
NSPoint locB = [self convertPoint:[theEvent
locationInWindow] fromView:nil];
NSSize offset = NSMakeSize(locB.x - locA.x, locB.y -
locA.y);
NSRect oldRect = _selectionRect;
_selectionRect.origin = locA;
if (offset.width < 0)
{
_selectionRect.origin.x = locB.x;
offset.width = -offset.width;
}
if (offset.height < 0)
{
_selectionRect.origin.y = locB.y;
offset.height = -offset.height;
}
_selectionRect.size = offset;
_selecting = YES;
[self setNeedsDisplayInRect:NSUnionRect(_selectionRect,
oldRect)];
hasDragged = YES;
}
break;
case NSLeftMouseUp:
{
keepOn = NO;
}
break;
default:
break;
}
}
}
- (void)drawRect:(NSRect)rect
{
[super drawRect:rect];
if (_selecting)
{
[[NSColor grayColor] set];
NSFrameRect(_selectionRect);
}
}
This draws a rectangle following the mouse until the user releases
the mouse button. On MacOSX the rectangle follows the mouse
instantly. Under GNUstep I see a significant delay. Dragging
rectangles makes no fun there. Any idea why this is so slow? This of
course has nothing to do with rectangles in special but with slow
drawing code in general. In my app I want to drag objects around with
the mouse. This works under GNUstep and MacOX but on GNustep it is
almost too slow to be usable. Is this a known (may be even already
improved) issue? My GNUstep tree is already a year old. :-)