mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 857487 - Fix deleting a table row using the inline table editing UI; r=ehsan
This commit is contained in:
parent
b83d2641b1
commit
8466c9c85a
@ -1309,10 +1309,17 @@ nsHTMLEditor::DeleteRow(nsIDOMElement *aTable, int32_t aRowIndex)
|
||||
nsTArray<nsCOMPtr<nsIDOMElement> > spanCellList;
|
||||
nsTArray<int32_t> newSpanList;
|
||||
|
||||
int32_t rowCount, colCount;
|
||||
res = GetTableSize(aTable, &rowCount, &colCount);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
|
||||
// Scan through cells in row to do rowspan adjustments
|
||||
// Note that after we delete row, startRowIndex will point to the
|
||||
// cells in the next row to be deleted
|
||||
do {
|
||||
if (aRowIndex >= rowCount || colIndex >= colCount)
|
||||
break;
|
||||
|
||||
res = GetCellDataAt(aTable, aRowIndex, colIndex, getter_AddRefs(cell),
|
||||
&startRowIndex, &startColIndex, &rowSpan, &colSpan,
|
||||
&actualRowSpan, &actualColSpan, &isSelected);
|
||||
|
@ -85,6 +85,7 @@ MOCHITEST_FILES = \
|
||||
test_bug790475.html \
|
||||
test_bug796839.html \
|
||||
test_bug832025.html \
|
||||
test_bug857487.html \
|
||||
test_spellcheck_pref.html \
|
||||
$(NULL)
|
||||
|
||||
|
72
editor/libeditor/html/tests/test_bug857487.html
Normal file
72
editor/libeditor/html/tests/test_bug857487.html
Normal file
@ -0,0 +1,72 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=857487
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 857487</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=857487">Mozilla Bug 857487</a>
|
||||
<div id="edit" contenteditable="true">
|
||||
<table id="table" border="1" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>a</td>
|
||||
<td>b</td>
|
||||
<td>c</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>d</td>
|
||||
<td id="cell">e</td>
|
||||
<td>f</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g</td>
|
||||
<td>h</td>
|
||||
<td>i</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<script type="application/javascript">
|
||||
|
||||
/**
|
||||
* Test for Bug 857487
|
||||
*
|
||||
* Tests that removing a table row through nsIHTMLEditor works
|
||||
*/
|
||||
|
||||
function getEditor() {
|
||||
const Ci = SpecialPowers.Ci;
|
||||
var editingSession = SpecialPowers.wrap(window)
|
||||
.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIWebNavigation)
|
||||
.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIEditingSession);
|
||||
return editingSession.getEditorForWindow(window).QueryInterface(Ci.nsITableEditor);
|
||||
}
|
||||
|
||||
var cell = document.getElementById("cell");
|
||||
cell.focus();
|
||||
|
||||
// place caret at end of center cell
|
||||
var sel = getSelection();
|
||||
sel.collapse(cell, cell.childNodes.length);
|
||||
|
||||
var editor = getEditor();
|
||||
editor.deleteTableRow(1);
|
||||
|
||||
var table = document.getElementById("table");
|
||||
|
||||
is(table.innerHTML == "\n <tbody>\n <tr>\n <td>a</td>\n <td>b</td>\n <td>c</td>\n </tr>\n \n <tr>\n <td>g</td>\n <td>h</td>\n <td>i</td>\n </tr>\n </tbody>\n ",
|
||||
true, "editor.deleteTableRow(1) should delete the row containing the selection");
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user