Forgot about the drag source delegate, which is the perfect place to put GiveFeedback related handling.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Kevin Ollivier
2010-02-06 16:42:44 +00:00
parent 808cbd174a
commit f9022ad209
2 changed files with 43 additions and 39 deletions

View File

@@ -55,6 +55,7 @@ wxDragResult NSDragOperationToWxDragResult(NSDragOperation code)
- (void)setImplementation: (wxDropSource *)dropSource;
- (BOOL)finished;
- (NSDragOperation)code;
- (void)draggedImage:(NSImage *)anImage movedTo:(NSPoint)aPoint;
- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation;
@end
@@ -84,6 +85,48 @@ wxDragResult NSDragOperationToWxDragResult(NSDragOperation code)
return resultCode;
}
- (void)draggedImage:(NSImage *)anImage movedTo:(NSPoint)aPoint
{
bool optionDown = GetCurrentKeyModifiers() & optionKey;
wxDragResult result = optionDown ? wxDragCopy : wxDragMove;
if (wxDropSource* source = impl)
{
if (!source->GiveFeedback(result))
{
wxStockCursor cursorID = wxCURSOR_NONE;
switch (result)
{
case wxDragCopy:
cursorID = wxCURSOR_COPY_ARROW;
break;
case wxDragMove:
cursorID = wxCURSOR_ARROW;
break;
case wxDragNone:
cursorID = wxCURSOR_NO_ENTRY;
break;
case wxDragError:
case wxDragLink:
case wxDragCancel:
default:
// put these here to make gcc happy
;
}
if (cursorID != wxCURSOR_NONE)
{
wxCursor cursor( cursorID );
cursor.MacInstall();
}
}
}
}
- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation
{
resultCode = operation;

View File

@@ -879,45 +879,6 @@ unsigned int wxWidgetCocoaImpl::draggingUpdated(void* s, WXWidget WXUNUSED(slf),
result = wxDragCopy;
else if ( sourceDragMask & NSDragOperationMove )
result = wxDragMove;
// FIXME: This doesn't seem the right place for the code, as GiveFeedback
// will only get called when the drop target is inside the app itself
// but at least some cases will work now.
if (wxDropSource* source = wxDropSource::GetCurrentDropSource())
{
if (!source->GiveFeedback(result))
{
wxStockCursor cursorID = wxCURSOR_NONE;
switch (result)
{
case wxDragCopy:
cursorID = wxCURSOR_COPY_ARROW;
break;
case wxDragMove:
cursorID = wxCURSOR_ARROW;
break;
case wxDragNone:
cursorID = wxCURSOR_NO_ENTRY;
break;
case wxDragError:
case wxDragLink:
case wxDragCancel:
default:
// put these here to make gcc happy
;
}
if (cursorID != wxCURSOR_NONE)
{
wxCursor cursor( cursorID );
cursor.MacInstall();
}
}
}
PasteboardRef pboardRef;
PasteboardCreate((CFStringRef)[pboard name], &pboardRef);