From 45b408a78b173647d987a94ce532e6834a53b77f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 9 Sep 2022 11:14:12 +0530 Subject: [PATCH] Allow setting arbitrary mime types --- glfw/input.c | 8 ++++++-- kitty/clipboard.py | 12 +++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/glfw/input.c b/glfw/input.c index b6fa66552..4cde4608f 100644 --- a/glfw/input.c +++ b/glfw/input.c @@ -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); } diff --git a/kitty/clipboard.py b/kitty/clipboard.py index aaa1b6646..de604b69f 100644 --- a/kitty/clipboard.py +++ b/kitty/clipboard.py @@ -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: