Bug 1897094 [Linux] Use atom comparing at nsDragService::GetSourceList() r=emilio

Depends on D210617

Differential Revision: https://phabricator.services.mozilla.com/D210618
This commit is contained in:
stransky 2024-05-17 06:59:50 +00:00
parent df1c82cf94
commit 11213e56e9
2 changed files with 19 additions and 6 deletions

View file

@ -158,6 +158,9 @@ GdkAtom nsDragService::sTabDropTypeAtom;
GdkAtom nsDragService::sFileMimeAtom;
GdkAtom nsDragService::sPortalFileAtom;
GdkAtom nsDragService::sPortalFileTransferAtom;
GdkAtom nsDragService::sFilePromiseURLMimeAtom;
GdkAtom nsDragService::sFilePromiseMimeAtom;
GdkAtom nsDragService::sNativeImageMimeAtom;
// See https://docs.gtk.org/gtk3/enum.DragResult.html
static const char kGtkDragResults[][100]{
@ -570,6 +573,9 @@ nsDragService::nsDragService()
sFileMimeAtom = gdk_atom_intern(kFileMime, FALSE);
sPortalFileAtom = gdk_atom_intern(gPortalFile, FALSE);
sPortalFileTransferAtom = gdk_atom_intern(gPortalFileTransfer, FALSE);
sFilePromiseURLMimeAtom = gdk_atom_intern(kFilePromiseURLMime, FALSE);
sFilePromiseMimeAtom = gdk_atom_intern(kFilePromiseMime, FALSE);
sNativeImageMimeAtom = gdk_atom_intern(kNativeImageMime, FALSE);
});
LOGDRAGSERVICE("nsDragService::nsDragService");
@ -1591,21 +1597,25 @@ GtkTargetList* nsDragService::GetSourceList(void) {
currItem->FlavorsTransferableCanExport(flavors);
for (uint32_t i = 0; i < flavors.Length(); ++i) {
nsCString& flavorStr = flavors[i];
GdkAtom requestedFlavor = gdk_atom_intern(flavorStr.get(), FALSE);
if (!requestedFlavor) {
continue;
}
TargetArrayAddTarget(targetArray, flavorStr.get());
// If there is a file, add the text/uri-list type.
if (flavorStr.EqualsLiteral(kFileMime)) {
if (requestedFlavor == sFileMimeAtom) {
TargetArrayAddTarget(targetArray, gTextUriListType);
}
// Check to see if this is text/plain.
else if (flavorStr.EqualsLiteral(kTextMime)) {
else if (requestedFlavor == sTextMimeAtom) {
TargetArrayAddTarget(targetArray, gTextPlainUTF8Type);
}
// Check to see if this is the x-moz-url type.
// If it is, add _NETSCAPE_URL
// this is a type used by everybody.
else if (flavorStr.EqualsLiteral(kURLMime)) {
else if (requestedFlavor == sURLMimeAtom) {
nsCOMPtr<nsISupports> data;
if (NS_SUCCEEDED(currItem->GetTransferData(flavorStr.get(),
getter_AddRefs(data)))) {
@ -1625,16 +1635,16 @@ GtkTargetList* nsDragService::GetSourceList(void) {
}
// check if application/x-moz-file-promise url is supported.
// If so, advertise text/uri-list.
else if (flavorStr.EqualsLiteral(kFilePromiseURLMime)) {
else if (requestedFlavor == sFilePromiseURLMimeAtom) {
TargetArrayAddTarget(targetArray, gTextUriListType);
}
// XdndDirectSave, use on X.org only.
else if (widget::GdkIsX11Display() && !widget::IsXWaylandProtocol() &&
flavorStr.EqualsLiteral(kFilePromiseMime)) {
requestedFlavor == sFilePromiseMimeAtom) {
TargetArrayAddTarget(targetArray, gXdndDirectSaveType);
}
// kNativeImageMime
else if (flavorStr.EqualsLiteral(kNativeImageMime)) {
else if (requestedFlavor == sNativeImageMimeAtom) {
TargetArrayAddTarget(targetArray, kPNGImageMime);
TargetArrayAddTarget(targetArray, kJPEGImageMime);
TargetArrayAddTarget(targetArray, kJPGImageMime);

View file

@ -339,6 +339,9 @@ class nsDragService final : public nsBaseDragService, public nsIObserver {
static GdkAtom sFileMimeAtom;
static GdkAtom sPortalFileAtom;
static GdkAtom sPortalFileTransferAtom;
static GdkAtom sFilePromiseURLMimeAtom;
static GdkAtom sFilePromiseMimeAtom;
static GdkAtom sNativeImageMimeAtom;
};
#endif // nsDragService_h__