Implement getting message selection for quoting and selection in WK2.

* src/client/conversation-viewer/conversation-web-view.vala
  (ConversationWebView): Remove has_selection method since we are
  using the signal to specify if a selection was found or not. Update
  call sites to use that.
  (ConversationWebView::get_selection_for_find,
  ConversationWebView::get_selection_for_quoting): Implement using calls
  to web process JS methods.

* src/client/application/geary-controller.vala
  (GearyController::create_reply_forward_widget): If we have a possible
  message view to quote from, handle constructing the compser widget
  asynchronously, when we know if we have a quote or not.

* src/client/conversation-viewer/conversation-viewer.vala:
  (ConversationViewer::on_find_mode_changed): Handle getting text
  selection for finds asynchonously.

* src/client/components/client-web-view.vala
  (ClientWebView::get_string_result): New helper for getting string
  values from JS calls.

* src/client/conversation-viewer/conversation-email.vala
  (ConversationEmail::get_selection_for_quoting,
  ConversationEmail::get_selection_for_find): Handxle errors when
  obtaining selections from a message view.

* src/client/conversation-viewer/conversation-message.vala: Remove
  methods that were simply passed through to the web view anyway. Update
  call sies.

* src/client/web-process/util-conversation.vala: Port all remaining
  functions to JS, remove.

* bindings/vapi/javascriptcore-4.0.vapi: Add methods needed to get
  strings out of WebKit.JavascriptResult instances.

* ui/conversation-web-view.js: Implement selection functions in JS, minor
  cleanup.
This commit is contained in:
Michael James Gratton 2016-12-01 12:06:44 +11:00
parent 3f90f7785a
commit 5b8c68f5fa
10 changed files with 137 additions and 127 deletions

View file

@ -19,6 +19,9 @@ namespace JS {
[CCode (cname = "JSValueToNumber")]
public double to_number(JS.Value value, out JS.Value exception);
[CCode (cname = "JSValueToStringCopy")]
public String to_string_copy(JS.Value value, out JS.Value exception);
[CCode (cname = "JSGlobalContextRelease")]
public bool release();
}
@ -68,6 +71,21 @@ namespace JS {
[CCode (cname = "JSStringCreateWithUTF8CString")]
public String.create_with_utf8_cstring(string str);
[CCode (cname = "JSStringGetLength")]
public int String.get_length();
[CCode (cname = "JSStringGetMaximumUTF8CStringSize")]
public int String.get_maximum_utf8_cstring_size();
[CCode (cname = "JSStringGetUTF8CString")]
public void String.get_utf8_cstring(string* buffer, int bufferSize);
[CCode (cname = "JSStringRetain")]
public void String.retain();
[CCode (cname = "JSStringRelease")]
public void String.release();
}
}