winemac: Remove no-longer-called clipboard entry points.
Signed-off-by: Ken Thomases <ken@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
1837210159
commit
9cedf37205
|
@ -1231,28 +1231,6 @@ static BOOL get_clipboard_info(LPCLIPBOARDINFO cbinfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* release_ownership
|
|
||||||
*/
|
|
||||||
static BOOL release_ownership(void)
|
|
||||||
{
|
|
||||||
BOOL ret = FALSE;
|
|
||||||
|
|
||||||
SERVER_START_REQ(set_clipboard_info)
|
|
||||||
{
|
|
||||||
req->flags = SET_CB_RELOWNER | SET_CB_SEQNO;
|
|
||||||
|
|
||||||
if (wine_server_call_err(req))
|
|
||||||
ERR("Failed to set clipboard.\n");
|
|
||||||
else
|
|
||||||
ret = TRUE;
|
|
||||||
}
|
|
||||||
SERVER_END_REQ;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* macdrv_get_pasteboard_data
|
* macdrv_get_pasteboard_data
|
||||||
*/
|
*/
|
||||||
|
@ -1489,283 +1467,11 @@ CFArrayRef macdrv_copy_pasteboard_formats(CFTypeRef pasteboard)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* check_clipboard_ownership
|
|
||||||
*/
|
|
||||||
static void check_clipboard_ownership(HWND *owner)
|
|
||||||
{
|
|
||||||
CLIPBOARDINFO cbinfo;
|
|
||||||
|
|
||||||
if (owner) *owner = NULL;
|
|
||||||
|
|
||||||
/* If Wine thinks we're the clipboard owner but Mac OS X thinks we're not
|
|
||||||
the pasteboard owner, update Wine. */
|
|
||||||
if (get_clipboard_info(&cbinfo) && (cbinfo.flags & CB_PROCESS))
|
|
||||||
{
|
|
||||||
if (!(cbinfo.flags & CB_OPEN) && !macdrv_is_pasteboard_owner())
|
|
||||||
{
|
|
||||||
TRACE("Lost clipboard ownership\n");
|
|
||||||
|
|
||||||
if (OpenClipboard(cbinfo.hwnd_owner))
|
|
||||||
{
|
|
||||||
/* Destroy private objects */
|
|
||||||
SendMessageW(cbinfo.hwnd_owner, WM_DESTROYCLIPBOARD, 0, 0);
|
|
||||||
|
|
||||||
/* Give up ownership of the windows clipboard */
|
|
||||||
release_ownership();
|
|
||||||
CloseClipboard();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (owner)
|
|
||||||
*owner = cbinfo.hwnd_owner;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* Mac User Driver Clipboard Exports
|
* Mac User Driver Clipboard Exports
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* CountClipboardFormats (MACDRV.@)
|
|
||||||
*/
|
|
||||||
INT CDECL macdrv_CountClipboardFormats(void)
|
|
||||||
{
|
|
||||||
CFMutableSetRef seen_formats;
|
|
||||||
CFArrayRef types;
|
|
||||||
CFIndex count;
|
|
||||||
CFIndex i;
|
|
||||||
INT ret = 0;
|
|
||||||
|
|
||||||
TRACE("()\n");
|
|
||||||
check_clipboard_ownership(NULL);
|
|
||||||
|
|
||||||
seen_formats = CFSetCreateMutable(NULL, 0, NULL);
|
|
||||||
if (!seen_formats)
|
|
||||||
{
|
|
||||||
WARN("Failed to allocate set to track seen formats\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
types = macdrv_copy_pasteboard_types(NULL);
|
|
||||||
if (!types)
|
|
||||||
{
|
|
||||||
WARN("Failed to copy pasteboard types\n");
|
|
||||||
CFRelease(seen_formats);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
count = CFArrayGetCount(types);
|
|
||||||
TRACE("got %ld types\n", count);
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
CFStringRef type = CFArrayGetValueAtIndex(types, i);
|
|
||||||
WINE_CLIPFORMAT* format;
|
|
||||||
|
|
||||||
format = NULL;
|
|
||||||
while ((format = format_for_type(format, type)))
|
|
||||||
{
|
|
||||||
TRACE("for type %s got format %p/%s\n", debugstr_cf(type), format, debugstr_format(format->format_id));
|
|
||||||
|
|
||||||
if (!CFSetContainsValue(seen_formats, (void*)format->format_id))
|
|
||||||
{
|
|
||||||
ret++;
|
|
||||||
CFSetAddValue(seen_formats, (void*)format->format_id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CFRelease(types);
|
|
||||||
CFRelease(seen_formats);
|
|
||||||
TRACE(" -> %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* EmptyClipboard (MACDRV.@)
|
|
||||||
*
|
|
||||||
* Empty cached clipboard data.
|
|
||||||
*/
|
|
||||||
void CDECL macdrv_EmptyClipboard(void)
|
|
||||||
{
|
|
||||||
TRACE("()\n");
|
|
||||||
check_clipboard_ownership(NULL);
|
|
||||||
macdrv_clear_pasteboard();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* EndClipboardUpdate (MACDRV.@)
|
|
||||||
*/
|
|
||||||
void CDECL macdrv_EndClipboardUpdate(void)
|
|
||||||
{
|
|
||||||
TRACE("()\n");
|
|
||||||
check_clipboard_ownership(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* EnumClipboardFormats (MACDRV.@)
|
|
||||||
*/
|
|
||||||
UINT CDECL macdrv_EnumClipboardFormats(UINT prev_format)
|
|
||||||
{
|
|
||||||
CFArrayRef formats;
|
|
||||||
CFIndex count;
|
|
||||||
CFIndex i;
|
|
||||||
UINT ret = 0;
|
|
||||||
|
|
||||||
TRACE("prev_format %s\n", debugstr_format(prev_format));
|
|
||||||
check_clipboard_ownership(NULL);
|
|
||||||
|
|
||||||
formats = macdrv_copy_pasteboard_formats(NULL);
|
|
||||||
if (formats)
|
|
||||||
{
|
|
||||||
count = CFArrayGetCount(formats);
|
|
||||||
if (prev_format)
|
|
||||||
{
|
|
||||||
i = CFArrayGetFirstIndexOfValue(formats, CFRangeMake(0, count), (void*)prev_format);
|
|
||||||
if (i != kCFNotFound)
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
if (i != kCFNotFound && i < count)
|
|
||||||
ret = (UINT)CFArrayGetValueAtIndex(formats, i);
|
|
||||||
|
|
||||||
CFRelease(formats);
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE(" -> %u\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* GetClipboardData (MACDRV.@)
|
|
||||||
*/
|
|
||||||
HANDLE CDECL macdrv_GetClipboardData(UINT desired_format)
|
|
||||||
{
|
|
||||||
check_clipboard_ownership(NULL);
|
|
||||||
|
|
||||||
return macdrv_get_pasteboard_data(NULL, desired_format);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* IsClipboardFormatAvailable (MACDRV.@)
|
|
||||||
*/
|
|
||||||
BOOL CDECL macdrv_IsClipboardFormatAvailable(UINT desired_format)
|
|
||||||
{
|
|
||||||
check_clipboard_ownership(NULL);
|
|
||||||
return macdrv_pasteboard_has_format(NULL, desired_format);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* SetClipboardData (MACDRV.@)
|
|
||||||
*/
|
|
||||||
BOOL CDECL macdrv_SetClipboardData(UINT format_id, HANDLE data, BOOL owner)
|
|
||||||
{
|
|
||||||
HWND hwnd_owner;
|
|
||||||
macdrv_window window;
|
|
||||||
WINE_CLIPFORMAT *format;
|
|
||||||
CFDataRef cfdata = NULL;
|
|
||||||
|
|
||||||
check_clipboard_ownership(&hwnd_owner);
|
|
||||||
window = macdrv_get_cocoa_window(GetAncestor(hwnd_owner, GA_ROOT), FALSE);
|
|
||||||
TRACE("format_id %s data %p owner %d hwnd_owner %p window %p)\n", debugstr_format(format_id), data, owner, hwnd_owner, window);
|
|
||||||
|
|
||||||
format = natural_format_for_format(format_id);
|
|
||||||
if (!format && !(format = insert_clipboard_format(format_id, NULL)))
|
|
||||||
{
|
|
||||||
WARN("Failed to register clipboard format %s\n", debugstr_format(format_id));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Export the data to the Mac pasteboard. */
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
if (!format->export_func || !(cfdata = format->export_func(data)))
|
|
||||||
{
|
|
||||||
WARN("Failed to export %s data to type %s\n", debugstr_format(format_id), debugstr_cf(format->type));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (macdrv_set_pasteboard_data(format->type, cfdata, window))
|
|
||||||
TRACE("Set pasteboard data for type %s: %s\n", debugstr_cf(format->type), debugstr_cf(cfdata));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
WARN("Failed to set pasteboard data for type %s: %s\n", debugstr_cf(format->type), debugstr_cf(cfdata));
|
|
||||||
if (cfdata) CFRelease(cfdata);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cfdata) CFRelease(cfdata);
|
|
||||||
|
|
||||||
/* Find any other formats for this format_id (the exportable synthesized ones). */
|
|
||||||
LIST_FOR_EACH_ENTRY(format, &format_list, WINE_CLIPFORMAT, entry)
|
|
||||||
{
|
|
||||||
if (format->format_id == format_id && format->synthesized && format->export_func)
|
|
||||||
{
|
|
||||||
/* We have a synthesized format for this format ID. Add its type to the pasteboard. */
|
|
||||||
TRACE("Synthesized from format %s: type %s\n", debugstr_format(format_id), debugstr_cf(format->type));
|
|
||||||
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
cfdata = format->export_func(data);
|
|
||||||
if (!cfdata)
|
|
||||||
{
|
|
||||||
WARN("Failed to export %s data to type %s\n", debugstr_format(format->format_id), debugstr_cf(format->type));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
cfdata = NULL;
|
|
||||||
|
|
||||||
if (macdrv_set_pasteboard_data(format->type, cfdata, window))
|
|
||||||
TRACE(" ... set pasteboard data: %s\n", debugstr_cf(cfdata));
|
|
||||||
else
|
|
||||||
WARN(" ... failed to set pasteboard data: %s\n", debugstr_cf(cfdata));
|
|
||||||
|
|
||||||
if (cfdata) CFRelease(cfdata);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
/* FIXME: According to MSDN, the caller is entitled to lock and read from
|
|
||||||
data until CloseClipboard is called. So, we should defer this cleanup. */
|
|
||||||
if ((format_id >= CF_GDIOBJFIRST && format_id <= CF_GDIOBJLAST) ||
|
|
||||||
format_id == CF_BITMAP ||
|
|
||||||
format_id == CF_DIB ||
|
|
||||||
format_id == CF_PALETTE)
|
|
||||||
{
|
|
||||||
DeleteObject(data);
|
|
||||||
}
|
|
||||||
else if (format_id == CF_METAFILEPICT)
|
|
||||||
{
|
|
||||||
DeleteMetaFile(((METAFILEPICT *)GlobalLock(data))->hMF);
|
|
||||||
GlobalFree(data);
|
|
||||||
}
|
|
||||||
else if (format_id == CF_ENHMETAFILE)
|
|
||||||
{
|
|
||||||
DeleteEnhMetaFile(data);
|
|
||||||
}
|
|
||||||
else if (format_id < CF_PRIVATEFIRST || CF_PRIVATELAST < format_id)
|
|
||||||
{
|
|
||||||
GlobalFree(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* MACDRV Private Clipboard Exports
|
* MACDRV Private Clipboard Exports
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
|
@ -8,29 +8,22 @@
|
||||||
@ cdecl Beep() macdrv_Beep
|
@ cdecl Beep() macdrv_Beep
|
||||||
@ cdecl ChangeDisplaySettingsEx(ptr ptr long long long) macdrv_ChangeDisplaySettingsEx
|
@ cdecl ChangeDisplaySettingsEx(ptr ptr long long long) macdrv_ChangeDisplaySettingsEx
|
||||||
@ cdecl ClipCursor(ptr) macdrv_ClipCursor
|
@ cdecl ClipCursor(ptr) macdrv_ClipCursor
|
||||||
@ cdecl CountClipboardFormats() macdrv_CountClipboardFormats
|
|
||||||
@ cdecl CreateDesktopWindow(long) macdrv_CreateDesktopWindow
|
@ cdecl CreateDesktopWindow(long) macdrv_CreateDesktopWindow
|
||||||
@ cdecl CreateWindow(long) macdrv_CreateWindow
|
@ cdecl CreateWindow(long) macdrv_CreateWindow
|
||||||
@ cdecl DestroyCursorIcon(long) macdrv_DestroyCursorIcon
|
@ cdecl DestroyCursorIcon(long) macdrv_DestroyCursorIcon
|
||||||
@ cdecl DestroyWindow(long) macdrv_DestroyWindow
|
@ cdecl DestroyWindow(long) macdrv_DestroyWindow
|
||||||
@ cdecl EmptyClipboard() macdrv_EmptyClipboard
|
|
||||||
@ cdecl EndClipboardUpdate() macdrv_EndClipboardUpdate
|
|
||||||
@ cdecl EnumClipboardFormats(long) macdrv_EnumClipboardFormats
|
|
||||||
@ cdecl EnumDisplayMonitors(long ptr ptr long) macdrv_EnumDisplayMonitors
|
@ cdecl EnumDisplayMonitors(long ptr ptr long) macdrv_EnumDisplayMonitors
|
||||||
@ cdecl EnumDisplaySettingsEx(ptr long ptr long) macdrv_EnumDisplaySettingsEx
|
@ cdecl EnumDisplaySettingsEx(ptr long ptr long) macdrv_EnumDisplaySettingsEx
|
||||||
@ cdecl GetClipboardData(long) macdrv_GetClipboardData
|
|
||||||
@ cdecl GetCursorPos(ptr) macdrv_GetCursorPos
|
@ cdecl GetCursorPos(ptr) macdrv_GetCursorPos
|
||||||
@ cdecl GetKeyboardLayout(long) macdrv_GetKeyboardLayout
|
@ cdecl GetKeyboardLayout(long) macdrv_GetKeyboardLayout
|
||||||
@ cdecl GetKeyboardLayoutList(long ptr) macdrv_GetKeyboardLayoutList
|
@ cdecl GetKeyboardLayoutList(long ptr) macdrv_GetKeyboardLayoutList
|
||||||
@ cdecl GetKeyboardLayoutName(ptr) macdrv_GetKeyboardLayoutName
|
@ cdecl GetKeyboardLayoutName(ptr) macdrv_GetKeyboardLayoutName
|
||||||
@ cdecl GetKeyNameText(long ptr long) macdrv_GetKeyNameText
|
@ cdecl GetKeyNameText(long ptr long) macdrv_GetKeyNameText
|
||||||
@ cdecl GetMonitorInfo(long ptr) macdrv_GetMonitorInfo
|
@ cdecl GetMonitorInfo(long ptr) macdrv_GetMonitorInfo
|
||||||
@ cdecl IsClipboardFormatAvailable(long) macdrv_IsClipboardFormatAvailable
|
|
||||||
@ cdecl MapVirtualKeyEx(long long long) macdrv_MapVirtualKeyEx
|
@ cdecl MapVirtualKeyEx(long long long) macdrv_MapVirtualKeyEx
|
||||||
@ cdecl MsgWaitForMultipleObjectsEx(long ptr long long long) macdrv_MsgWaitForMultipleObjectsEx
|
@ cdecl MsgWaitForMultipleObjectsEx(long ptr long long long) macdrv_MsgWaitForMultipleObjectsEx
|
||||||
@ cdecl RegisterHotKey(long long long) macdrv_RegisterHotKey
|
@ cdecl RegisterHotKey(long long long) macdrv_RegisterHotKey
|
||||||
@ cdecl SetCapture(long long) macdrv_SetCapture
|
@ cdecl SetCapture(long long) macdrv_SetCapture
|
||||||
@ cdecl SetClipboardData(long long long) macdrv_SetClipboardData
|
|
||||||
@ cdecl SetCursor(long) macdrv_SetCursor
|
@ cdecl SetCursor(long) macdrv_SetCursor
|
||||||
@ cdecl SetCursorPos(long long) macdrv_SetCursorPos
|
@ cdecl SetCursorPos(long long) macdrv_SetCursorPos
|
||||||
@ cdecl SetFocus(long) macdrv_SetFocus
|
@ cdecl SetFocus(long) macdrv_SetFocus
|
||||||
|
|
Loading…
Reference in New Issue