aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2020-10-17 18:28:26 +0200
committerAndre Weissflog <floooh@gmail.com>2020-10-17 18:28:26 +0200
commit8a28028bed45e45ebac30813dcb3c6d688b8162e (patch)
treee71834481cc854475947e41454214f66177f02d2
parent8e72849f44d6c9d79d01573d2559d3f70730d841 (diff)
sokol_app.h macos: drag'n'drop code fixes
-rw-r--r--sokol_app.h33
1 files changed, 15 insertions, 18 deletions
diff --git a/sokol_app.h b/sokol_app.h
index d5a47cba..1881f777 100644
--- a/sokol_app.h
+++ b/sokol_app.h
@@ -2396,6 +2396,13 @@ _SOKOL_PRIVATE sapp_keycode _sapp_translate_key(int scan_code) {
}
}
+_SOKOL_PRIVATE void _sapp_clear_drop_buffer(void) {
+ if (_sapp.drop.enabled) {
+ SOKOL_ASSERT(_sapp.drop.buffer);
+ memset(_sapp.drop.buffer, 0, _sapp.drop.buf_size);
+ }
+}
+
_SOKOL_PRIVATE void _sapp_frame(void) {
if (_sapp.first_frame) {
_sapp.first_frame = false;
@@ -2932,22 +2939,18 @@ _SOKOL_PRIVATE void _sapp_macos_frame(void) {
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
NSPasteboard *pboard = [sender draggingPasteboard];
if ([pboard.types containsObject:NSPasteboardTypeFileURL]) {
- memset(_sapp.dropped_files, 0, sizeof(_sapp.max_dropped_files * _sapp.max_dropped_file_path_length));
- _sapp.num_dropped_files = pboard.pasteboardItems.count > _sapp.max_dropped_files ? _sapp.max_dropped_files : pboard.pasteboardItems.count;
-
- for (int i = 0; i < _sapp.num_dropped_files; i++) {
+ _sapp_clear_drop_buffer();
+ _sapp.drop.num_files = ((int)pboard.pasteboardItems.count > _sapp.drop.max_files) ? _sapp.drop.max_files : pboard.pasteboardItems.count;
+ for (int i = 0; i < _sapp.drop.num_files; i++) {
NSURL *fileUrl = [NSURL fileURLWithPath:[pboard.pasteboardItems[i] stringForType:NSPasteboardTypeFileURL]];
- _sapp_strcpy(fileUrl.standardizedURL.path.UTF8String, &_sapp.dropped_files[i * _sapp.max_dropped_file_path_length], _sapp.max_dropped_file_path_length);
+ _sapp_strcpy(fileUrl.standardizedURL.path.UTF8String, &_sapp.drop.buffer[i * _sapp.drop.max_path_length], _sapp.drop.max_path_length);
}
-
if (_sapp_events_enabled()) {
- _sapp_init_event(SAPP_EVENTTYPE_FILE_DROPPED);
+ _sapp_init_event(SAPP_EVENTTYPE_FILES_DROPPED);
_sapp.desc.event_cb(&_sapp.event);
}
-
return YES;
}
-
return NO;
}
@end
@@ -5409,19 +5412,12 @@ _SOKOL_PRIVATE void _sapp_win32_char_event(uint32_t c, bool repeat) {
}
}
-_SOKOL_PRIVATE void _sapp_win32_clear_drop_buffer(void) {
- if (_sapp.drop.enabled) {
- SOKOL_ASSERT(_sapp.drop.buffer);
- memset(_sapp.drop.buffer, 0, _sapp.drop.buf_size);
- }
-}
-
_SOKOL_PRIVATE void _sapp_win32_files_dropped(HDROP hdrop) {
if (!_sapp.drop.enabled) {
return;
}
SOKOL_ASSERT(_sapp.drop.buffer);
- _sapp_win32_clear_drop_buffer();
+ _sapp_clear_drop_buffer();
bool drop_failed = false;
const int count = (int) DragQueryFileW(hdrop, 0xffffffff, NULL, 0);
_sapp.drop.num_files = (count > _sapp.drop.max_files) ? _sapp.drop.max_files : count;
@@ -5443,7 +5439,7 @@ _SOKOL_PRIVATE void _sapp_win32_files_dropped(HDROP hdrop) {
}
}
else {
- _sapp_win32_clear_drop_buffer();
+ _sapp_clear_drop_buffer();
_sapp.drop.num_files = 0;
}
}
@@ -9760,6 +9756,7 @@ SOKOL_API_IMPL const char* sapp_get_dropped_file_path(int index) {
if ((index < 0) || (index >= _sapp.drop.max_files)) {
return "";
}
+ SOKOL_ASSERT(_sapp.drop.buffer);
return (const char*) &_sapp.drop.buffer[index * _sapp.drop.max_path_length];
}