[evolution/wip/webkit2] Don't save the history for various HTML formatting dialogs if the formatting didn't changed



commit 9a14dd44737dbc2300d2cf4e10b088ad9f29b7e5
Author: Tomas Popela <tpopela redhat com>
Date:   Thu Feb 25 17:34:50 2016 +0100

    Don't save the history for various HTML formatting dialogs if the formatting didn't changed

 .../e-html-editor-cell-dialog-dom-functions.c      |    8 ++++++--
 .../e-html-editor-hrule-dialog-dom-functions.c     |    8 ++++++--
 .../e-html-editor-page-dialog-dom-functions.c      |    8 ++++++--
 .../e-html-editor-table-dialog-dom-functions.c     |    8 ++++++--
 .../composer/e-html-editor-undo-redo-manager.c     |   11 +++++++++++
 .../composer/e-html-editor-undo-redo-manager.h     |    2 ++
 6 files changed, 37 insertions(+), 8 deletions(-)
---
diff --git a/web-extensions/composer/e-html-editor-cell-dialog-dom-functions.c 
b/web-extensions/composer/e-html-editor-cell-dialog-dom-functions.c
index 8c21376..25c05a3 100644
--- a/web-extensions/composer/e-html-editor-cell-dialog-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-cell-dialog-dom-functions.c
@@ -297,8 +297,12 @@ e_html_editor_cell_dialog_save_history_on_exit (WebKitDOMDocument *document,
        ev->data.dom.to = webkit_dom_node_clone_node (
                WEBKIT_DOM_NODE (table), TRUE);
 
-       dom_selection_get_coordinates (
-               document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       if (!webkit_dom_node_is_equal_node (ev->data.dom.from, ev->data.dom.to)) {
+               dom_selection_get_coordinates (
+                       document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       } else {
+               e_html_editor_undo_redo_manager_remove_current_history_event (manager);
+       }
 }
 
 void
diff --git a/web-extensions/composer/e-html-editor-hrule-dialog-dom-functions.c 
b/web-extensions/composer/e-html-editor-hrule-dialog-dom-functions.c
index 10a940e..1879df8 100644
--- a/web-extensions/composer/e-html-editor-hrule-dialog-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-hrule-dialog-dom-functions.c
@@ -111,6 +111,10 @@ e_html_editor_hrule_dialog_save_history_on_exit (WebKitDOMDocument *document,
        ev->data.dom.to = webkit_dom_node_clone_node (
                WEBKIT_DOM_NODE (element), TRUE);
 
-       dom_selection_get_coordinates (
-               document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       if (!webkit_dom_node_is_equal_node (ev->data.dom.from, ev->data.dom.to)) {
+               dom_selection_get_coordinates (
+                       document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       } else {
+               e_html_editor_undo_redo_manager_remove_current_history_event (manager);
+       }
 }
diff --git a/web-extensions/composer/e-html-editor-page-dialog-dom-functions.c 
b/web-extensions/composer/e-html-editor-page-dialog-dom-functions.c
index b18e0bd..69c6d1e 100644
--- a/web-extensions/composer/e-html-editor-page-dialog-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-page-dialog-dom-functions.c
@@ -59,6 +59,10 @@ e_html_editor_page_dialog_save_history_on_exit (WebKitDOMDocument *document,
        body = webkit_dom_document_get_body (document);
        ev->data.dom.to = webkit_dom_node_clone_node (WEBKIT_DOM_NODE (body), FALSE);
 
-       dom_selection_get_coordinates (
-               document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       if (!webkit_dom_node_is_equal_node (ev->data.dom.from, ev->data.dom.to)) {
+               dom_selection_get_coordinates (
+                       document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       } else {
+               e_html_editor_undo_redo_manager_remove_current_history_event (manager);
+       }
 }
diff --git a/web-extensions/composer/e-html-editor-table-dialog-dom-functions.c 
b/web-extensions/composer/e-html-editor-table-dialog-dom-functions.c
index dc3023f..30df691 100644
--- a/web-extensions/composer/e-html-editor-table-dialog-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-table-dialog-dom-functions.c
@@ -301,6 +301,10 @@ e_html_editor_table_dialog_save_history_on_exit (WebKitDOMDocument *document,
        ev->data.dom.to = webkit_dom_node_clone_node (
                WEBKIT_DOM_NODE (element), TRUE);
 
-       dom_selection_get_coordinates (
-               document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       if (!webkit_dom_node_is_equal_node (ev->data.dom.from, ev->data.dom.to)) {
+               dom_selection_get_coordinates (
+                       document, &ev->after.start.x, &ev->after.start.y, &ev->after.end.x, &ev->after.end.y);
+       } else {
+               e_html_editor_undo_redo_manager_remove_current_history_event (manager);
+       }
 }
diff --git a/web-extensions/composer/e-html-editor-undo-redo-manager.c 
b/web-extensions/composer/e-html-editor-undo-redo-manager.c
index 68f6b08..b03b2f8 100644
--- a/web-extensions/composer/e-html-editor-undo-redo-manager.c
+++ b/web-extensions/composer/e-html-editor-undo-redo-manager.c
@@ -1667,6 +1667,17 @@ e_html_editor_undo_redo_manager_get_current_history_event (EHTMLEditorUndoRedoMa
 }
 
 void
+e_html_editor_undo_redo_manager_remove_current_history_event (EHTMLEditorUndoRedoManager *manager)
+{
+       g_return_if_fail (E_IS_HTML_EDITOR_UNDO_REDO_MANAGER (manager));
+
+       if (!manager->priv->history)
+               return;
+
+       remove_history_event (manager, manager->priv->history);
+}
+
+void
 e_html_editor_undo_redo_manager_insert_dash_history_event (EHTMLEditorUndoRedoManager *manager)
 {
        EHTMLEditorHistoryEvent *event, *last;
diff --git a/web-extensions/composer/e-html-editor-undo-redo-manager.h 
b/web-extensions/composer/e-html-editor-undo-redo-manager.h
index a60dcca..08f7456 100644
--- a/web-extensions/composer/e-html-editor-undo-redo-manager.h
+++ b/web-extensions/composer/e-html-editor-undo-redo-manager.h
@@ -81,6 +81,8 @@ void          e_html_editor_undo_redo_manager_insert_history_event
 EHTMLEditorHistoryEvent *
                e_html_editor_undo_redo_manager_get_current_history_event
                                                (EHTMLEditorUndoRedoManager *manager);
+void           e_html_editor_undo_redo_manager_remove_current_history_event
+                                               (EHTMLEditorUndoRedoManager *manager);
 
 void
 e_html_editor_undo_redo_manager_insert_dash_history_event


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]