mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 07:48:38 +09:00
Issue #1355 - Make nsTableCellFrame::GetColIndex/GetRowIndex faster
We can devirtualize it, remove some branches.
This commit is contained in:
parent
bcbf8e8983
commit
e8bb5560f7
12 changed files with 106 additions and 152 deletions
|
|
@ -2882,16 +2882,15 @@ nsFrameSelection::UnselectCells(nsIContent *aTableContent,
|
|||
nsTableCellFrame* cellFrame =
|
||||
tableFrame->GetCellFrameAt(curRowIndex, curColIndex);
|
||||
|
||||
int32_t origRowIndex, origColIndex;
|
||||
cellFrame->GetRowIndex(origRowIndex);
|
||||
cellFrame->GetColIndex(origColIndex);
|
||||
uint32_t origRowIndex = cellFrame->RowIndex();
|
||||
uint32_t origColIndex = cellFrame->ColIndex();
|
||||
uint32_t actualRowSpan =
|
||||
tableFrame->GetEffectiveRowSpanAt(origRowIndex, origColIndex);
|
||||
uint32_t actualColSpan =
|
||||
tableFrame->GetEffectiveColSpanAt(curRowIndex, curColIndex);
|
||||
if (origRowIndex <= maxRowIndex && maxRowIndex >= 0 &&
|
||||
if (origRowIndex <= static_cast<uint32_t>(maxRowIndex) && maxRowIndex >= 0 &&
|
||||
origRowIndex + actualRowSpan - 1 >= static_cast<uint32_t>(minRowIndex) &&
|
||||
origColIndex <= maxColIndex && maxColIndex >= 0 &&
|
||||
origColIndex <= static_cast<uint32_t>(maxColIndex) && maxColIndex >= 0 &&
|
||||
origColIndex + actualColSpan - 1 >= static_cast<uint32_t>(minColIndex)) {
|
||||
|
||||
mDomSelections[index]->RemoveRange(range);
|
||||
|
|
@ -2925,33 +2924,32 @@ nsFrameSelection::AddCellsToSelection(nsIContent *aTableContent,
|
|||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsresult result = NS_OK;
|
||||
int32_t row = aStartRowIndex;
|
||||
uint32_t row = aStartRowIndex;
|
||||
while(true)
|
||||
{
|
||||
int32_t col = aStartColumnIndex;
|
||||
uint32_t col = aStartColumnIndex;
|
||||
while(true)
|
||||
{
|
||||
nsTableCellFrame* cellFrame = tableFrame->GetCellFrameAt(row, col);
|
||||
|
||||
// Skip cells that are spanned from previous locations or are already selected
|
||||
if (cellFrame) {
|
||||
int32_t origRow, origCol;
|
||||
cellFrame->GetRowIndex(origRow);
|
||||
cellFrame->GetColIndex(origCol);
|
||||
uint32_t origRow = cellFrame->RowIndex();
|
||||
uint32_t origCol = cellFrame->ColIndex();
|
||||
if (origRow == row && origCol == col && !cellFrame->IsSelected()) {
|
||||
result = SelectCellElement(cellFrame->GetContent());
|
||||
if (NS_FAILED(result)) return result;
|
||||
}
|
||||
}
|
||||
// Done when we reach end column
|
||||
if (col == aEndColumnIndex) break;
|
||||
if (col == static_cast<uint32_t>(aEndColumnIndex)) break;
|
||||
|
||||
if (aStartColumnIndex < aEndColumnIndex)
|
||||
col ++;
|
||||
else
|
||||
col--;
|
||||
}
|
||||
if (row == aEndRowIndex) break;
|
||||
if (row == static_cast<uint32_t>(aEndRowIndex)) break;
|
||||
|
||||
if (aStartRowIndex < aEndRowIndex)
|
||||
row++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue