mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-30 19:50:38 +00:00
* Source/NSWindow.m: Only invoke -prepareForDragOperation: if the
most recent -draggingEntered: or -draggingUpdated: call returned something other than NSDragOperationNone. * Source/NSOutlineView.m (-draggingUpdated:): Save the drag operation value returned from the data source in a static variable. Previously it was fetched once and then discarded, so all drags were being mistakenly permitted. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@34910 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
107d5060b5
commit
0095d55636
3 changed files with 32 additions and 14 deletions
|
@ -69,6 +69,7 @@ const int NSOutlineViewDropOnItemIndex = -1;
|
|||
|
||||
static int lastVerticalQuarterPosition;
|
||||
static int lastHorizontalHalfPosition;
|
||||
static NSDragOperation dragOperation;
|
||||
|
||||
static NSRect oldDraggingRect;
|
||||
static id oldDropItem;
|
||||
|
@ -1087,6 +1088,7 @@ static NSImage *unexpandable = nil;
|
|||
oldDropItem = currentDropItem = nil;
|
||||
oldDropIndex = currentDropIndex = -1;
|
||||
lastVerticalQuarterPosition = -1;
|
||||
dragOperation = NSDragOperationCopy;
|
||||
oldDraggingRect = NSMakeRect(0.,0., 0., 0.);
|
||||
return NSDragOperationCopy;
|
||||
}
|
||||
|
@ -1283,7 +1285,7 @@ Also returns the child index relative to this parent. */
|
|||
* when the pointer is between two rows and the bottom row is a parent.
|
||||
*/
|
||||
NSInteger level;
|
||||
NSDragOperation dragOperation = [sender draggingSourceOperationMask];
|
||||
|
||||
|
||||
ASSIGN(lastDragUpdate, [NSDate date]);
|
||||
//NSLog(@"draggingUpdated");
|
||||
|
@ -1423,18 +1425,23 @@ Also returns the child index relative to this parent. */
|
|||
[self setNeedsDisplayInRect: oldDraggingRect];
|
||||
[self displayIfNeeded];
|
||||
|
||||
if (currentDropIndex != NSOutlineViewDropOnItemIndex && currentDropItem != nil)
|
||||
{
|
||||
[self drawDropAboveIndicatorWithDropItem: currentDropItem atRow: row childDropIndex: currentDropIndex];
|
||||
}
|
||||
else if (currentDropIndex == NSOutlineViewDropOnItemIndex && currentDropItem == nil)
|
||||
{
|
||||
[self drawDropOnRootIndicator];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self drawDropOnIndicatorWithDropItem: currentDropItem];
|
||||
}
|
||||
if (dragOperation != NSDragOperationNone)
|
||||
{
|
||||
if (currentDropIndex != NSOutlineViewDropOnItemIndex && currentDropItem != nil)
|
||||
{
|
||||
[self drawDropAboveIndicatorWithDropItem: currentDropItem
|
||||
atRow: row
|
||||
childDropIndex: currentDropIndex];
|
||||
}
|
||||
else if (currentDropIndex == NSOutlineViewDropOnItemIndex && currentDropItem == nil)
|
||||
{
|
||||
[self drawDropOnRootIndicator];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self drawDropOnIndicatorWithDropItem: currentDropItem];
|
||||
}
|
||||
}
|
||||
|
||||
[_window flushWindow];
|
||||
[self unlockFocus];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue