зеркало из https://github.com/mozilla/gecko-dev.git
Bug 764203 - Only notify pivot change if it actually changed. r=davidb
This commit is contained in:
Родитель
52df1d4c92
Коммит
405fbb85d5
|
@ -118,7 +118,7 @@ nsAccessiblePivot::SetPosition(nsIAccessible* aPosition)
|
|||
mPosition.swap(secondPosition);
|
||||
PRInt32 oldStart = mStartOffset, oldEnd = mEndOffset;
|
||||
mStartOffset = mEndOffset = -1;
|
||||
NotifyPivotChanged(secondPosition, oldStart, oldEnd);
|
||||
NotifyOfPivotChange(secondPosition, oldStart, oldEnd);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -172,7 +172,7 @@ nsAccessiblePivot::SetTextRange(nsIAccessibleText* aTextAccessible,
|
|||
nsRefPtr<Accessible> oldPosition = mPosition.forget();
|
||||
mPosition = newPosition.forget();
|
||||
|
||||
NotifyPivotChanged(oldPosition, oldStart, oldEnd);
|
||||
NotifyOfPivotChange(oldPosition, oldStart, oldEnd);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -199,9 +199,8 @@ nsAccessiblePivot::MoveNext(nsIAccessibleTraversalRule* aRule,
|
|||
SearchForward(anchor, aRule, (aArgc > 1) ? aIncludeStart : false, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*aResult = accessible;
|
||||
if (*aResult)
|
||||
MovePivotInternal(accessible);
|
||||
if (accessible)
|
||||
*aResult = MovePivotInternal(accessible);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -227,9 +226,8 @@ nsAccessiblePivot::MovePrevious(nsIAccessibleTraversalRule* aRule,
|
|||
SearchBackward(anchor, aRule, (aArgc > 1) ? aIncludeStart : false, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*aResult = accessible;
|
||||
if (*aResult)
|
||||
MovePivotInternal(accessible);
|
||||
if (accessible)
|
||||
*aResult = MovePivotInternal(accessible);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -247,9 +245,8 @@ nsAccessiblePivot::MoveFirst(nsIAccessibleTraversalRule* aRule, bool* aResult)
|
|||
Accessible* accessible = SearchForward(mRoot, aRule, true, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*aResult = accessible;
|
||||
if (*aResult)
|
||||
MovePivotInternal(accessible);
|
||||
if (accessible)
|
||||
*aResult = MovePivotInternal(accessible);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -276,9 +273,8 @@ nsAccessiblePivot::MoveLast(nsIAccessibleTraversalRule* aRule, bool* aResult)
|
|||
accessible = SearchBackward(lastAccessible, aRule, true, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*aResult = accessible;
|
||||
if (*aResult)
|
||||
MovePivotInternal(accessible);
|
||||
if (accessible)
|
||||
*aResult = MovePivotInternal(accessible);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -343,7 +339,7 @@ nsAccessiblePivot::IsRootDescendant(Accessible* aAccessible)
|
|||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
nsAccessiblePivot::MovePivotInternal(Accessible* aPosition)
|
||||
{
|
||||
nsRefPtr<Accessible> oldPosition = mPosition.forget();
|
||||
|
@ -351,7 +347,7 @@ nsAccessiblePivot::MovePivotInternal(Accessible* aPosition)
|
|||
PRInt32 oldStart = mStartOffset, oldEnd = mEndOffset;
|
||||
mStartOffset = mEndOffset = -1;
|
||||
|
||||
NotifyPivotChanged(oldPosition, oldStart, oldEnd);
|
||||
return NotifyOfPivotChange(oldPosition, oldStart, oldEnd);
|
||||
}
|
||||
|
||||
Accessible*
|
||||
|
@ -472,15 +468,21 @@ nsAccessiblePivot::SearchForward(Accessible* aAccessible,
|
|||
return nsnull;
|
||||
}
|
||||
|
||||
void
|
||||
nsAccessiblePivot::NotifyPivotChanged(Accessible* aOldPosition,
|
||||
PRInt32 aOldStart, PRInt32 aOldEnd)
|
||||
bool
|
||||
nsAccessiblePivot::NotifyOfPivotChange(Accessible* aOldPosition,
|
||||
PRInt32 aOldStart, PRInt32 aOldEnd)
|
||||
{
|
||||
if (aOldPosition == mPosition &&
|
||||
aOldStart == mStartOffset && aOldEnd == mEndOffset)
|
||||
return false;
|
||||
|
||||
nsTObserverArray<nsCOMPtr<nsIAccessiblePivotObserver> >::ForwardIterator iter(mObservers);
|
||||
while (iter.HasMore()) {
|
||||
nsIAccessiblePivotObserver* obs = iter.GetNext();
|
||||
obs->OnPivotChanged(this, aOldPosition, aOldStart, aOldEnd);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
|
|
@ -44,10 +44,11 @@ private:
|
|||
void operator = (const nsAccessiblePivot&) MOZ_DELETE;
|
||||
|
||||
/*
|
||||
* Notify all observers on a pivot change.
|
||||
* Notify all observers on a pivot change. Return true if it has changed and
|
||||
* observers have been notified.
|
||||
*/
|
||||
void NotifyPivotChanged(Accessible* aOldAccessible,
|
||||
PRInt32 aOldStart, PRInt32 aOldEnd);
|
||||
bool NotifyOfPivotChange(Accessible* aOldAccessible,
|
||||
PRInt32 aOldStart, PRInt32 aOldEnd);
|
||||
|
||||
/*
|
||||
* Check to see that the given accessible is in the pivot's subtree.
|
||||
|
@ -72,9 +73,9 @@ private:
|
|||
nsresult* aResult);
|
||||
|
||||
/*
|
||||
* Update the pivot, and notify observers.
|
||||
* Update the pivot, and notify observers. Return true if it moved.
|
||||
*/
|
||||
void MovePivotInternal(Accessible* aPosition);
|
||||
bool MovePivotInternal(Accessible* aPosition);
|
||||
|
||||
/*
|
||||
* The root accessible.
|
||||
|
|
Загрузка…
Ссылка в новой задаче