From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winemac.drv/cocoa_event.m | 8 +++--- dlls/winemac.drv/cocoa_window.m | 19 +++++++-------- dlls/winemac.drv/event.c | 43 ++++++++++++++++----------------- dlls/winemac.drv/macdrv_cocoa.h | 15 +++--------- 4 files changed, 37 insertions(+), 48 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_event.m b/dlls/winemac.drv/cocoa_event.m index 11dd9c3c784..8fad083f6e5 100644 --- a/dlls/winemac.drv/cocoa_event.m +++ b/dlls/winemac.drv/cocoa_event.m @@ -720,11 +720,9 @@ void macdrv_release_query(macdrv_query *query) { switch (query->type) { - case QUERY_DRAG_OPERATION: - if (query->drag_operation.pasteboard) - CFRelease(query->drag_operation.pasteboard); - break; - case QUERY_DRAG_DROP: + case QUERY_DRAG_DROP_LEAVE: + case QUERY_DRAG_DROP_DRAG: + case QUERY_DRAG_DROP_DROP: if (query->drag_drop.pasteboard) CFRelease(query->drag_drop.pasteboard); break; diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index 6545e7908b3..1682c612de8 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -3265,7 +3265,7 @@ - (void) draggingExited:(id <NSDraggingInfo>)sender // has to be processed in a similar manner as the other drag-and-drop // queries in order to maintain the proper order of operations. macdrv_query* query = macdrv_create_query(); - query->type = QUERY_DRAG_EXITED; + query->type = QUERY_DRAG_DROP_LEAVE; query->window = (macdrv_window)[self retain];
[self.queue query:query timeout:0.1]; @@ -3280,16 +3280,15 @@ - (NSDragOperation) draggingUpdated:(id <NSDraggingInfo>)sender NSPasteboard* pb = [sender draggingPasteboard];
macdrv_query* query = macdrv_create_query(); - query->type = QUERY_DRAG_OPERATION; + query->type = QUERY_DRAG_DROP_DRAG; query->window = (macdrv_window)[self retain]; - query->drag_operation.x = floor(cgpt.x); - query->drag_operation.y = floor(cgpt.y); - query->drag_operation.offered_ops = [sender draggingSourceOperationMask]; - query->drag_operation.accepted_op = NSDragOperationNone; - query->drag_operation.pasteboard = (CFTypeRef)[pb retain]; + query->drag_drop.x = floor(cgpt.x); + query->drag_drop.y = floor(cgpt.y); + query->drag_drop.ops = [sender draggingSourceOperationMask]; + query->drag_drop.pasteboard = (CFTypeRef)[pb retain];
[self.queue query:query timeout:3]; - ret = query->status ? query->drag_operation.accepted_op : NSDragOperationNone; + ret = query->status ? query->drag_drop.ops : NSDragOperationNone; macdrv_release_query(query);
return ret; @@ -3303,11 +3302,11 @@ - (BOOL) performDragOperation:(id <NSDraggingInfo>)sender NSPasteboard* pb = [sender draggingPasteboard];
macdrv_query* query = macdrv_create_query(); - query->type = QUERY_DRAG_DROP; + query->type = QUERY_DRAG_DROP_DROP; query->window = (macdrv_window)[self retain]; query->drag_drop.x = floor(cgpt.x); query->drag_drop.y = floor(cgpt.y); - query->drag_drop.op = [sender draggingSourceOperationMask]; + query->drag_drop.ops = [sender draggingSourceOperationMask]; query->drag_drop.pasteboard = (CFTypeRef)[pb retain];
[self.queue query:query timeout:3 * 60 flags:WineQueryProcessEvents]; diff --git a/dlls/winemac.drv/event.c b/dlls/winemac.drv/event.c index 4f80f59692e..cd5fee519bb 100644 --- a/dlls/winemac.drv/event.c +++ b/dlls/winemac.drv/event.c @@ -223,9 +223,9 @@ static uint32_t dropeffect_to_drag_operation(DWORD effect, uint32_t ops)
/************************************************************************** - * query_drag_drop + * query_drag_drop_drop */ -static BOOL query_drag_drop(macdrv_query *query) +static BOOL query_drag_drop_drop(macdrv_query *query) { HWND hwnd = macdrv_get_window_hwnd(query->window); struct macdrv_win_data *data = get_win_data(hwnd); @@ -240,7 +240,7 @@ static BOOL query_drag_drop(macdrv_query *query) }
params.hwnd = HandleToUlong(hwnd); - params.effect = drag_operations_to_dropeffects(query->drag_drop.op); + params.effect = drag_operations_to_dropeffects(query->drag_drop.ops); params.x = query->drag_drop.x + data->rects.visible.left; params.y = query->drag_drop.y + data->rects.visible.top; params.handle = (UINT_PTR)query->drag_drop.pasteboard; @@ -251,9 +251,9 @@ static BOOL query_drag_drop(macdrv_query *query) }
/************************************************************************** - * query_drag_exited + * query_drag_drop_leave */ -static BOOL query_drag_exited(macdrv_query *query) +static BOOL query_drag_drop_leave(macdrv_query *query) { struct dnd_query_exited_params params = {.dispatch = {.callback = dnd_query_exited_callback}}; void *ret_ptr; @@ -267,9 +267,9 @@ static BOOL query_drag_exited(macdrv_query *query)
/************************************************************************** - * query_drag_operation + * query_drag_drop_drag */ -static BOOL query_drag_operation(macdrv_query *query) +static BOOL query_drag_drop_drag(macdrv_query *query) { struct dnd_query_drag_params params = {.dispatch = {.callback = dnd_query_drag_callback}}; HWND hwnd = macdrv_get_window_hwnd(query->window); @@ -285,10 +285,10 @@ static BOOL query_drag_operation(macdrv_query *query) }
params.hwnd = HandleToUlong(hwnd); - params.effect = drag_operations_to_dropeffects(query->drag_operation.offered_ops); - params.x = query->drag_operation.x + data->rects.visible.left; - params.y = query->drag_operation.y + data->rects.visible.top; - params.handle = (UINT_PTR)query->drag_operation.pasteboard; + params.effect = drag_operations_to_dropeffects(query->drag_drop.ops); + params.x = query->drag_drop.x + data->rects.visible.left; + params.y = query->drag_drop.y + data->rects.visible.top; + params.handle = (UINT_PTR)query->drag_drop.pasteboard; release_win_data(data);
if (KeUserDispatchCallback(¶ms.dispatch, sizeof(params), &ret_ptr, &ret_len)) @@ -296,8 +296,7 @@ static BOOL query_drag_operation(macdrv_query *query) effect = *(DWORD *)ret_ptr; if (!effect) return FALSE;
- query->drag_operation.accepted_op = dropeffect_to_drag_operation(effect, - query->drag_operation.offered_ops); + query->drag_drop.ops = dropeffect_to_drag_operation(effect, query->drag_drop.ops); return TRUE; }
@@ -360,17 +359,17 @@ static void macdrv_query_event(HWND hwnd, const macdrv_event *event)
switch (query->type) { - case QUERY_DRAG_DROP: - TRACE("QUERY_DRAG_DROP\n"); - success = query_drag_drop(query); + case QUERY_DRAG_DROP_LEAVE: + TRACE("QUERY_DRAG_DROP_LEAVE\n"); + success = query_drag_drop_leave(query); break; - case QUERY_DRAG_EXITED: - TRACE("QUERY_DRAG_EXITED\n"); - success = query_drag_exited(query); + case QUERY_DRAG_DROP_DRAG: + TRACE("QUERY_DRAG_DROP_DRAG\n"); + success = query_drag_drop_drag(query); break; - case QUERY_DRAG_OPERATION: - TRACE("QUERY_DRAG_OPERATION\n"); - success = query_drag_operation(query); + case QUERY_DRAG_DROP_DROP: + TRACE("QUERY_DRAG_DROP_DROP\n"); + success = query_drag_drop_drop(query); break; case QUERY_IME_CHAR_RECT: TRACE("QUERY_IME_CHAR_RECT\n"); diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index 94821eef6bf..1c9266d4564 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -440,9 +440,9 @@ extern int macdrv_set_display_mode(const struct macdrv_display* display, } macdrv_event;
enum { - QUERY_DRAG_DROP, - QUERY_DRAG_EXITED, - QUERY_DRAG_OPERATION, + QUERY_DRAG_DROP_LEAVE, + QUERY_DRAG_DROP_DRAG, + QUERY_DRAG_DROP_DROP, QUERY_IME_CHAR_RECT, QUERY_PASTEBOARD_DATA, QUERY_RESIZE_SIZE, @@ -461,16 +461,9 @@ extern int macdrv_set_display_mode(const struct macdrv_display* display, struct { int x; int y; - uint32_t op; + uint32_t ops; CFTypeRef pasteboard; } drag_drop; - struct { - int x; - int y; - uint32_t offered_ops; - uint32_t accepted_op; - CFTypeRef pasteboard; - } drag_operation; struct { void *himc; CFRange range;