[evolution] EHTMLEditorSelection - Simplify some loops and free more of the WebKit DOM variables
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] EHTMLEditorSelection - Simplify some loops and free more of the WebKit DOM variables
- Date: Thu, 14 Aug 2014 13:23:46 +0000 (UTC)
commit af6f656c043f82a7fb559b695f27113695289679
Author: Tomas Popela <tpopela redhat com>
Date: Thu Aug 14 15:20:48 2014 +0200
EHTMLEditorSelection - Simplify some loops and free more of the WebKit DOM variables
e-util/e-html-editor-selection.c | 73 +++++++++++++-------------------------
1 files changed, 25 insertions(+), 48 deletions(-)
---
diff --git a/e-util/e-html-editor-selection.c b/e-util/e-html-editor-selection.c
index f3f2ed5..e691b6f 100644
--- a/e-util/e-html-editor-selection.c
+++ b/e-util/e-html-editor-selection.c
@@ -1828,7 +1828,7 @@ format_change_block_to_block (EHTMLEditorSelection *selection,
const gchar *value,
WebKitDOMDocument *document)
{
- gboolean after_selection_end, html_mode;
+ gboolean after_selection_end = FALSE, html_mode;
WebKitDOMElement *selection_start_marker, *selection_end_marker, *element;
WebKitDOMNode *block, *next_block;
@@ -1873,7 +1873,7 @@ format_change_block_to_block (EHTMLEditorSelection *selection,
html_mode = e_html_editor_view_get_html_mode (view);
/* Process all blocks that are in the selection one by one */
- while (block) {
+ while (block && !after_selection_end) {
gboolean quoted = FALSE;
gboolean empty = FALSE;
gchar *content;
@@ -1938,9 +1938,6 @@ format_change_block_to_block (EHTMLEditorSelection *selection,
if (quoted)
e_html_editor_view_quote_plain_text_element (view, element);
-
- if (after_selection_end)
- break;
}
e_html_editor_selection_restore (selection);
@@ -1952,7 +1949,7 @@ format_change_block_to_list (EHTMLEditorSelection *selection,
EHTMLEditorView *view,
WebKitDOMDocument *document)
{
- gboolean after_selection_end, in_quote = FALSE;
+ gboolean after_selection_end = FALSE, in_quote = FALSE;
gboolean html_mode = e_html_editor_view_get_html_mode (view);
WebKitDOMElement *selection_start_marker, *selection_end_marker, *item, *list;
WebKitDOMNode *block, *next_block;
@@ -2034,7 +2031,7 @@ format_change_block_to_list (EHTMLEditorSelection *selection,
NULL);
/* Process all blocks that are in the selection one by one */
- while (block) {
+ while (block && !after_selection_end) {
gboolean empty = FALSE;
gchar *content;
WebKitDOMNode *child, *parent;
@@ -2089,9 +2086,6 @@ format_change_block_to_list (EHTMLEditorSelection *selection,
}
block = next_block;
-
- if (after_selection_end)
- break;
}
merge_lists_if_possible (WEBKIT_DOM_NODE (list));
@@ -2753,7 +2747,7 @@ indent_list (EHTMLEditorSelection *selection,
webkit_dom_node_insert_before (
source_list, WEBKIT_DOM_NODE (list), item, NULL);
- while (item) {
+ while (item && !after_selection_end) {
after_selection_end = webkit_dom_node_contains (
item, WEBKIT_DOM_NODE (selection_end_marker));
@@ -2763,9 +2757,6 @@ indent_list (EHTMLEditorSelection *selection,
WEBKIT_DOM_NODE (list), item, NULL);
item = next_item;
-
- if (after_selection_end)
- break;
}
merge_lists_if_possible (WEBKIT_DOM_NODE (list));
@@ -2865,7 +2856,7 @@ e_html_editor_selection_indent (EHTMLEditorSelection *selection)
block = get_parent_block_node_from_child (
WEBKIT_DOM_NODE (selection_start_marker));
- while (block) {
+ while (block && !after_selection_end) {
gint ii, length, level, final_width = 0;
gint word_wrap_length = selection->priv->word_wrap_length;
WebKitDOMNode *next_block;
@@ -2884,39 +2875,28 @@ e_html_editor_selection_indent (EHTMLEditorSelection *selection)
length = webkit_dom_node_list_get_length (list);
if (length == 0 && node_is_list_or_item (block)) {
indent_list (selection, document);
- if (!after_selection_end) {
- block = next_block;
- continue;
- } else
- goto out;
+ goto next;
}
if (length == 0) {
if (!after_selection_start) {
after_selection_start = webkit_dom_node_contains (
block, WEBKIT_DOM_NODE (selection_start_marker));
- if (!after_selection_start) {
- block = next_block;
- continue;
- }
+ if (!after_selection_start)
+ goto next;
}
level = get_indentation_level (WEBKIT_DOM_ELEMENT (block));
final_width = word_wrap_length - SPACES_PER_INDENTATION * (level + 1);
if (final_width < MINIMAL_PARAGRAPH_WIDTH &&
- !is_in_html_mode (selection)) {
- if (!after_selection_end) {
- block = next_block;
- continue;
- } else
- goto out;
- }
+ !is_in_html_mode (selection))
+ goto next;
indent_block (selection, document, block, final_width);
if (after_selection_end)
- goto out;
+ goto next;
}
for (ii = 0; ii < length; ii++) {
@@ -2946,14 +2926,16 @@ e_html_editor_selection_indent (EHTMLEditorSelection *selection)
indent_block (selection, document, block_to_process, final_width);
if (after_selection_end)
- goto out;
+ break;
}
+ next:
g_object_unref (list);
- block = next_block;
+ if (!after_selection_end)
+ block = next_block;
}
- out:
+
e_html_editor_selection_restore (selection);
e_html_editor_view_force_spell_check_for_current_paragraph (view);
@@ -3211,7 +3193,7 @@ e_html_editor_selection_unindent (EHTMLEditorSelection *selection)
block = get_parent_block_node_from_child (
WEBKIT_DOM_NODE (selection_start_marker));
- while (block) {
+ while (block && !after_selection_end) {
gint ii, length;
WebKitDOMNode *next_block;
WebKitDOMNodeList *list;
@@ -3229,27 +3211,21 @@ e_html_editor_selection_unindent (EHTMLEditorSelection *selection)
length = webkit_dom_node_list_get_length (list);
if (length == 0 && node_is_list_or_item (block)) {
unindent_list (selection, document);
- if (!after_selection_end) {
- block = next_block;
- continue;
- } else
- goto out;
+ goto next;
}
if (length == 0) {
if (!after_selection_start) {
after_selection_start = webkit_dom_node_contains (
block, WEBKIT_DOM_NODE (selection_start_marker));
- if (!after_selection_start) {
- block = next_block;
- continue;
- }
+ if (!after_selection_start)
+ goto next;
}
unindent_block (selection, document, block);
if (after_selection_end)
- goto out;
+ goto next;
}
for (ii = 0; ii < length; ii++) {
@@ -3272,12 +3248,13 @@ e_html_editor_selection_unindent (EHTMLEditorSelection *selection)
unindent_block (selection, document, block_to_process);
if (after_selection_end)
- goto out;
+ break;
}
+ next:
g_object_unref (list);
block = next_block;
}
- out:
+
e_html_editor_selection_restore (selection);
e_html_editor_view_force_spell_check_for_current_paragraph (view);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]