Chromium Code Reviews| Index: chrome/renderer/page_click_tracker.cc |
| diff --git a/chrome/renderer/page_click_tracker.cc b/chrome/renderer/page_click_tracker.cc |
| index 2bbb6d0c4deff16e5dff5f0cef33ef336fae73c2..9205ec6c8567f2aec2aa6be3b0b02c7aa56267b3 100644 |
| --- a/chrome/renderer/page_click_tracker.cc |
| +++ b/chrome/renderer/page_click_tracker.cc |
| @@ -79,8 +79,6 @@ void PageClickTracker::DidHandleMouseEvent(const WebMouseEvent& event) { |
| if (listener->InputElementClicked(input_element, was_focused_, is_focused)) |
| break; |
| } |
| - |
| - last_node_clicked_.reset(); |
| } |
| void PageClickTracker::AddListener(PageClickListener* listener) { |
| @@ -109,8 +107,6 @@ void PageClickTracker::FrameDetached(WebKit::WebFrame* frame) { |
| } |
| void PageClickTracker::handleEvent(const WebDOMEvent& event) { |
| - last_node_clicked_.reset(); |
| - |
| if (!event.isMouseEvent()) |
| return; |
| @@ -123,10 +119,27 @@ void PageClickTracker::handleEvent(const WebDOMEvent& event) { |
| // We'll get a notification once the mouse event has been processed |
| // (DidHandleMouseEvent), we'll notify the listener at that point. |
| WebNode node = mouse_event.target(); |
| + |
| + // The selected text field has lost focus. |
| + if (!last_node_clicked_.isNull() && last_node_clicked_ != node) |
| + SelectedTextFieldLostFocus(); |
|
Ilya Sherman
2011/10/25 20:11:50
I think in order to handle the keyboard-then-mouse
csharp1
2011/10/27 15:20:58
Done.
|
| + |
| // We are only interested in text field clicks. |
| - if (GetTextWebInputElement(node).isNull()) |
| + if (GetTextWebInputElement(node).isNull()) { |
| + last_node_clicked_.reset(); |
| + |
| return; |
| + } |
| last_node_clicked_ = node; |
| was_focused_ = (render_view()->GetFocusedNode() == last_node_clicked_); |
| } |
| + |
| +void PageClickTracker::SelectedTextFieldLostFocus() { |
| + ObserverListBase<PageClickListener>::Iterator it(listeners_); |
| + PageClickListener* listener; |
| + while ((listener = it.GetNext()) != NULL) { |
| + if (listener->InputElementLostFocus()) |
| + break; |
| + } |
| +} |