Clicking on the cancel button on readonly and disabled search fields darkens as if...
authorjonlee@apple.com <jonlee@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 6 Jan 2012 21:55:12 +0000 (21:55 +0000)
committerjonlee@apple.com <jonlee@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 6 Jan 2012 21:55:12 +0000 (21:55 +0000)
https://bugs.webkit.org/show_bug.cgi?id=69886
<rdar://problem/10070187>

Reviewed by Adele Peterson.

.:

* ManualTests/search-cancel-button.html: Added.

Source/WebCore:

Tests: ManualTests/search-cancel-button.html

* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintSearchFieldCancelButton): If the input is readonly and/or disabled, force the cell to
render without highlight.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@104332 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
ManualTests/search-cancel-button.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderThemeMac.mm

index a2a8f3a..84e54e5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-01-04  Jon Lee  <jonlee@apple.com>
+
+        Clicking on the cancel button on readonly and disabled search fields darkens as if the search field was editable
+        https://bugs.webkit.org/show_bug.cgi?id=69886
+        <rdar://problem/10070187>
+
+        Reviewed by Adele Peterson.
+
+        * ManualTests/search-cancel-button.html: Added.
+
 2012-01-06  Simon Hausmann  <simon.hausmann@nokia.com>
 
         [Qt] Fix compilation of app code against QtWebKit master header file
diff --git a/ManualTests/search-cancel-button.html b/ManualTests/search-cancel-button.html
new file mode 100644 (file)
index 0000000..23c0c0b
--- /dev/null
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+    <p>https://bugs.webkit.org/show_bug.cgi?id=69886 - Clicking on the cancel button on readonly and disabled search fields darkens as if the search field was editable</p>
+    <p>Clicking on the disabled/readonly search inputs should not render the cancel button dark when you click on them.</p>
+    <p>Normal search:<br/><input type=search value="This is a string of long text." /></p>
+    <p>Disabled search:<br/><input type=search value="This is a string of long text." disabled /></p>
+    <p>Readonly search:<br/><input type=search value="This is a string of long text." readonly /></p>
+    <p>Disabled and readonly search:<br/><input type=search value="This is a string of long text." disabled readonly /></p>
+</body>
+</html>
\ No newline at end of file
index 7b370ff..7bb6daf 100755 (executable)
@@ -1,3 +1,17 @@
+2012-01-04  Jon Lee  <jonlee@apple.com>
+
+        Clicking on the cancel button on readonly and disabled search fields darkens as if the search field was editable
+        https://bugs.webkit.org/show_bug.cgi?id=69886
+        <rdar://problem/10070187>
+
+        Reviewed by Adele Peterson.
+
+        Tests: ManualTests/search-cancel-button.html
+
+        * rendering/RenderThemeMac.mm:
+        (WebCore::RenderThemeMac::paintSearchFieldCancelButton): If the input is readonly and/or disabled, force the cell to
+        render without highlight.
+
 2012-01-06  Simon Fraser  <simon.fraser@apple.com>
 
         Mitigate scrollbar differences when running pixel tests
index a88bd3c..54f13f7 100644 (file)
@@ -1511,7 +1511,9 @@ void RenderThemeMac::adjustSearchFieldStyle(CSSStyleSelector* selector, RenderSt
 
 bool RenderThemeMac::paintSearchFieldCancelButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
 {
-    Node* input = o->node()->shadowAncestorNode();
+    Element* input = toElement(o->node()->shadowAncestorNode());
+    ASSERT(input);
+
     if (!input->renderer()->isBox())
         return false;
 
@@ -1520,8 +1522,12 @@ bool RenderThemeMac::paintSearchFieldCancelButton(RenderObject* o, const PaintIn
 
     NSSearchFieldCell* search = this->search();
 
-    updateActiveState([search cancelButtonCell], o);
-    updatePressedState([search cancelButtonCell], o);
+    if (input->isEnabledFormControl() && !input->isReadOnlyFormControl()) {
+        updateActiveState([search cancelButtonCell], o);
+        updatePressedState([search cancelButtonCell], o);
+    }
+    else if ([[search cancelButtonCell] isHighlighted])
+        [[search cancelButtonCell] setHighlighted:NO];
 
     GraphicsContextStateSaver stateSaver(*paintInfo.context);