This is an automated email from the git hooks/post-receive script. thansen pushed a commit to branch master in repository aseprite.
commit 10be4b4d82746bd39c34113052ee9be23f4b29f8 Author: David Capello <[email protected]> Date: Tue May 17 21:43:29 2016 -0300 Add support to drop files on OS X window (fix #605) --- src/she/osx/app_delegate.mm | 12 ++---------- src/she/osx/generate_drop_files.h | 27 +++++++++++++++++++++++++++ src/she/osx/view.h | 2 ++ src/she/osx/view.mm | 23 +++++++++++++++++++++++ 4 files changed, 54 insertions(+), 10 deletions(-) diff --git a/src/she/osx/app_delegate.mm b/src/she/osx/app_delegate.mm index 0c54771..4eefe80 100644 --- a/src/she/osx/app_delegate.mm +++ b/src/she/osx/app_delegate.mm @@ -16,6 +16,7 @@ #include "she/event.h" #include "she/event_queue.h" #include "she/osx/app.h" +#include "she/osx/generate_drop_files.h" #include "she/system.h" @implementation OSXAppDelegate @@ -39,16 +40,7 @@ - (BOOL)application:(NSApplication*)app openFiles:(NSArray*)filenames { - std::vector<std::string> files; - for (int i=0; i<[filenames count]; ++i) { - NSString* fn = [filenames objectAtIndex: i]; - files.push_back(base::normalize_path([fn UTF8String])); - } - - she::Event ev; - ev.setType(she::Event::DropFiles); - ev.setFiles(files); - she::queue_event(ev); + generate_drop_files_from_nsarray(filenames); [app replyToOpenOrPrint:NSApplicationDelegateReplySuccess]; return YES; diff --git a/src/she/osx/generate_drop_files.h b/src/she/osx/generate_drop_files.h new file mode 100644 index 0000000..1a7ea3e --- /dev/null +++ b/src/she/osx/generate_drop_files.h @@ -0,0 +1,27 @@ +// SHE library +// Copyright (C) 2016 David Capello +// +// This file is released under the terms of the MIT license. +// Read LICENSE.txt for more information. + +#ifndef SHE_OSX_APP_GENERATE_DROP_FILES_H_INCLUDED +#define SHE_OSX_APP_GENERATE_DROP_FILES_H_INCLUDED +#pragma once + +#include "base/path.h" + +inline void generate_drop_files_from_nsarray(NSArray* filenames) +{ + std::vector<std::string> files; + for (int i=0; i<[filenames count]; ++i) { + NSString* fn = [filenames objectAtIndex: i]; + files.push_back(base::normalize_path([fn UTF8String])); + } + + she::Event ev; + ev.setType(she::Event::DropFiles); + ev.setFiles(files); + she::queue_event(ev); +} + +#endif diff --git a/src/she/osx/view.h b/src/she/osx/view.h index 0a3e8c6..f71a2d7 100644 --- a/src/she/osx/view.h +++ b/src/she/osx/view.h @@ -50,6 +50,8 @@ - (void)createMouseTrackingArea; - (void)destroyMouseTrackingArea; - (void)updateCurrentCursor; +- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender; +- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender; @end #endif diff --git a/src/she/osx/view.mm b/src/she/osx/view.mm index eff8056..42e103e 100644 --- a/src/she/osx/view.mm +++ b/src/she/osx/view.mm @@ -14,6 +14,7 @@ #include "she/event.h" #include "she/event_queue.h" #include "she/keys.h" +#include "she/osx/generate_drop_files.h" #include "she/osx/window.h" using namespace she; @@ -97,6 +98,10 @@ bool is_key_pressed(KeyScancode scancode) self = [super initWithFrame:frameRect]; if (self != nil) { [self createMouseTrackingArea]; + [self registerForDraggedTypes: + [NSArray arrayWithObjects: + NSFilenamesPboardType, + nil]]; } return self; } @@ -466,4 +471,22 @@ bool is_key_pressed(KeyScancode scancode) } } +- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender +{ + return NSDragOperationCopy; +} + +- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender +{ + NSPasteboard* pasteboard = [sender draggingPasteboard]; + + if ([pasteboard.types containsObject:NSFilenamesPboardType]) { + NSArray* filenames = [pasteboard propertyListForType:NSFilenamesPboardType]; + generate_drop_files_from_nsarray(filenames); + return YES; + } + else + return NO; +} + @end -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

