本文整理汇总了C++中FocusCandidate::inScrollableContainer方法的典型用法代码示例。如果您正苦于以下问题:C++ FocusCandidate::inScrollableContainer方法的具体用法?C++ FocusCandidate::inScrollableContainer怎么用?C++ FocusCandidate::inScrollableContainer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FocusCandidate
的用法示例。
在下文中一共展示了FocusCandidate::inScrollableContainer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateFocusCandidateIfCloser
static void updateFocusCandidateIfCloser(Node* focusedNode, const FocusCandidate& candidate, FocusCandidate& closest)
{
// First, check the common case: neither candidate nor closest are
// inside scrollable content, then no need to care about enclosingScrollableBox
// heuristics or parent{Distance,Alignment}, but only distance and alignment.
if (!candidate.inScrollableContainer() && !closest.inScrollableContainer()) {
updateFocusCandidateInSameContainer(candidate, closest);
return;
}
bool sameContainer = candidate.document() == closest.document() && candidate.enclosingScrollableBox == closest.enclosingScrollableBox;
// Second, if candidate and closest are in the same "container" (i.e. {i}frame or any
// scrollable block element), we can handle them as common case.
if (sameContainer) {
updateFocusCandidateInSameContainer(candidate, closest);
return;
}
// Last, we are considering moving to a candidate located in a different enclosing
// scrollable box than closest.
bool isInInnerDocument = !isInRootDocument(focusedNode);
bool sameContainerAsCandidate = isInInnerDocument ? focusedNode->document() == candidate.document() :
focusedNode->isDescendantOf(candidate.enclosingScrollableBox);
bool sameContainerAsClosest = isInInnerDocument ? focusedNode->document() == closest.document() :
focusedNode->isDescendantOf(closest.enclosingScrollableBox);
// sameContainerAsCandidate and sameContainerAsClosest are mutually exclusive.
ASSERT(!(sameContainerAsCandidate && sameContainerAsClosest));
if (sameContainerAsCandidate) {
closest = candidate;
return;
}
if (sameContainerAsClosest) {
// Nothing to be done.
return;
}
// NOTE: !sameContainerAsCandidate && !sameContainerAsClosest
// If distance is shorter, and we are talking about scrollable container,
// lets compare parent distance and alignment before anything.
if (candidate.distance < closest.distance) {
if (candidate.alignment >= closest.parentAlignment
|| candidate.parentAlignment == closest.parentAlignment) {
closest = candidate;
return;
}
} else if (candidate.parentDistance < closest.distance) {
if (candidate.parentAlignment >= closest.alignment) {
closest = candidate;
return;
}
}
}