[evolution/wip/webkit2] EHTMLEditorView - Replace the preedit-* signals with compositionstart and compositionend HTML events
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] EHTMLEditorView - Replace the preedit-* signals with compositionstart and compositionend HTML events
- Date: Wed, 9 Dec 2015 15:13:31 +0000 (UTC)
commit a3ff8c2cc38bb5e2e412a9d35725603dc8a4a5fc
Author: Tomas Popela <tpopela redhat com>
Date: Wed Dec 9 16:04:31 2015 +0100
EHTMLEditorView - Replace the preedit-* signals with compositionstart and compositionend HTML events
e-util/e-html-editor-view.c | 25 ----------
.../composer/e-html-editor-view-dom-functions.c | 40 ++++++++++++++++-
.../composer/e-html-editor-web-extension.c | 47 +++++---------------
.../composer/e-html-editor-web-extension.h | 18 ++++----
4 files changed, 60 insertions(+), 70 deletions(-)
---
diff --git a/e-util/e-html-editor-view.c b/e-util/e-html-editor-view.c
index c009956..cefe2b6 100644
--- a/e-util/e-html-editor-view.c
+++ b/e-util/e-html-editor-view.c
@@ -1605,31 +1605,14 @@ html_editor_view_drag_end_cb (EHTMLEditorView *view,
{
e_html_editor_view_call_simple_extension_function (view, "DOMDragAndDropEnd");
}
-/* FIXME WK2
-static void
-im_context_preedit_start_cb (GtkIMContext *context,
- EHTMLEditorView *view)
-{
- e_html_editor_view_call_simple_extension_function_sync (
- view, "DOMIMContextPreEditStart");
-}
static void
-im_context_preedit_end_cb (GtkIMContext *context,
- EHTMLEditorView *view)
-{
- e_html_editor_view_call_simple_extension_function_sync (
- view, "DOMIMContextPreEditEnd");
-}
-*/
-static void
e_html_editor_view_init (EHTMLEditorView *view)
{
WebKitSettings *settings;
GSettings *g_settings;
GSettingsSchema *settings_schema;
/* FIXME WK2
- GtkIMContext *im_context;
ESpellChecker *checker;
gchar **languages;
gchar *comma_separated;
@@ -1710,14 +1693,6 @@ e_html_editor_view_init (EHTMLEditorView *view)
view->priv->convert_in_situ = FALSE;
view->priv->current_user_stylesheet = NULL;
-/* FIXME WK2
- g_object_get (WEBKIT_WEB_VIEW (view), "im-context", &im_context, NULL);
- g_signal_connect (
- im_context, "preedit-start",
- G_CALLBACK (im_context_preedit_start_cb), view);
- g_signal_connect (
- im_context, "preedit-end",
- G_CALLBACK (im_context_preedit_end_cb), view);*/
}
void
diff --git a/web-extensions/composer/e-html-editor-view-dom-functions.c
b/web-extensions/composer/e-html-editor-view-dom-functions.c
index eb25136..49884ba 100644
--- a/web-extensions/composer/e-html-editor-view-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-view-dom-functions.c
@@ -2514,7 +2514,7 @@ body_keyup_event_cb (WebKitDOMElement *element,
WebKitDOMDocument *document;
document = webkit_dom_node_get_owner_document (WEBKIT_DOM_NODE (element));
- if (!e_html_editor_web_extension_is_im_input_in_progress (extension))
+ if (!e_html_editor_web_extension_is_composition_in_progress (extension))
dom_register_input_event_listener_on_body (document, extension);
if (!dom_selection_is_collapsed (document))
@@ -4253,6 +4253,30 @@ clear_attributes (WebKitDOMDocument *document)
}
static void
+body_compositionstart_event_cb (WebKitDOMElement *element,
+ WebKitDOMUIEvent *event,
+ EHTMLEditorWebExtension *extension)
+{
+ WebKitDOMDocument *document;
+
+ document = webkit_dom_node_get_owner_document (WEBKIT_DOM_NODE (element));
+ e_html_editor_web_extension_set_composition_in_progress (extension, TRUE);
+ dom_remove_input_event_listener_from_body (document, extension);
+}
+
+static void
+body_compositionend_event_cb (WebKitDOMElement *element,
+ WebKitDOMUIEvent *event,
+ EHTMLEditorWebExtension *extension)
+{
+ WebKitDOMDocument *document;
+
+ document = webkit_dom_node_get_owner_document (WEBKIT_DOM_NODE (element));
+ e_html_editor_web_extension_set_composition_in_progress (extension, FALSE);
+ dom_remove_input_event_listener_from_body (document, extension);
+}
+
+static void
register_html_events_handlers (WebKitDOMHTMLElement *body,
EHTMLEditorWebExtension *extension)
{
@@ -4276,6 +4300,20 @@ register_html_events_handlers (WebKitDOMHTMLElement *body,
G_CALLBACK (body_keyup_event_cb),
FALSE,
extension);
+
+ webkit_dom_event_target_add_event_listener (
+ WEBKIT_DOM_EVENT_TARGET (body),
+ "compositionstart",
+ G_CALLBACK (body_compositionstart_event_cb),
+ FALSE,
+ extension);
+
+ webkit_dom_event_target_add_event_listener (
+ WEBKIT_DOM_EVENT_TARGET (body),
+ "compositionend",
+ G_CALLBACK (body_compositionend_event_cb),
+ FALSE,
+ extension);
}
void
diff --git a/web-extensions/composer/e-html-editor-web-extension.c
b/web-extensions/composer/e-html-editor-web-extension.c
index 2100ba4..d1a6117 100644
--- a/web-extensions/composer/e-html-editor-web-extension.c
+++ b/web-extensions/composer/e-html-editor-web-extension.c
@@ -92,7 +92,7 @@ struct _EHTMLEditorWebExtensionPrivate {
gboolean is_message_from_selection;
gboolean remove_initial_input_line;
gboolean dont_save_history_in_body_input;
- gboolean im_input_in_progress;
+ gboolean composition_in_progress;
GHashTable *inline_images;
@@ -539,12 +539,6 @@ static const char introspection_xml[] =
" <arg type='i' name='y' direction='in'/>"
" <arg type='b' name='cancel_if_not_collapsed' direction='in'/>"
" </method>"
-" <method name='DOMIMContextPreEditStart'>"
-" <arg type='t' name='page_id' direction='in'/>"
-" </method>"
-" <method name='DOMIMContextPreEditEnd'>"
-" <arg type='t' name='page_id' direction='in'/>"
-" </method>"
" <method name='DOMInsertSmiley'>"
" <arg type='t' name='page_id' direction='in'/>"
" <arg type='s' name='smiley_name' direction='in'/>"
@@ -2027,30 +2021,6 @@ handle_method_call (GDBusConnection *connection,
document = webkit_web_page_get_dom_document (web_page);
dom_drag_and_drop_end (document, extension);
g_dbus_method_invocation_return_value (invocation, NULL);
- } else if (g_strcmp0 (method_name, "DOMIMContextPreEditStart") == 0) {
- g_variant_get (parameters, "(t)", &page_id);
-
- web_page = get_webkit_web_page_or_return_dbus_error (
- invocation, web_extension, page_id);
- if (!web_page)
- goto error;
-
- extension->priv->im_input_in_progress = TRUE;
- document = webkit_web_page_get_dom_document (web_page);
- dom_remove_input_event_listener_from_body (document, extension);
- g_dbus_method_invocation_return_value (invocation, NULL);
- } else if (g_strcmp0 (method_name, "DOMIMContextPreEditEnd") == 0) {
- g_variant_get (parameters, "(t)", &page_id);
-
- web_page = get_webkit_web_page_or_return_dbus_error (
- invocation, web_extension, page_id);
- if (!web_page)
- goto error;
-
- extension->priv->im_input_in_progress = FALSE;
- document = webkit_web_page_get_dom_document (web_page);
- dom_register_input_event_listener_on_body (document, extension);
- g_dbus_method_invocation_return_value (invocation, NULL);
} else if (g_strcmp0 (method_name, "DOMInsertSmiley") == 0) {
const gchar *smiley_name;
@@ -2828,7 +2798,6 @@ handle_set_property (GDBusConnection *connection,
extension->priv->node_under_mouse_click_flags = value;
- printf ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa %d\n", value);
g_variant_builder_add (builder,
"{sv}",
"NodeUnderMouseClickFlags",
@@ -2971,7 +2940,7 @@ e_html_editor_web_extension_init (EHTMLEditorWebExtension *extension)
extension->priv->is_message_from_selection = FALSE;
extension->priv->remove_initial_input_line = FALSE;
extension->priv->dont_save_history_in_body_input = FALSE;
- extension->priv->im_input_in_progress = FALSE;
+ extension->priv->composition_in_progress = FALSE;
extension->priv->node_under_mouse_click = NULL;
@@ -3634,9 +3603,17 @@ e_html_editor_web_extension_get_undo_redo_manager (EHTMLEditorWebExtension *exte
}
gboolean
-e_html_editor_web_extension_is_im_input_in_progress (EHTMLEditorWebExtension *extension)
+e_html_editor_web_extension_is_composition_in_progress (EHTMLEditorWebExtension *extension)
+{
+ return extension->priv->composition_in_progress;
+}
+
+
+void
+e_html_editor_web_extension_set_composition_in_progress (EHTMLEditorWebExtension *extension,
+ gboolean value)
{
- return extension->priv->im_input_in_progress;
+ extension->priv->composition_in_progress = value;
}
guint
diff --git a/web-extensions/composer/e-html-editor-web-extension.h
b/web-extensions/composer/e-html-editor-web-extension.h
index ff38c9f..9c8c1cf 100644
--- a/web-extensions/composer/e-html-editor-web-extension.h
+++ b/web-extensions/composer/e-html-editor-web-extension.h
@@ -219,24 +219,24 @@ struct _EHTMLEditorUndoRedoManager *
e_html_editor_web_extension_get_undo_redo_manager
(EHTMLEditorWebExtension *extension);
-gboolean e_html_editor_web_extension_is_im_input_in_progress
+gboolean e_html_editor_web_extension_is_composition_in_progress
(EHTMLEditorWebExtension *extension);
-guint
-e_html_editor_web_extension_get_spell_check_on_scroll_event_source_id
+void e_html_editor_web_extension_set_composition_in_progress
+ (EHTMLEditorWebExtension *extension,
+ gboolean value);
+
+guint e_html_editor_web_extension_get_spell_check_on_scroll_event_source_id
(EHTMLEditorWebExtension *extension);
-void
-e_html_editor_web_extension_set_spell_check_on_scroll_event_source_id
+void e_html_editor_web_extension_set_spell_check_on_scroll_event_source_id
(EHTMLEditorWebExtension *extension,
guint value);
-void
-e_html_editor_web_extension_block_selection_changed_callback
+void e_html_editor_web_extension_block_selection_changed_callback
(EHTMLEditorWebExtension *web_extension);
-void
-e_html_editor_web_extension_unblock_selection_changed_callback
+void e_html_editor_web_extension_unblock_selection_changed_callback
(EHTMLEditorWebExtension *web_extension);
#endif /* E_HTML_EDITOR_WEB_EXTENSION_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]