mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-08-22 07:01:30 +00:00
[client] wayland: fix MATE clipboard MIME handling
Treat either GNOME or MATE copied-files data as preferred over the URI list fallback. The previous pair of strcmp conditions could never both be false, so a MATE offer could not replace an earlier URI list. GNOME and MATE use the same copied-files representation. Generate that payload once and serve it under both advertised MIME names instead of overwriting and leaking the first allocation.
This commit is contained in:
@@ -435,11 +435,14 @@ static void dataOfferHandleOffer(void * opaque, struct wl_data_offer * offer,
|
|||||||
|
|
||||||
if (data->mimetypes[type])
|
if (data->mimetypes[type])
|
||||||
{
|
{
|
||||||
if (type != LG_CLIPBOARD_DATA_FILES ||
|
const bool preferredFileMime =
|
||||||
strcmp(mimetype, "x-special/gnome-copied-files") ||
|
!strcmp(mimetype, "x-special/gnome-copied-files") ||
|
||||||
strcmp(mimetype, "x-special/mate-copied-files") ||
|
!strcmp(mimetype, "x-special/mate-copied-files" );
|
||||||
|
const bool currentPreferredFileMime =
|
||||||
!strcmp(data->mimetypes[type], "x-special/gnome-copied-files") ||
|
!strcmp(data->mimetypes[type], "x-special/gnome-copied-files") ||
|
||||||
!strcmp(data->mimetypes[type], "x-special/mate-copied-files"))
|
!strcmp(data->mimetypes[type], "x-special/mate-copied-files" );
|
||||||
|
if (type != LG_CLIPBOARD_DATA_FILES || !preferredFileMime ||
|
||||||
|
currentPreferredFileMime)
|
||||||
return;
|
return;
|
||||||
free(data->mimetypes[type]);
|
free(data->mimetypes[type]);
|
||||||
}
|
}
|
||||||
@@ -1546,9 +1549,6 @@ static bool waylandCBPublish(LG_ClipboardData type)
|
|||||||
!clipboardFiles_getRemotePresentation(transfer->filePresentation,
|
!clipboardFiles_getRemotePresentation(transfer->filePresentation,
|
||||||
"x-special/gnome-copied-files",
|
"x-special/gnome-copied-files",
|
||||||
&transfer->fileGnome, &transfer->fileGnomeSize) ||
|
&transfer->fileGnome, &transfer->fileGnomeSize) ||
|
||||||
!clipboardFiles_getRemotePresentation(transfer->filePresentation,
|
|
||||||
"x-special/mate-copied-files",
|
|
||||||
&transfer->fileGnome, &transfer->fileGnomeSize) ||
|
|
||||||
!clipboardFiles_getRemotePresentation(transfer->filePresentation,
|
!clipboardFiles_getRemotePresentation(transfer->filePresentation,
|
||||||
"application/x-kde-cutselection",
|
"application/x-kde-cutselection",
|
||||||
&transfer->fileKde, &transfer->fileKdeSize)))
|
&transfer->fileKde, &transfer->fileKdeSize)))
|
||||||
|
|||||||
Reference in New Issue
Block a user