/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// get the clipboard
nsCOMPtr<nsIClipboard> clipboard(
do_GetService("@mozilla.org/widget/clipboard;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// don't go any further if they're asking for the selection // clipboard on a platform which doesn't support it (i.e., unix) if (nsIClipboard::kSelectionClipboard == aClipboardID &&
!clipboard->IsClipboardTypeSupported(nsIClipboard::kSelectionClipboard)) { return NS_ERROR_FAILURE;
}
// don't go any further if they're asking for the find clipboard on a platform // which doesn't support it (i.e., non-osx) if (nsIClipboard::kFindClipboard == aClipboardID &&
!clipboard->IsClipboardTypeSupported(nsIClipboard::kFindClipboard)) { return NS_ERROR_FAILURE;
}
// create a transferable for putting data on the clipboard
nsCOMPtr<nsITransferable> trans(
do_CreateInstance("@mozilla.org/widget/transferable;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(trans, NS_ERROR_FAILURE);
trans->Init(nullptr); if (aSensitive == SensitiveData::Sensitive) {
trans->SetIsPrivateData(true);
}
// Add the text data flavor to the transferable
rv = trans->AddDataFlavor(kTextMime);
NS_ENSURE_SUCCESS(rv, rv);
// get wStrings to hold clip data
nsCOMPtr<nsISupportsString> data(
do_CreateInstance("@mozilla.org/supports-string;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(data, NS_ERROR_FAILURE);
// populate the string
rv = data->SetData(aString);
NS_ENSURE_SUCCESS(rv, rv);
// Pass the data object as |nsISupports| so that when the transferable holds // onto it, it will addref the correct interface.
rv = trans->SetTransferData(kTextMime, ToSupports(data));
NS_ENSURE_SUCCESS(rv, rv);
// put the transferable on the clipboard
rv = clipboard->SetData(trans, nullptr, aClipboardID, aSettingWindowContext);
NS_ENSURE_SUCCESS(rv, rv);
// copy to the global clipboard. it's bad if this fails in any way.
rv = CopyStringToClipboard(aString, nsIClipboard::kGlobalClipboard,
aSettingWindowContext, aSensitive);
NS_ENSURE_SUCCESS(rv, rv);
// unix also needs us to copy to the selection clipboard. this will // fail in CopyStringToClipboard if we're not on a platform that // supports the selection clipboard. (this could have been #ifdef // XP_UNIX, but using the IsClipboardTypeSupported call is the more correct // thing to do. // // if this fails in any way other than "not being unix", we'll get // the assertion we need in CopyStringToClipboard, and we needn't // assert again here.
CopyStringToClipboard(aString, nsIClipboard::kSelectionClipboard,
aSettingWindowContext, aSensitive);
return NS_OK;
}
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.