Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5389)

Unified Diff: chrome/renderer/render_view.cc

Issue 6289009: [Mac] Implement the system dictionary popup by implementing NSTextInput methods. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Plumb selection rannge with ViewHostMsg_SelectionChanged Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/render_view.cc
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index fe84d68780a8203ff26f63d97d937200da52ed97..44e3b801c1c9d448e5d307b3caf82ed4e93de8d3 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -195,6 +195,7 @@
#include "third_party/WebKit/Source/WebKit/chromium/public/linux/WebRenderTheme.h"
#elif defined(OS_MACOSX)
#include "skia/ext/skia_utils_mac.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/mac/WebTextHelper.h"
#endif
using WebKit::WebAccessibilityCache;
@@ -1070,6 +1071,11 @@ bool RenderView::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_WindowFrameChanged, OnWindowFrameChanged)
IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionConfirmed,
OnPluginImeCompositionConfirmed)
+ IPC_MESSAGE_HANDLER(ViewMsg_CharacterIndexForPoint,
+ OnCharacterIndexForPoint)
+ IPC_MESSAGE_HANDLER(ViewMsg_FirstRectForCharacterRange,
+ OnFirstRectForCharacterRange)
+ IPC_MESSAGE_HANDLER(ViewMsg_StringForRange, OnStringForRange)
#endif
IPC_MESSAGE_HANDLER(ViewMsg_SetEditCommandsForNextKeyEvent,
OnSetEditCommandsForNextKeyEvent)
@@ -2241,18 +2247,19 @@ void RenderView::didChangeSelection(bool is_empty_selection) {
// Sometimes we get repeated didChangeSelection calls from webkit when
// the selection hasn't actually changed. We don't want to report these
// because it will cause us to continually claim the X clipboard.
- const std::string& this_selection =
- webview()->focusedFrame()->selectionAsText().utf8();
+ WebFrame* frame = webview()->focusedFrame();
+ const std::string& this_selection = frame->selectionAsText().utf8();
if (this_selection == last_selection_)
return;
+ WebRange range = frame->selectionRange();
Send(new ViewHostMsg_SelectionChanged(routing_id_,
- this_selection));
+ this_selection, range.startOffset(), range.endOffset()));
last_selection_ = this_selection;
} else {
last_selection_.clear();
Send(new ViewHostMsg_SelectionChanged(routing_id_,
- last_selection_));
+ last_selection_, 0, 0));
James Su 2011/01/20 23:46:06 As caretRect_ in RWHVM is not used anymore. We nee
}
#endif // defined(OS_POSIX)
}
@@ -5657,6 +5664,24 @@ void RenderView::OnSelectPopupMenuItem(int selected_index) {
external_popup_menu_->DidSelectItem(selected_index);
external_popup_menu_.reset();
}
+
+void RenderView::OnCharacterIndexForPoint(gfx::Point point) {
+ WebKit::WebTextHelper helper(webview()->mainFrame());
+ uint index = helper.characterIndexForPoint(point.x(), point.y());
+ Send(new ViewHostMsg_GotCharacterIndexForPoint(routing_id(), index));
+}
+
+void RenderView::OnFirstRectForCharacterRange(uint location, uint length) {
+ WebKit::WebTextHelper helper(webview()->mainFrame());
+ gfx::Rect rect(helper.firstRectForRange(location, length));
+ Send(new ViewHostMsg_GotFirstRectForRange(routing_id(), rect));
+}
+
+void RenderView::OnStringForRange(uint location, uint length) {
+ WebKit::WebTextHelper helper(webview()->mainFrame());
+ WebKit::WebString webstring(helper.substringInRange(location, length));
+ Send(new ViewHostMsg_GotStringForRange(routing_id(), webstring));
+}
#endif
void RenderView::AddErrorToRootConsole(const string16& message) {

Powered by Google App Engine
This is Rietveld 408576698