forked from mirrors/gecko-dev
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:
parent
df1c82cf94
commit
11213e56e9
2 changed files with 19 additions and 6 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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__
|
||||
|
|
|
|||
Loading…
Reference in a new issue