@implementation VLCResizeControl
-- (void)mouseDragged:(NSEvent *)theEvent
-{
- NSRect windowFrame = [[self window] frame];
- CGFloat deltaX, deltaY, oldOriginY;
- deltaX = [theEvent deltaX];
- deltaY = [theEvent deltaY];
- oldOriginY = windowFrame.origin.y;
-
- windowFrame.origin.y = (oldOriginY + windowFrame.size.height) - (windowFrame.size.height + deltaY);
- windowFrame.size.width += deltaX;
- windowFrame.size.height += deltaY;
-
- NSSize winMinSize = [self window].minSize;
- if (windowFrame.size.width < winMinSize.width)
- windowFrame.size.width = winMinSize.width;
+- (void)mouseDown:(NSEvent *)theEvent {
+ BOOL keepOn = YES;
+
+ while (keepOn) {
+ theEvent = [[self window] nextEventMatchingMask: NSLeftMouseUpMask |
+ NSLeftMouseDraggedMask];
+
+ switch ([theEvent type]) {
+ case NSLeftMouseDragged:
+ {
+ NSRect windowFrame = [[self window] frame];
+ CGFloat deltaX, deltaY, oldOriginY;
+ deltaX = [theEvent deltaX];
+ deltaY = [theEvent deltaY];
+ oldOriginY = windowFrame.origin.y;
+
+ windowFrame.origin.y = (oldOriginY + windowFrame.size.height) - (windowFrame.size.height + deltaY);
+ windowFrame.size.width += deltaX;
+ windowFrame.size.height += deltaY;
+
+ NSSize winMinSize = [self window].minSize;
+ if (windowFrame.size.width < winMinSize.width)
+ windowFrame.size.width = winMinSize.width;
+
+ if (windowFrame.size.height < winMinSize.height)
+ {
+ windowFrame.size.height = winMinSize.height;
+ windowFrame.origin.y = oldOriginY;
+ }
+
+ [[self window] setFrame: windowFrame display: YES animate: NO];
+ break;
+ }
+ break;
+ case NSLeftMouseUp:
+ keepOn = NO;
+ break;
+ default:
+ /* Ignore any other kind of event. */
+ break;
+ }
- if (windowFrame.size.height < winMinSize.height)
- {
- windowFrame.size.height = winMinSize.height;
- windowFrame.origin.y = oldOriginY;
- }
+ };
- [[self window] setFrame: windowFrame display: YES animate: NO];
+ return;
}
@end