Index: chrome/renderer/render_view.cc |
=================================================================== |
--- chrome/renderer/render_view.cc (revision 70404) |
+++ chrome/renderer/render_view.cc (working copy) |
@@ -1625,18 +1625,12 @@ |
} |
void RenderView::OnScrollFocusedEditableNodeIntoView() { |
- if (!webview()) |
- return; |
- WebFrame* focused_frame = webview()->focusedFrame(); |
- if (focused_frame) { |
- WebDocument doc = focused_frame->document(); |
- if (!doc.isNull()) { |
- WebNode node = doc.focusedNode(); |
- if (IsEditableNode(node)) |
- // TODO(varunjain): Change webkit API to scroll a particular node into |
- // view and use that API here instead. |
- webview()->scrollFocusedNodeIntoView(); |
- } |
+ WebNode node; |
+ if (GetFocusedNode(node)) { |
+ if (IsEditableNode(node)) |
+ // TODO(varunjain): Change webkit API to scroll a particular node into |
+ // view and use that API here instead. |
+ webview()->scrollFocusedNodeIntoView(); |
} |
} |
@@ -2406,6 +2400,10 @@ |
word)); |
} |
+void RenderView::continuousSpellCheckingEnabledStateChanged() { |
+ UpdateToggleSpellCheckCommandState(); |
+} |
+ |
bool RenderView::runFileChooser( |
const WebKit::WebFileChooserParams& params, |
WebFileChooserCompletion* chooser_completion) { |
@@ -2532,6 +2530,26 @@ |
} |
} |
+void RenderView::UpdateToggleSpellCheckCommandState() { |
+ bool is_enabled = false; |
+ WebNode node; |
+ if (GetFocusedNode(node)) |
+ is_enabled = IsEditableNode(node); |
+ |
+ int checked_state = 0; |
+ if (is_enabled && webview()) { |
+ WebFrame* frame = webview()->focusedFrame(); |
+ if (frame->isContinuousSpellCheckingEnabled()) { |
+ checked_state = 1; |
+ } |
+ } |
+ |
+ Send(new ViewHostMsg_CommandStateChanged(routing_id_, |
+ "ToggleSpellCheck", |
+ is_enabled, |
+ checked_state)); |
+} |
+ |
void RenderView::StartNavStateSyncTimerIfNecessary() { |
int delay; |
if (send_content_state_immediately_) |
@@ -2608,6 +2626,8 @@ |
webview()->accessibilityObject(), |
WebKit::WebAccessibilityNotificationFocusedUIElementChanged); |
} |
+ |
+ UpdateToggleSpellCheckCommandState(); |
} |
void RenderView::navigateBackForwardSoon(int offset) { |
@@ -4572,6 +4592,21 @@ |
return frame; |
} |
+bool RenderView::GetFocusedNode(WebNode& node) const { |
+ if (!webview()) |
+ return false; |
+ WebFrame* focused_frame = webview()->focusedFrame(); |
+ if (focused_frame) { |
+ WebDocument doc = focused_frame->document(); |
+ if (!doc.isNull()) { |
+ node = doc.focusedNode(); |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+} |
+ |
void RenderView::SetSuggestions(const std::vector<std::string>& suggestions) { |
// Explicitly allow empty vector to be sent to the browser. |
Send(new ViewHostMsg_SetSuggestions(routing_id_, page_id_, suggestions)); |