Title: [136689] trunk/Source/WebKit/blackberry
Revision
136689
Author
commit-qu...@webkit.org
Date
2012-12-05 07:52:50 -0800 (Wed, 05 Dec 2012)

Log Message

[BlackBerry] Avoid showing FCC on empty text field in a different way
https://bugs.webkit.org/show_bug.cgi?id=104019

Patch by Yongxin Dai <yo...@rim.com> on 2012-12-05
Reviewed by Rob Buis.

PR #222796

Add text field empty flag along with the caret change notification so that
FineCursorContnrol is able to avoid showing FCC on empty text filed.
Previous approach, notifying client with empty caret on empty text field,
causes problem. Its code is removed.

Reviewed Internally by Mike Fenton.

* Api/WebPageClient.h:
* WebKitSupport/SelectionHandler.cpp:
(BlackBerry::WebKit::SelectionHandler::caretPositionChanged):

Modified Paths

Diff

Modified: trunk/Source/WebKit/blackberry/Api/WebPageClient.h (136688 => 136689)


--- trunk/Source/WebKit/blackberry/Api/WebPageClient.h	2012-12-05 15:51:13 UTC (rev 136688)
+++ trunk/Source/WebKit/blackberry/Api/WebPageClient.h	2012-12-05 15:52:50 UTC (rev 136689)
@@ -155,7 +155,7 @@
     virtual void notifySelectionDetailsChanged(const Platform::IntRect& documentStartRect, const Platform::IntRect& documentEndRect, const Platform::IntRectRegion& documentRegion, bool overrideTouchHandling = false) = 0;
     virtual void cancelSelectionVisuals() = 0;
     virtual void notifySelectionHandlesReversed() = 0;
-    virtual void notifyCaretChanged(const Platform::IntRect& documentCaretRect, bool userTouchTriggered, bool isSingleLineInput = false, const Platform::IntRect& singleLineDocumentBoundingBox = Platform::IntRect()) = 0;
+    virtual void notifyCaretChanged(const Platform::IntRect& documentCaretRect, bool userTouchTriggered, bool isSingleLineInput = false, const Platform::IntRect& singleLineDocumentBoundingBox = Platform::IntRect(), bool textFieldIsEmpty = false) = 0;
 
     virtual void cursorChanged(Platform::CursorType, const char* url, const Platform::IntPoint& hotSpotInImage) = 0;
 

Modified: trunk/Source/WebKit/blackberry/ChangeLog (136688 => 136689)


--- trunk/Source/WebKit/blackberry/ChangeLog	2012-12-05 15:51:13 UTC (rev 136688)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2012-12-05 15:52:50 UTC (rev 136689)
@@ -1,3 +1,23 @@
+2012-12-05  Yongxin Dai  <yo...@rim.com>
+
+        [BlackBerry] Avoid showing FCC on empty text field in a different way
+        https://bugs.webkit.org/show_bug.cgi?id=104019
+
+        Reviewed by Rob Buis.
+
+        PR #222796
+
+        Add text field empty flag along with the caret change notification so that
+        FineCursorContnrol is able to avoid showing FCC on empty text filed.
+        Previous approach, notifying client with empty caret on empty text field,
+        causes problem. Its code is removed.
+
+        Reviewed Internally by Mike Fenton.
+
+        * Api/WebPageClient.h:
+        * WebKitSupport/SelectionHandler.cpp:
+        (BlackBerry::WebKit::SelectionHandler::caretPositionChanged):
+
 2012-12-04  Sean Wang  <xuewen.w...@torchmobile.com.cn>
         [BlackBerry] VKB flickers in and out when tapping on webview after text selection on URL bar
         https://bugs.webkit.org/show_bug.cgi?id=103874

Modified: trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp (136688 => 136689)


--- trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp	2012-12-05 15:51:13 UTC (rev 136688)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp	2012-12-05 15:52:50 UTC (rev 136689)
@@ -977,12 +977,9 @@
     SelectionLog(LogLevelInfo, "SelectionHandler::caretPositionChanged");
 
     WebCore::IntRect caretLocation;
-    // If the input field is empty, we always turn off the caret.
     // If the input field is not active, we must be turning off the caret.
-    bool emptyInputField = m_webPage->m_inputHandler->elementText().isEmpty();
-    if (emptyInputField || (!m_webPage->m_inputHandler->isInputMode() && m_caretActive)) {
-        if (!emptyInputField)
-            m_caretActive = false;
+    if (!m_webPage->m_inputHandler->isInputMode() && m_caretActive) {
+        m_caretActive = false;
         // Send an empty caret change to turn off the caret.
         m_webPage->m_client->notifyCaretChanged(caretLocation, m_webPage->m_touchEventHandler->lastFatFingersResult().isTextInput() /* userTouchTriggered */);
         return;
@@ -1018,10 +1015,12 @@
         nodeBoundingBox.intersect(clippingRectForContent);
     }
 
-    SelectionLog(LogLevelInfo, "SelectionHandler::caretPositionChanged: %s line input, single line bounding box (%d, %d) %dx%d",
-        isSingleLineInput ? "single" : "multi", nodeBoundingBox.x(), nodeBoundingBox.y(), nodeBoundingBox.width(), nodeBoundingBox.height());
+    SelectionLog(LogLevelInfo, "SelectionHandler::caretPositionChanged: %s line input, single line bounding box (%d, %d) %dx%d%s",
+        isSingleLineInput ? "single" : "multi", nodeBoundingBox.x(), nodeBoundingBox.y(), nodeBoundingBox.width(), nodeBoundingBox.height(),
+        m_webPage->m_inputHandler->elementText().isEmpty() ? ", empty text field" : "");
 
-    m_webPage->m_client->notifyCaretChanged(caretLocation, m_webPage->m_touchEventHandler->lastFatFingersResult().isTextInput() /* userTouchTriggered */, isSingleLineInput, nodeBoundingBox);
+    m_webPage->m_client->notifyCaretChanged(caretLocation, m_webPage->m_touchEventHandler->lastFatFingersResult().isTextInput() /* userTouchTriggered */,
+        isSingleLineInput, nodeBoundingBox, m_webPage->m_inputHandler->elementText().isEmpty());
 }
 
 bool SelectionHandler::selectionContains(const WebCore::IntPoint& point)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to