mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1155493 - Part 3: Dispatch event when carets are updated, pressed, released, tap, longpressonemptycontent, hidden. r=roc
This commit is contained in:
parent
685aaaec24
commit
fe912f3b0e
@ -90,6 +90,7 @@ AccessibleCaretManager::HideCarets()
|
||||
AC_LOG("%s", __FUNCTION__);
|
||||
mFirstCaret->SetAppearance(Appearance::None);
|
||||
mSecondCaret->SetAppearance(Appearance::None);
|
||||
DispatchCaretStateChangedEvent(CaretChangedReason::Visibilitychange);
|
||||
CancelCaretTimeoutTimer();
|
||||
}
|
||||
}
|
||||
@ -154,7 +155,8 @@ AccessibleCaretManager::UpdateCaretsForCursorMode()
|
||||
// No need to consider whether the caret's position is out of scrollport.
|
||||
// According to the spec, we need to explicitly hide it after the scrolling is
|
||||
// ended.
|
||||
mFirstCaret->SetPosition(frame, offset);
|
||||
bool oldSecondCaretVisible = mSecondCaret->IsLogicallyVisible();
|
||||
PositionChangedResult caretResult = mFirstCaret->SetPosition(frame, offset);
|
||||
mFirstCaret->SetSelectionBarEnabled(false);
|
||||
if (nsContentUtils::HasNonEmptyTextContent(
|
||||
editingHost, nsContentUtils::eRecurseIntoChildren)) {
|
||||
@ -164,6 +166,11 @@ AccessibleCaretManager::UpdateCaretsForCursorMode()
|
||||
mFirstCaret->SetAppearance(Appearance::NormalNotShown);
|
||||
}
|
||||
mSecondCaret->SetAppearance(Appearance::None);
|
||||
|
||||
if ((caretResult == PositionChangedResult::Changed ||
|
||||
oldSecondCaretVisible) && !mActiveCaret) {
|
||||
DispatchCaretStateChangedEvent(CaretChangedReason::Updateposition);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -214,6 +221,14 @@ AccessibleCaretManager::UpdateCaretsForSelectionMode()
|
||||
}
|
||||
|
||||
UpdateCaretsForTilt();
|
||||
|
||||
if ((firstCaretResult == PositionChangedResult::Changed ||
|
||||
secondCaretResult == PositionChangedResult::Changed ||
|
||||
firstCaretResult == PositionChangedResult::Invisible ||
|
||||
secondCaretResult == PositionChangedResult::Invisible) &&
|
||||
!mActiveCaret) {
|
||||
DispatchCaretStateChangedEvent(CaretChangedReason::Updateposition);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -253,6 +268,7 @@ AccessibleCaretManager::PressCaret(const nsPoint& aPoint)
|
||||
mOffsetYToCaretLogicalPosition =
|
||||
mActiveCaret->LogicalPosition().y - aPoint.y;
|
||||
SetSelectionDragState(true);
|
||||
DispatchCaretStateChangedEvent(CaretChangedReason::Presscaret);
|
||||
CancelCaretTimeoutTimer();
|
||||
rv = NS_OK;
|
||||
}
|
||||
@ -279,6 +295,7 @@ AccessibleCaretManager::ReleaseCaret()
|
||||
|
||||
mActiveCaret = nullptr;
|
||||
SetSelectionDragState(false);
|
||||
DispatchCaretStateChangedEvent(CaretChangedReason::Releasecaret);
|
||||
LaunchCaretTimeoutTimer();
|
||||
return NS_OK;
|
||||
}
|
||||
@ -291,6 +308,7 @@ AccessibleCaretManager::TapCaret(const nsPoint& aPoint)
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
if (GetCaretMode() == CaretMode::Cursor) {
|
||||
DispatchCaretStateChangedEvent(CaretChangedReason::Taponcaret);
|
||||
rv = NS_OK;
|
||||
}
|
||||
|
||||
@ -331,6 +349,7 @@ AccessibleCaretManager::SelectWordOrShortcut(const nsPoint& aPoint)
|
||||
editingHost, nsContentUtils::eRecurseIntoChildren))) {
|
||||
// Content is empty. No need to select word.
|
||||
AC_LOG("%s, Cannot select word bacause content is empty", __FUNCTION__);
|
||||
DispatchCaretStateChangedEvent(CaretChangedReason::Longpressonemptycontent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user