X-Git-Url: http://git.ithinksw.org/ITKit.git/blobdiff_plain/35167b10d151b0ae09f0f807670c318bc4d3de53..08f7c7656d8938806db994a646bb6e2f1a7783a7:/ITTabView.m?ds=sidebyside diff --git a/ITTabView.m b/ITTabView.m index 3ca1938..66f0bcc 100755 --- a/ITTabView.m +++ b/ITTabView.m @@ -17,6 +17,7 @@ if ( (self = [super initWithFrame:frame]) ) { _draggedTab = nil; _allowsDragging = NO; + _requiredModifiers = NSCommandKeyMask; } return self; } @@ -24,6 +25,7 @@ - (void)setAllowsDragging:(bool)flag { _allowsDragging = flag; + _requiredModifiers = NSCommandKeyMask; } - (bool)allowsDragging @@ -31,6 +33,16 @@ return _allowsDragging; } +- (void)setRequiredModifiers:(unsigned int)modifiers +{ + _requiredModifiers = modifiers; +} + +- (unsigned int)requiredModifiers +{ + return _requiredModifiers; +} + - (void)moveTab:(NSTabViewItem *)tab toIndex:(int)index { if ([self indexOfTabViewItem:tab] != index) @@ -44,8 +56,9 @@ - (void)mouseDown:(NSEvent *)event { - if ([self allowsDragging]) { - NSPoint clickedPoint = [self convertPoint:[event locationInWindow] fromView:[[self window] contentView]]; + if ((_requiredModifiers == 0 || ([[NSApp currentEvent] modifierFlags] & _requiredModifiers)) && [self allowsDragging]) { + NSPoint clickedPoint; + clickedPoint = [self convertPoint:[event locationInWindow] fromView:[[self window] contentView]]; NSTabViewItem *clickedTab = [self tabViewItemAtPoint:clickedPoint]; _draggedTab = clickedTab; } @@ -54,7 +67,7 @@ - (void)mouseUp:(NSEvent *)event { - if ([self allowsDragging]) { + if (_draggedTab && [self allowsDragging]) { NSPoint releasedPoint = [self convertPoint:[event locationInWindow] fromView:[[self window] contentView]]; NSTabViewItem *releasedTab = [self tabViewItemAtPoint:releasedPoint]; if (releasedTab && ![releasedTab isEqualTo:_draggedTab]) { @@ -67,7 +80,7 @@ - (void)mouseDragged:(NSEvent *)event { - if ([self allowsDragging]) { + if (_draggedTab && [self allowsDragging]) { NSPoint currentPoint = [self convertPoint:[event locationInWindow] fromView:[[self window] contentView]]; NSTabViewItem *curTab = [self tabViewItemAtPoint:currentPoint]; if (curTab && ![curTab isEqualTo:_draggedTab]) {