The reason I return a CStdStringW from GetClipboard() is because the internal buffers used by CGUIEditControl and CGUIDialogKeyboardGeneric (the only place GetClipboard() is called) are both CStdStringW. As the code stands there is only one conversion required, i.e. utf8 to unicode in the OSX version of GetClipboard(). If GetClipboard() returns a utf8 string there will still be a conversion required in OSX, and now two conversions in Win32.

I'll go along with whatever the team want, but I don't understand why you'd use utf8 for passing strings around internally. For i/o I can see the point, but for internal use?