selection: ignore drag-and-drops with unsupported mime-types

Specifically, make sure we do *not* call wl_data_offer_receive() with
a NULL mime-type, as this causes libwayland to error out, which in
turn causes foot to exit.

Closes #1092
This commit is contained in:
Daniel Eklöf 2022-06-20 19:29:57 +02:00
parent bfc53d1e71
commit 2e4da6fbf6
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 12 additions and 1 deletions

View file

@ -74,10 +74,15 @@
* Graphical corruption when viewport is at the top of the scrollback, * Graphical corruption when viewport is at the top of the scrollback,
and the output is scrolling. and the output is scrolling.
* Improved text reflow of logical lines with trailing empty cells ([#1055][1055]) * Improved text reflow of logical lines with trailing empty cells
([#1055][1055])
* IME focus is now tracked independently from keyboard focus. * IME focus is now tracked independently from keyboard focus.
* Workaround for buggy compositors (e.g. some versions of GNOME)
allowing drag-and-drops even though foot has reported it does not
support the offered mime-types ([#1092][1092]).
[1055]: https://codeberg.org/dnkl/foot/issues/1055 [1055]: https://codeberg.org/dnkl/foot/issues/1055
[1092]: https://codeberg.org/dnkl/foot/issues/1092
### Security ### Security

View file

@ -2392,6 +2392,12 @@ drop(void *data, struct wl_data_device *wl_data_device)
struct wl_clipboard *clipboard = &seat->clipboard; struct wl_clipboard *clipboard = &seat->clipboard;
if (clipboard->mime_type == DATA_OFFER_MIME_UNSET) {
LOG_WARN("compositor called data_device::drop() "
"even though we rejected the drag-and-drop");
return;
}
struct dnd_context *ctx = xmalloc(sizeof(*ctx)); struct dnd_context *ctx = xmalloc(sizeof(*ctx));
*ctx = (struct dnd_context){ *ctx = (struct dnd_context){
.term = term, .term = term,