Bug 389283 - Choose cursor value based on selectability. r=dbaron

MozReview-Commit-ID: 2c4RcXgwz1U

--HG--
extra : rebase_source : c3525339d5d64f24c6f0667244885b8b33042072
This commit is contained in:
Xidorn Quan 2016-11-25 01:00:34 +11:00
Родитель 6f58b63037
Коммит ae670d64ee
1 изменённых файлов: 7 добавлений и 23 удалений

Просмотреть файл

@ -4525,29 +4525,13 @@ nsTextFrame::GetCursor(const nsPoint& aPoint,
{
FillCursorInformationFromStyle(StyleUserInterface(), aCursor);
if (NS_STYLE_CURSOR_AUTO == aCursor.mCursor) {
bool selectable;
IsSelectable(&selectable, nullptr);
if (!selectable) {
aCursor.mCursor = NS_STYLE_CURSOR_DEFAULT;
} else {
aCursor.mCursor = GetWritingMode().IsVertical()
? NS_STYLE_CURSOR_VERTICAL_TEXT : NS_STYLE_CURSOR_TEXT;
// If this is editable, we should ignore tabindex value.
if (mContent->IsEditable()) {
return NS_OK;
}
// If tabindex >= 0, use default cursor to indicate it's not selectable
nsIFrame *ancestorFrame = this;
while ((ancestorFrame = ancestorFrame->GetParent()) != nullptr) {
nsIContent *ancestorContent = ancestorFrame->GetContent();
if (ancestorContent && ancestorContent->HasAttr(kNameSpaceID_None, nsGkAtoms::tabindex)) {
nsAutoString tabIndexStr;
ancestorContent->GetAttr(kNameSpaceID_None, nsGkAtoms::tabindex, tabIndexStr);
if (!tabIndexStr.IsEmpty()) {
nsresult rv;
int32_t tabIndexVal = tabIndexStr.ToInteger(&rv);
if (NS_SUCCEEDED(rv) && tabIndexVal >= 0) {
aCursor.mCursor = NS_STYLE_CURSOR_DEFAULT;
break;
}
}
}
}
return NS_OK;
} else {