Allow setting arbitrary mime types

This commit is contained in:
Kovid Goyal 2022-09-09 11:14:12 +05:30
parent 0e7da8643e
commit 45b408a78b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 13 additions and 7 deletions

8
glfw/input.c vendored
View File

@ -1551,9 +1551,13 @@ GLFWAPI void glfwSetClipboardDataTypes(GLFWClipboardType clipboard_type, const c
_glfw_free_clipboard_data(cd);
cd->get_data = get_data;
cd->mime_types = calloc(num_mime_types, sizeof(char*));
cd->num_mime_types = num_mime_types;
cd->num_mime_types = 0;
cd->ctype = clipboard_type;
for (size_t i = 0; i < cd->num_mime_types; i++) cd->mime_types[i] = _glfw_strdup(mime_types[i]);
for (size_t i = 0; i < num_mime_types; i++) {
if (mime_types[i]) {
cd->mime_types[cd->num_mime_types++] = _glfw_strdup(mime_types[i]);
}
}
_glfwPlatformSetClipboard(clipboard_type);
}

View File

@ -21,11 +21,13 @@ class Clipboard:
self.enabled = self.clipboard_type == GLFW_CLIPBOARD or supports_primary_selection
def set_text(self, x: Union[str, bytes]) -> None:
if self.enabled:
self.data.clear()
if isinstance(x, str):
x = x.encode('utf-8')
self.data['text/plain'] = x
if isinstance(x, str):
x = x.encode('utf-8')
self.set_mime({'text/plain': x})
def set_mime(self, data: Dict[str, DataType]) -> None:
if self.enabled and isinstance(data, dict):
self.data = data
set_clipboard_data_types(self.clipboard_type, tuple(self.data))
def get_text(self) -> str: