mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-29 20:07:30 +09:00
moebius#56: Fix: DataTransfer - Pasting image from clipboard fails in some cases
https://github.com/MoonchildProductions/moebius/pull/56
This commit is contained in:
parent
2f455353a4
commit
37c73e0634
13 changed files with 156 additions and 44 deletions
|
|
@ -1538,6 +1538,13 @@ HTMLEditor::CanPaste(int32_t aSelectionType,
|
|||
NS_ENSURE_ARG_POINTER(aCanPaste);
|
||||
*aCanPaste = false;
|
||||
|
||||
// Always enable the paste command when inside of a HTML or XHTML document.
|
||||
nsCOMPtr<nsIDocument> doc = GetDocument();
|
||||
if (doc && doc->IsHTMLOrXHTML()) {
|
||||
*aCanPaste = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// can't paste if readonly
|
||||
if (!IsModifiable()) {
|
||||
return NS_OK;
|
||||
|
|
|
|||
|
|
@ -383,6 +383,13 @@ TextEditor::CanPaste(int32_t aSelectionType,
|
|||
NS_ENSURE_ARG_POINTER(aCanPaste);
|
||||
*aCanPaste = false;
|
||||
|
||||
// Always enable the paste command when inside of a HTML or XHTML document.
|
||||
nsCOMPtr<nsIDocument> doc = GetDocument();
|
||||
if (doc && doc->IsHTMLOrXHTML()) {
|
||||
*aCanPaste = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// can't paste if readonly
|
||||
if (!IsModifiable()) {
|
||||
return NS_OK;
|
||||
|
|
|
|||
|
|
@ -12,3 +12,4 @@ support-files = green.png
|
|||
[test_set_document_title_transaction.html]
|
||||
[test_texteditor_keyevent_handling.html]
|
||||
skip-if = (debug && os=='win') || (os == 'linux') # Bug 1116205, leaks on windows debug, fails delete key on linux
|
||||
[test_pasteImgTextarea.xul]
|
||||
|
|
|
|||
|
|
@ -247,3 +247,5 @@ skip-if = toolkit == 'android'
|
|||
[test_css_chrome_load_access.html]
|
||||
skip-if = toolkit == 'android' # chrome urls not available due to packaging
|
||||
[test_selection_move_commands.html]
|
||||
[test_pasteImgTextarea.html]
|
||||
skip-if = toolkit == 'android' # bug 1299578
|
||||
|
|
|
|||
20
editor/libeditor/tests/test_pasteImgTextarea.html
Normal file
20
editor/libeditor/tests/test_pasteImgTextarea.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!doctype html>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script src="/tests/SimpleTest/SpawnTask.js"></script>
|
||||
<img id="i" src="green.png">
|
||||
<textarea id="t"></textarea>
|
||||
|
||||
<script>
|
||||
let loaded = new Promise(resolve => addLoadEvent(resolve));
|
||||
add_task(function*() {
|
||||
yield loaded;
|
||||
SpecialPowers.setCommandNode(window, document.getElementById("i"));
|
||||
SpecialPowers.doCommand(window, "cmd_copyImageContents");
|
||||
let input = document.getElementById("t");
|
||||
input.focus();
|
||||
var controller =
|
||||
SpecialPowers.wrap(input).controllers.getControllerForCommand("cmd_paste");
|
||||
is(controller.isCommandEnabled("cmd_paste"), true,
|
||||
"paste should be enabled in html textareas when an image is on the clipboard");
|
||||
});
|
||||
</script>
|
||||
27
editor/libeditor/tests/test_pasteImgTextarea.xul
Normal file
27
editor/libeditor/tests/test_pasteImgTextarea.xul
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
|
||||
<window xmlns:html="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"></script>
|
||||
|
||||
<body xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html:img id="i" src="green.png" />
|
||||
<html:textarea id="t"></html:textarea>
|
||||
</body>
|
||||
<script type="text/javascript"><![CDATA[
|
||||
let loaded = new Promise(resolve => addLoadEvent(resolve));
|
||||
add_task(function*() {
|
||||
yield loaded;
|
||||
SpecialPowers.setCommandNode(window, document.getElementById("i"));
|
||||
SpecialPowers.doCommand(window, "cmd_copyImageContents");
|
||||
let input = document.getElementById("t");
|
||||
input.focus();
|
||||
var controller =
|
||||
SpecialPowers.wrap(input).controllers.getControllerForCommand("cmd_paste");
|
||||
is(controller.isCommandEnabled("cmd_paste"), false,
|
||||
"paste should not be enabled in xul textareas when an image is on the clipboard");
|
||||
});
|
||||
]]></script>
|
||||
</window>
|
||||
Loading…
Add table
Add a link
Reference in a new issue