[evolution/wip/webkit2] Bug 745899 - Shift+Tab in message body doesn't move focus to headers
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] Bug 745899 - Shift+Tab in message body doesn't move focus to headers
- Date: Wed, 22 Apr 2015 13:15:01 +0000 (UTC)
commit d8ad0d125fcb74551f263abbe98334f4760d58ca
Author: Tomas Popela <tpopela redhat com>
Date: Mon Mar 30 13:43:11 2015 +0200
Bug 745899 - Shift+Tab in message body doesn't move focus to headers
The behavior right now is. When tabulator is pressed in view (outside
of table) tabulator is inserted. When tab is pressed inside a table,
caret is moved to next cell in the table. If we are in the last cell of
table, caret is moved to the block after table. When Shift+Tab is pressed
inside the view (outside of table) caret jumps to headers. When
Shift+Tab is pressed in table the caret is moved to previous cell. If
the caret is in first cell of table it is moved to the block that is
before the table. If there is no block before the table, focus is moved
to headers.
composer/e-msg-composer.c | 11 +++++++++++
web-extensions/e-html-editor-view-dom-functions.c | 14 ++++++--------
2 files changed, 17 insertions(+), 8 deletions(-)
---
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 42fe447..49424d9 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -2538,6 +2538,17 @@ msg_composer_key_press_event (GtkWidget *widget,
}
if (gtk_widget_is_focus (GTK_WIDGET (view))) {
+ if (event->keyval == GDK_KEY_ISO_Left_Tab) {
+ gboolean view_processed = FALSE;
+
+ g_signal_emit_by_name (view, "key-press-event", event, &view_processed);
+
+ if (!view_processed)
+ gtk_widget_grab_focus (input_widget);
+
+ return TRUE;
+ }
+
if ((((event)->state & GDK_SHIFT_MASK) &&
((event)->keyval == GDK_KEY_Insert)) ||
(((event)->state & GDK_CONTROL_MASK) &&
diff --git a/web-extensions/e-html-editor-view-dom-functions.c
b/web-extensions/e-html-editor-view-dom-functions.c
index 7fe9102..d6f28db 100644
--- a/web-extensions/e-html-editor-view-dom-functions.c
+++ b/web-extensions/e-html-editor-view-dom-functions.c
@@ -6437,12 +6437,11 @@ jump_to_next_table_cell (WebKitDOMDocument *document,
WebKitDOMNode *node, *cell;
WebKitDOMRange *range;
- window = webkit_dom_document_get_default_view (document);
- selection = webkit_dom_dom_window_get_selection (window);
-
- if (webkit_dom_dom_selection_get_range_count (selection) < 1)
+ if (!selection_is_in_table (document, NULL, NULL))
return FALSE;
+ 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);
node = webkit_dom_range_get_start_container (range, NULL);
@@ -6569,15 +6568,14 @@ dom_process_on_key_press (WebKitDOMDocument *document,
guint key_val)
{
if (key_val == GDK_KEY_Tab || key_val == GDK_KEY_ISO_Left_Tab) {
- if (selection_is_in_table (document, NULL, NULL))
- if (jump_to_next_table_cell (document, key_val == GDK_KEY_ISO_Left_Tab))
- return TRUE;
+ if (jump_to_next_table_cell (document, key_val == GDK_KEY_ISO_Left_Tab))
+ return TRUE;
if (key_val == GDK_KEY_Tab)
return dom_exec_command (
document, E_HTML_EDITOR_VIEW_COMMAND_INSERT_TEXT, "\t");
else
- return TRUE;
+ return FALSE;
}
if (is_return_key (key_val)) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]