[evolution/gnome-3-30] I#275 - [Composer] Ctrl+Shift+Backspace deletion cannot be undone
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/gnome-3-30] I#275 - [Composer] Ctrl+Shift+Backspace deletion cannot be undone
- Date: Thu, 10 Jan 2019 11:35:27 +0000 (UTC)
commit 7319a8c3c7929802221243c9303085009d23e1c2
Author: Milan Crha <mcrha redhat com>
Date: Thu Jan 10 12:32:33 2019 +0100
I#275 - [Composer] Ctrl+Shift+Backspace deletion cannot be undone
Closes https://gitlab.gnome.org/GNOME/evolution/issues/275
.../web-extension/e-editor-dom-functions.c | 29 +++++++++++++---------
.../web-extension/e-editor-dom-functions.h | 5 +++-
.../web-extension/e-editor-undo-redo-manager.c | 2 +-
3 files changed, 22 insertions(+), 14 deletions(-)
---
diff --git a/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
b/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
index fc810b96a7..cdf02e3979 100644
--- a/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
+++ b/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
@@ -2954,7 +2954,7 @@ body_keydown_event_cb (WebKitDOMElement *element,
}
if (delete_key || backspace_key) {
- if (e_editor_dom_key_press_event_process_delete_or_backspace_key (editor_page, key_code,
control_key, delete_key))
+ if (e_editor_dom_key_press_event_process_delete_or_backspace_key (editor_page, key_code,
control_key, shift_key, delete_key))
webkit_dom_event_prevent_default (WEBKIT_DOM_EVENT (event));
goto out;
}
@@ -9410,7 +9410,8 @@ e_editor_dom_insert_html (EEditorPage *editor_page,
static void
save_history_for_delete_or_backspace (EEditorPage *editor_page,
gboolean delete_key,
- gboolean control_key)
+ gboolean control_key,
+ gboolean shift_key)
{
WebKitDOMDocument *document;
WebKitDOMDocumentFragment *fragment = NULL;
@@ -9484,7 +9485,7 @@ save_history_for_delete_or_backspace (EEditorPage *editor_page,
/* Control + Delete/Backspace deletes previous/next word. */
webkit_dom_dom_selection_modify (
- dom_selection, "move", delete_key ? "right" : "left", "word");
+ dom_selection, "move", delete_key ? "right" : "left", (!delete_key &&
shift_key) ? "paragraphboundary" : "word");
tmp_range = webkit_dom_dom_selection_get_range_at (dom_selection, 0, NULL);
if (delete_key)
webkit_dom_range_set_end (
@@ -9886,6 +9887,7 @@ gboolean
e_editor_dom_fix_structure_after_delete_before_quoted_content (EEditorPage *editor_page,
glong key_code,
gboolean control_key,
+ gboolean shift_key,
gboolean delete_key)
{
WebKitDOMDocument *document;
@@ -9937,7 +9939,7 @@ e_editor_dom_fix_structure_after_delete_before_quoted_content (EEditorPage *edit
if (key_code != ~0) {
e_editor_dom_selection_restore (editor_page);
save_history_for_delete_or_backspace (
- editor_page, key_code == HTML_KEY_CODE_DELETE, control_key);
+ editor_page, key_code == HTML_KEY_CODE_DELETE, control_key,
shift_key);
} else
e_editor_dom_selection_restore (editor_page);
@@ -10184,7 +10186,8 @@ delete_last_character_from_previous_line_in_quoted_block (EEditorPage *editor_pa
gboolean
e_editor_dom_delete_last_character_on_line_in_quoted_block (EEditorPage *editor_page,
glong key_code,
- gboolean control_key)
+ gboolean control_key,
+ gboolean shift_key)
{
WebKitDOMDocument *document;
WebKitDOMElement *element;
@@ -10241,7 +10244,7 @@ e_editor_dom_delete_last_character_on_line_in_quoted_block (EEditorPage *editor_
if (key_code != ~0) {
e_editor_dom_selection_restore (editor_page);
save_history_for_delete_or_backspace (
- editor_page, key_code == HTML_KEY_CODE_DELETE, control_key);
+ editor_page, key_code == HTML_KEY_CODE_DELETE, control_key, shift_key);
e_editor_dom_selection_save (editor_page);
}
@@ -10883,7 +10886,8 @@ e_editor_dom_key_press_event_process_backspace_key (EEditorPage *editor_page)
static gboolean
deleting_block_starting_in_quoted_content (EEditorPage *editor_page,
glong key_code,
- gboolean control_key)
+ gboolean control_key,
+ gboolean shift_key)
{
gint citation_level;
WebKitDOMDocument *document;
@@ -10920,7 +10924,7 @@ deleting_block_starting_in_quoted_content (EEditorPage *editor_page,
if (key_code != ~0)
save_history_for_delete_or_backspace (
- editor_page, key_code == HTML_KEY_CODE_DELETE, control_key);
+ editor_page, key_code == HTML_KEY_CODE_DELETE, control_key, shift_key);
e_editor_dom_exec_command (editor_page, E_CONTENT_EDITOR_COMMAND_DELETE, NULL);
@@ -10971,6 +10975,7 @@ gboolean
e_editor_dom_key_press_event_process_delete_or_backspace_key (EEditorPage *editor_page,
glong key_code,
gboolean control_key,
+ gboolean shift_key,
gboolean delete)
{
WebKitDOMDocument *document;
@@ -10994,19 +10999,19 @@ e_editor_dom_key_press_event_process_delete_or_backspace_key (EEditorPage *edito
}
if (!local_delete && !html_mode &&
- e_editor_dom_delete_last_character_on_line_in_quoted_block (editor_page, key_code, control_key))
+ e_editor_dom_delete_last_character_on_line_in_quoted_block (editor_page, key_code, control_key,
shift_key))
goto out;
if (!local_delete && !html_mode &&
delete_last_character_from_previous_line_in_quoted_block (editor_page, key_code, control_key))
goto out;
- if (!html_mode && e_editor_dom_fix_structure_after_delete_before_quoted_content (editor_page,
key_code, control_key, delete))
+ if (!html_mode && e_editor_dom_fix_structure_after_delete_before_quoted_content (editor_page,
key_code, control_key, shift_key, delete))
goto out;
collapsed = e_editor_dom_selection_is_collapsed (editor_page);
- if (!html_mode && !collapsed && deleting_block_starting_in_quoted_content (editor_page, key_code,
control_key))
+ if (!html_mode && !collapsed && deleting_block_starting_in_quoted_content (editor_page, key_code,
control_key, shift_key))
goto out;
if (!collapsed) {
@@ -11017,7 +11022,7 @@ e_editor_dom_key_press_event_process_delete_or_backspace_key (EEditorPage *edito
if (key_code != ~0)
save_history_for_delete_or_backspace (
- editor_page, key_code == HTML_KEY_CODE_DELETE, control_key);
+ editor_page, key_code == HTML_KEY_CODE_DELETE, control_key, shift_key);
if (local_delete) {
WebKitDOMElement *selection_start_marker;
diff --git a/src/modules/webkit-editor/web-extension/e-editor-dom-functions.h
b/src/modules/webkit-editor/web-extension/e-editor-dom-functions.h
index 23765ec3f0..2c7775c73b 100644
--- a/src/modules/webkit-editor/web-extension/e-editor-dom-functions.h
+++ b/src/modules/webkit-editor/web-extension/e-editor-dom-functions.h
@@ -169,11 +169,13 @@ gboolean e_editor_dom_move_quoted_block_level_up
gboolean e_editor_dom_delete_last_character_on_line_in_quoted_block
(EEditorPage *editor_page,
glong key_code,
- gboolean control_key);
+ gboolean control_key,
+ gboolean shift_key);
gboolean e_editor_dom_fix_structure_after_delete_before_quoted_content
(EEditorPage *editor_page,
glong key_code,
gboolean control_key,
+ gboolean shift_key,
gboolean delete_key);
void e_editor_dom_disable_quote_marks_select
(EEditorPage *editor_page);
@@ -192,6 +194,7 @@ gboolean e_editor_dom_key_press_event_process_delete_or_backspace_key
(EEditorPage *editor_page,
glong key_code,
gboolean control_key,
+ gboolean shift_key,
gboolean delete);
void e_editor_dom_body_input_event_process
(EEditorPage *editor_page,
diff --git a/src/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c
b/src/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c
index 278c73f4d2..ff1b8f5c63 100644
--- a/src/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c
+++ b/src/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c
@@ -923,7 +923,7 @@ redo_delete (EEditorPage *editor_page,
if (!delete_key && e_editor_dom_key_press_event_process_backspace_key (editor_page))
goto out;
- if (e_editor_dom_key_press_event_process_delete_or_backspace_key (editor_page, ~0, 0, delete_key))
+ if (e_editor_dom_key_press_event_process_delete_or_backspace_key (editor_page, ~0, FALSE, FALSE,
delete_key))
goto out;
if (control_key) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]