NS_IMETHODIMP PasteTransferableCommand::GetCommandStateParams(const char* aCommandName, nsICommandParams* aParams, nsISupports* aCommandRefCon) { nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon); if (NS_WARN_IF(!editor)) { return NS_ERROR_FAILURE; } nsCOMPtr<nsISupports> supports = aParams->AsCommandParams()->GetISupports("transferable"); if (NS_WARN_IF(!supports)) { return NS_ERROR_FAILURE; } nsCOMPtr<nsITransferable> trans; trans = do_QueryInterface(supports); if (NS_WARN_IF(!trans)) { return NS_ERROR_FAILURE; } TextEditor* textEditor = editor->AsTextEditor(); MOZ_ASSERT(textEditor); return aParams->AsCommandParams()->SetBool( STATE_ENABLED, textEditor->CanPasteTransferable(trans)); }
NS_IMETHODIMP PasteTransferableCommand::IsCommandEnabled(const char* aCommandName, nsISupports* aCommandRefCon, bool* aIsEnabled) { if (NS_WARN_IF(!aIsEnabled)) { return NS_ERROR_INVALID_ARG; } *aIsEnabled = false; nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon); if (!editor) { return NS_OK; } TextEditor* textEditor = editor->AsTextEditor(); MOZ_ASSERT(textEditor); if (!textEditor->IsSelectionEditable()) { return NS_OK; } *aIsEnabled = textEditor->CanPasteTransferable(nullptr); return NS_OK; }