[evolution/wip/webkit-composer] EEditorTableDialog: Rework the insertion of a new table
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit-composer] EEditorTableDialog: Rework the insertion of a new table
- Date: Wed, 12 Mar 2014 11:28:18 +0000 (UTC)
commit a32e6ddbc1049a4a9c05f26aff31de454f0fb94c
Author: Tomas Popela <tpopela redhat com>
Date: Wed Mar 12 08:33:21 2014 +0100
EEditorTableDialog: Rework the insertion of a new table
e-util/e-editor-table-dialog.c | 42 +++++++++++++++++++++++++++++++--------
1 files changed, 33 insertions(+), 9 deletions(-)
---
diff --git a/e-util/e-editor-table-dialog.c b/e-util/e-editor-table-dialog.c
index 679b778..d710f3a 100644
--- a/e-util/e-editor-table-dialog.c
+++ b/e-util/e-editor-table-dialog.c
@@ -67,19 +67,18 @@ static WebKitDOMElement *
editor_table_dialog_create_table (EEditorTableDialog *dialog)
{
EEditor *editor;
+ EEditorSelection *editor_selection;
+ EEditorWidget *editor_widget;
WebKitDOMDocument *document;
- WebKitDOMElement *table;
- WebKitDOMDOMWindow *window;
- WebKitDOMDOMSelection *selection;
- WebKitDOMRange *range;
+ WebKitDOMElement *table, *br, *caret, *parent, *element;
gint i;
editor = e_editor_dialog_get_editor (E_EDITOR_DIALOG (dialog));
+ editor_widget = e_editor_get_editor_widget (editor);
+ editor_selection = e_editor_widget_get_selection (editor_widget);
+
document = webkit_web_view_get_dom_document (
- WEBKIT_WEB_VIEW (e_editor_get_editor_widget (editor)));
- window = webkit_dom_document_get_default_view (document);
- selection = webkit_dom_dom_window_get_selection (window);
- range = webkit_dom_dom_selection_get_range_at (selection, 0, NULL);
+ WEBKIT_WEB_VIEW (editor_widget));
/* Default 3x3 table */
table = webkit_dom_document_create_element (document, "TABLE", NULL);
@@ -96,7 +95,32 @@ editor_table_dialog_create_table (EEditorTableDialog *dialog)
}
}
- webkit_dom_range_insert_node (range, WEBKIT_DOM_NODE (table), NULL);
+ caret = e_editor_selection_save_caret_position (editor_selection);
+
+ parent = webkit_dom_node_get_parent_element (WEBKIT_DOM_NODE (caret));
+ element = caret;
+
+ while (!WEBKIT_DOM_IS_HTML_BODY_ELEMENT (parent)) {
+ element = parent;
+ parent = webkit_dom_node_get_parent_element (
+ WEBKIT_DOM_NODE (parent));
+ }
+
+ br = webkit_dom_document_create_element (document, "BR", NULL);
+ webkit_dom_node_insert_before (
+ WEBKIT_DOM_NODE (parent),
+ WEBKIT_DOM_NODE (br),
+ webkit_dom_node_get_next_sibling (WEBKIT_DOM_NODE (element)),
+ NULL);
+
+ /* Insert the table into body below the caret */
+ webkit_dom_node_insert_before (
+ WEBKIT_DOM_NODE (parent),
+ WEBKIT_DOM_NODE (table),
+ webkit_dom_node_get_next_sibling (WEBKIT_DOM_NODE (element)),
+ NULL);
+
+ e_editor_selection_clear_caret_position_marker (editor_selection);
return table;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]