Title: [108721] trunk/Source/WebKit/blackberry
- Revision
- 108721
- Author
- [email protected]
- Date
- 2012-02-23 20:28:34 -0800 (Thu, 23 Feb 2012)
Log Message
2012-02-19 Antonio Gomes <[email protected]>
Fat fingers - Add a clearer way to distinguish the node we want (shadow or non-shadow)
https://bugs.webkit.org/show_bug.cgi?id=79256
PR #127814 / MKS_2587410
Reviewed by Rob Buis.
Patch adds a cleaner way for call sites of FatFingersResult to
query for the appropriated target node: shadow or non-shadow DOM nodes.
It also renames FatFingersResults::validNode to ::node, assuming
that "invalid" nodes are not applicable in any context.
* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::clearDocumentData):
(BlackBerry::WebKit::WebPagePrivate::contextNode):
(BlackBerry::WebKit::WebPagePrivate::handleMouseEvent):
* WebKitSupport/FatFingers.h:
(FatFingersResult):
(BlackBerry::WebKit::FatFingersResult::node):
(BlackBerry::WebKit::FatFingersResult::nodeAsElementIfApplicable):
* WebKitSupport/SelectionHandler.cpp:
(BlackBerry::WebKit::SelectionHandler::selectAtPoint):
* WebKitSupport/TouchEventHandler.cpp:
(BlackBerry::WebKit::TouchEventHandler::touchHoldEvent):
(BlackBerry::WebKit::TouchEventHandler::handleTouchPoint):
Modified Paths
Diff
Modified: trunk/Source/WebKit/blackberry/Api/WebPage.cpp (108720 => 108721)
--- trunk/Source/WebKit/blackberry/Api/WebPage.cpp 2012-02-24 04:04:33 UTC (rev 108720)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.cpp 2012-02-24 04:28:34 UTC (rev 108721)
@@ -2259,7 +2259,7 @@
// Check for text input.
if (isTouching && lastFatFingersResult.isTextInput())
- return lastFatFingersResult.node(ShadowContentNotAllowed);
+ return lastFatFingersResult.node(FatFingersResult::ShadowContentNotAllowed);
IntPoint contentPos;
if (isTouching)
@@ -2269,7 +2269,7 @@
if (strategy == RectBased) {
FatFingersResult result = FatFingers(this, lastFatFingersResult.adjustedPosition(), FatFingers::Text).findBestPoint();
- return result.node(ShadowContentNotAllowed);
+ return result.node(FatFingersResult::ShadowContentNotAllowed);
}
HitTestResult result = eventHandler->hitTestResultAtPoint(contentPos, false /*allowShadowContent*/);
@@ -3461,7 +3461,7 @@
const FatFingersResult lastFatFingersResult = m_touchEventHandler->lastFatFingersResult();
// Fat fingers can deal with shadow content.
- node = lastFatFingersResult.node(ShadowContentNotAllowed);
+ node = lastFatFingersResult.node(FatFingersResult::ShadowContentNotAllowed);
}
if (!node) {
Modified: trunk/Source/WebKit/blackberry/ChangeLog (108720 => 108721)
--- trunk/Source/WebKit/blackberry/ChangeLog 2012-02-24 04:04:33 UTC (rev 108720)
+++ trunk/Source/WebKit/blackberry/ChangeLog 2012-02-24 04:28:34 UTC (rev 108721)
@@ -1,3 +1,31 @@
+2012-02-19 Antonio Gomes <[email protected]>
+
+ Fat fingers - Add a clearer way to distinguish the node we want (shadow or non-shadow)
+ https://bugs.webkit.org/show_bug.cgi?id=79256
+ PR #127814 / MKS_2587410
+
+ Reviewed by Rob Buis.
+
+ Patch adds a cleaner way for call sites of FatFingersResult to
+ query for the appropriated target node: shadow or non-shadow DOM nodes.
+
+ It also renames FatFingersResults::validNode to ::node, assuming
+ that "invalid" nodes are not applicable in any context.
+
+ * Api/WebPage.cpp:
+ (BlackBerry::WebKit::WebPagePrivate::clearDocumentData):
+ (BlackBerry::WebKit::WebPagePrivate::contextNode):
+ (BlackBerry::WebKit::WebPagePrivate::handleMouseEvent):
+ * WebKitSupport/FatFingers.h:
+ (FatFingersResult):
+ (BlackBerry::WebKit::FatFingersResult::node):
+ (BlackBerry::WebKit::FatFingersResult::nodeAsElementIfApplicable):
+ * WebKitSupport/SelectionHandler.cpp:
+ (BlackBerry::WebKit::SelectionHandler::selectAtPoint):
+ * WebKitSupport/TouchEventHandler.cpp:
+ (BlackBerry::WebKit::TouchEventHandler::touchHoldEvent):
+ (BlackBerry::WebKit::TouchEventHandler::handleTouchPoint):
+
2012-02-23 Jacky Jiang <[email protected]>
[BlackBerry] Upstream BlackBerry API web page related files
Modified: trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.h (108720 => 108721)
--- trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.h 2012-02-24 04:04:33 UTC (rev 108720)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.h 2012-02-24 04:28:34 UTC (rev 108721)
@@ -50,6 +50,7 @@
class FatFingersResult {
public:
+
FatFingersResult(const WebCore::IntPoint& p = WebCore::IntPoint::zero())
: m_originalPosition(p)
, m_adjustedPosition(p)
@@ -74,12 +75,35 @@
bool positionWasAdjusted() const { return m_isValid && m_positionWasAdjusted; }
bool isTextInput() const { return m_isValid && !!m_nodeUnderFatFinger && m_isTextInput; }
bool isValid() const { return m_isValid; }
- WebCore::Node* validNode() const { return m_nodeUnderFatFinger && m_nodeUnderFatFinger->inDocument() ? m_nodeUnderFatFinger.get() : 0; }
- WebCore::Element* nodeAsElementIfApplicable() const
+
+ enum ContentType { ShadowContentAllowed, ShadowContentNotAllowed };
+
+ WebCore::Node* node(ContentType type = ShadowContentAllowed) const
{
- return static_cast<WebCore::Element*>(m_nodeUnderFatFinger && m_nodeUnderFatFinger->inDocument() && m_nodeUnderFatFinger->isElementNode() ? m_nodeUnderFatFinger.get() : 0);
+ if (!m_nodeUnderFatFinger || !m_nodeUnderFatFinger->inDocument())
+ return 0;
+
+ WebCore::Node* result = m_nodeUnderFatFinger.get();
+
+ if (type == ShadowContentAllowed)
+ return result;
+
+ // Shadow trees can be nested.
+ while (result->isInShadowTree())
+ result = toElement(result->shadowAncestorNode());
+
+ return result;
}
+ WebCore::Element* nodeAsElementIfApplicable(ContentType type = ShadowContentAllowed) const
+ {
+ WebCore::Node* result = node(type);
+ if (!result || !result->isElementNode())
+ return 0;
+
+ return static_cast<WebCore::Element*>(result);
+ }
+
private:
friend class WebKit::FatFingers;
friend class WebKit::TouchEventHandler;
Modified: trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp (108720 => 108721)
--- trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp 2012-02-24 04:04:33 UTC (rev 108720)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp 2012-02-24 04:28:34 UTC (rev 108721)
@@ -539,7 +539,7 @@
// FIXME: Factory this get right fat finger code into a helper.
const FatFingersResult lastFatFingersResult = m_webPage->m_touchEventHandler->lastFatFingersResult();
if (lastFatFingersResult.positionWasAdjusted() && lastFatFingersResult.nodeAsElementIfApplicable()) {
- targetNode = lastFatFingersResult.validNode();
+ targetNode = lastFatFingersResult.node(FatFingersResult::ShadowContentNotAllowed);
targetPosition = lastFatFingersResult.adjustedPosition();
} else {
FatFingersResult newFatFingersResult = FatFingers(m_webPage, location, FatFingers::Text).findBestPoint();
@@ -547,7 +547,7 @@
return;
targetPosition = newFatFingersResult.adjustedPosition();
- targetNode = newFatFingersResult.validNode();
+ targetNode = newFatFingersResult.node(FatFingersResult::ShadowContentNotAllowed);
}
ASSERT(targetNode);
Modified: trunk/Source/WebKit/blackberry/WebKitSupport/TouchEventHandler.cpp (108720 => 108721)
--- trunk/Source/WebKit/blackberry/WebKitSupport/TouchEventHandler.cpp 2012-02-24 04:04:33 UTC (rev 108720)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/TouchEventHandler.cpp 2012-02-24 04:28:34 UTC (rev 108721)
@@ -168,7 +168,7 @@
handleFatFingerPressed();
// Clear the focus ring indication if tap-and-hold'ing on a link.
- if (m_lastFatFingersResult.validNode() && m_lastFatFingersResult.validNode()->isLink())
+ if (m_lastFatFingersResult.node() && m_lastFatFingersResult.node()->isLink())
m_webPage->clearFocusNode();
}
@@ -186,13 +186,13 @@
m_lastFatFingersResult = FatFingers(m_webPage, contentPos, FatFingers::ClickableElement).findBestPoint();
Element* elementUnderFatFinger = 0;
- if (m_lastFatFingersResult.positionWasAdjusted() && m_lastFatFingersResult.validNode()) {
- ASSERT(m_lastFatFingersResult.validNode()->isElementNode());
+ if (m_lastFatFingersResult.positionWasAdjusted() && m_lastFatFingersResult.node()) {
+ ASSERT(m_lastFatFingersResult.node()->isElementNode());
elementUnderFatFinger = m_lastFatFingersResult.nodeAsElementIfApplicable();
}
// Set or reset the touch mode.
- Element* possibleTargetNodeForMouseMoveEvents = static_cast<Element*>(m_lastFatFingersResult.positionWasAdjusted() ? elementUnderFatFinger : m_lastFatFingersResult.validNode());
+ Element* possibleTargetNodeForMouseMoveEvents = static_cast<Element*>(m_lastFatFingersResult.positionWasAdjusted() ? elementUnderFatFinger : m_lastFatFingersResult.node());
m_convertTouchToMouse = shouldConvertTouchToMouse(possibleTargetNodeForMouseMoveEvents);
if (elementUnderFatFinger)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes