Ken Thomases : winemac: Make macdrv_EnumClipboardFormats() always use macdrv_copy_pasteboard_formats().
Alexandre Julliard
julliard at winehq.org
Fri Nov 22 10:23:07 CST 2013
Module: wine
Branch: master
Commit: f2640745b33dfab362f86d60a25e4ef3ba810957
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f2640745b33dfab362f86d60a25e4ef3ba810957
Author: Ken Thomases <ken at codeweavers.com>
Date: Fri Nov 22 04:31:46 2013 -0600
winemac: Make macdrv_EnumClipboardFormats() always use macdrv_copy_pasteboard_formats().
This makes sure that the formats are enumerated in a consistent order.
---
dlls/winemac.drv/clipboard.c | 43 +++++++++++------------------------------
1 files changed, 12 insertions(+), 31 deletions(-)
diff --git a/dlls/winemac.drv/clipboard.c b/dlls/winemac.drv/clipboard.c
index b65391d..0b13df9 100644
--- a/dlls/winemac.drv/clipboard.c
+++ b/dlls/winemac.drv/clipboard.c
@@ -1921,6 +1921,7 @@ void CDECL macdrv_EndClipboardUpdate(void)
*/
UINT CDECL macdrv_EnumClipboardFormats(UINT prev_format)
{
+ CFArrayRef formats;
CFIndex count;
CFIndex i;
UINT ret = 0;
@@ -1928,43 +1929,23 @@ UINT CDECL macdrv_EnumClipboardFormats(UINT prev_format)
TRACE("prev_format %s\n", debugstr_format(prev_format));
check_clipboard_ownership(NULL);
- if (prev_format)
+ formats = macdrv_copy_pasteboard_formats(NULL);
+ if (formats)
{
- CFArrayRef formats = macdrv_copy_pasteboard_formats(NULL);
- if (formats)
+ count = CFArrayGetCount(formats);
+ if (prev_format)
{
- count = CFArrayGetCount(formats);
i = CFArrayGetFirstIndexOfValue(formats, CFRangeMake(0, count), (void*)prev_format);
- if (i != kCFNotFound && i + 1 < count)
- ret = (UINT)CFArrayGetValueAtIndex(formats, i + 1);
-
- CFRelease(formats);
+ if (i != kCFNotFound)
+ i++;
}
- }
- else
- {
- CFArrayRef types = macdrv_copy_pasteboard_types(NULL);
- if (types)
- {
- count = CFArrayGetCount(types);
- TRACE("got %ld types\n", count);
-
- for (i = 0; i < count; i++)
- {
- CFStringRef type = CFArrayGetValueAtIndex(types, i);
- WINE_CLIPFORMAT *format = format_for_type(NULL, type);
+ else
+ i = 0;
- if (format)
- {
- ret = format->format_id;
- break;
- }
- }
+ if (i != kCFNotFound && i < count)
+ ret = (UINT)CFArrayGetValueAtIndex(formats, i);
- CFRelease(types);
- }
- else
- WARN("Failed to copy pasteboard types\n");
+ CFRelease(formats);
}
TRACE(" -> %u\n", ret);
More information about the wine-cvs
mailing list