[evolution/wip/webkit2] Composer - Some of WebKit's objects are leaked
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] Composer - Some of WebKit's objects are leaked
- Date: Tue, 1 Mar 2016 14:49:21 +0000 (UTC)
commit 9e1520f30103a6cfc9ad62ffd3acd03d9b7b25b3
Author: Tomas Popela <tpopela redhat com>
Date: Tue Mar 1 14:50:45 2016 +0100
Composer - Some of WebKit's objects are leaked
.../composer/e-composer-private-dom-functions.c | 28 ++++++++++++-------
1 files changed, 18 insertions(+), 10 deletions(-)
---
diff --git a/web-extensions/composer/e-composer-private-dom-functions.c
b/web-extensions/composer/e-composer-private-dom-functions.c
index e7836bf..8081d35 100644
--- a/web-extensions/composer/e-composer-private-dom-functions.c
+++ b/web-extensions/composer/e-composer-private-dom-functions.c
@@ -111,25 +111,18 @@ composer_move_caret (WebKitDOMDocument *document,
gboolean is_message_from_edit_as_new;
gboolean is_from_new_message;
gboolean has_paragraphs_in_body = TRUE;
- WebKitDOMDOMWindow *window;
- WebKitDOMDOMSelection *dom_selection;
WebKitDOMElement *element, *signature;
WebKitDOMHTMLElement *body;
WebKitDOMHTMLCollection *paragraphs;
- WebKitDOMRange *new_range;
is_message_from_draft = e_html_editor_web_extension_is_message_from_draft (extension);
is_message_from_edit_as_new =
e_html_editor_web_extension_is_message_from_edit_as_new (extension);
is_from_new_message = e_html_editor_web_extension_is_from_new_message (extension);
- window = webkit_dom_document_get_default_view (document);
- dom_selection = webkit_dom_dom_window_get_selection (window);
-
body = webkit_dom_document_get_body (document);
webkit_dom_element_set_attribute (
WEBKIT_DOM_ELEMENT (body), "data-message", "", NULL);
- new_range = webkit_dom_document_create_range (document);
/* If editing message as new don't handle with caret */
if (is_message_from_edit_as_new || is_message_from_draft) {
@@ -267,11 +260,23 @@ composer_move_caret (WebKitDOMDocument *document,
g_object_unref (paragraphs);
move_caret:
if (element) {
+ WebKitDOMDOMSelection *dom_selection;
+ WebKitDOMDOMWindow *dom_window;
+ WebKitDOMRange *range;
+
+ dom_window = webkit_dom_document_get_default_view (document);
+ dom_selection = webkit_dom_dom_window_get_selection (dom_window);
+ range = webkit_dom_document_create_range (document);
+
webkit_dom_range_select_node_contents (
- new_range, WEBKIT_DOM_NODE (element), NULL);
- webkit_dom_range_collapse (new_range, TRUE, NULL);
+ range, WEBKIT_DOM_NODE (element), NULL);
+ webkit_dom_range_collapse (range, TRUE, NULL);
webkit_dom_dom_selection_remove_all_ranges (dom_selection);
- webkit_dom_dom_selection_add_range (dom_selection, new_range);
+ webkit_dom_dom_selection_add_range (dom_selection, range);
+
+ g_clear_object (&dom_selection);
+ g_clear_object (&dom_window);
+ g_clear_object (&range);
if (start_bottom)
dom_scroll_to_caret (document);
@@ -344,6 +349,9 @@ dom_clean_after_drag_and_drop (WebKitDOMDocument *document,
* collapse it to its end to have the caret after the DnD'ed text. */
webkit_dom_dom_selection_collapse_to_end (dom_selection, NULL);
+ g_clear_object (&dom_selection);
+ g_clear_object (&dom_window);
+
dom_check_magic_links (document, extension, FALSE);
/* Also force spell check on view. */
dom_force_spell_check_in_viewport (document, extension);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]