summaryrefslogtreecommitdiffstats
path: root/layout/base/AccessibleCaretManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layout/base/AccessibleCaretManager.cpp')
-rw-r--r--layout/base/AccessibleCaretManager.cpp33
1 files changed, 11 insertions, 22 deletions
diff --git a/layout/base/AccessibleCaretManager.cpp b/layout/base/AccessibleCaretManager.cpp
index 17597d287d..7c125cf023 100644
--- a/layout/base/AccessibleCaretManager.cpp
+++ b/layout/base/AccessibleCaretManager.cpp
@@ -19,6 +19,7 @@
#include "mozilla/dom/NodeFilterBinding.h"
#include "mozilla/dom/Selection.h"
#include "mozilla/dom/TreeWalker.h"
+#include "mozilla/FocusModel.h"
#include "mozilla/IMEStateManager.h"
#include "mozilla/IntegerPrintfMacros.h"
#include "mozilla/PresShell.h"
@@ -222,27 +223,17 @@ bool AccessibleCaretManager::IsCaretDisplayableInCursorMode(
if (!caret || !caret->IsVisible()) {
return false;
}
-
- int32_t offset = 0;
- nsIFrame* frame =
- nsCaret::GetFrameAndOffset(GetSelection(), nullptr, 0, &offset);
-
- if (!frame) {
- return false;
- }
-
- if (!GetEditingHostForFrame(frame)) {
+ auto frameData =
+ nsCaret::GetFrameAndOffset(nsCaret::CaretPositionFor(GetSelection()));
+ if (!GetEditingHostForFrame(frameData.mFrame)) {
return false;
}
-
if (aOutFrame) {
- *aOutFrame = frame;
+ *aOutFrame = frameData.mFrame;
}
-
if (aOutOffset) {
- *aOutOffset = offset;
+ *aOutOffset = frameData.mOffsetInFrameContent;
}
-
return true;
}
@@ -889,7 +880,7 @@ nsIFrame* AccessibleCaretManager::GetFocusableFrame(nsIFrame* aFrame) const {
// Look for the nearest enclosing focusable frame.
nsIFrame* focusableFrame = aFrame;
while (focusableFrame) {
- if (focusableFrame->IsFocusable(/* aWithMouse = */ true)) {
+ if (focusableFrame->IsFocusable(IsFocusableFlags::WithMouse)) {
break;
}
focusableFrame = focusableFrame->GetParent();
@@ -1333,10 +1324,9 @@ nsPoint AccessibleCaretManager::AdjustDragBoundary(
const nsPoint& aPoint) const {
nsPoint adjustedPoint = aPoint;
- int32_t focusOffset = 0;
- nsIFrame* focusFrame =
- nsCaret::GetFrameAndOffset(GetSelection(), nullptr, 0, &focusOffset);
- Element* editingHost = GetEditingHostForFrame(focusFrame);
+ auto frameData =
+ nsCaret::GetFrameAndOffset(nsCaret::CaretPositionFor(GetSelection()));
+ Element* editingHost = GetEditingHostForFrame(frameData.mFrame);
if (editingHost) {
nsIFrame* editingHostFrame = editingHost->GetPrimaryFrame();
@@ -1471,8 +1461,7 @@ void AccessibleCaretManager::DispatchCaretStateChangedEvent(
// Send isEditable info w/ event detail. This info can help determine
// whether to show cut command on selection dialog or not.
- init.mSelectionEditable =
- commonAncestorFrame && GetEditingHostForFrame(commonAncestorFrame);
+ init.mSelectionEditable = GetEditingHostForFrame(commonAncestorFrame);
init.mBoundingClientRect = domRect;
init.mReason = aReason;