[evolution] I#908 - Focus body in message window when caret mode is enabled
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#908 - Focus body in message window when caret mode is enabled
- Date: Wed, 2 Sep 2020 13:48:27 +0000 (UTC)
commit 485a33882bc4cbe9c1863d5880455349354b98f5
Author: Milan Crha <mcrha redhat com>
Date: Wed Sep 2 15:47:24 2020 +0200
I#908 - Focus body in message window when caret mode is enabled
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/908
data/webkit/e-web-view.js | 16 ++++++++++++++++
src/mail/e-mail-browser.c | 4 +++-
src/mail/e-mail-display.c | 13 +++++++++++++
3 files changed, 32 insertions(+), 1 deletion(-)
---
diff --git a/data/webkit/e-web-view.js b/data/webkit/e-web-view.js
index 4cc0f90c31..0b3034ff0e 100644
--- a/data/webkit/e-web-view.js
+++ b/data/webkit/e-web-view.js
@@ -630,6 +630,22 @@ Evo.initialize = function(elem)
Evo.initializeAndPostContentLoaded(iframe);
}
+ /* Ensure selection, used for the caret mode */
+ if (!doc.getSelection().anchorNode && doc.body.firstChild) {
+ if (doc.body) {
+ doc.getSelection().setPosition(doc.body.firstChild, 0);
+ }
+
+ if (doc.defaultView && !doc.defaultView.frameElement) {
+ var iframe = doc.getElementsByTagName('IFRAME')[0];
+
+ if (iframe && iframe.contentDocument && iframe.contentDocument.body &&
iframe.contentDocument.body.firstChild) {
+ iframe.focus();
+
iframe.contentDocument.getSelection().setPosition(iframe.contentDocument.body.firstChild, 0);
+ }
+ }
+ }
+
if (doc.defaultView && !doc.defaultView.frameElement && !doc.body.hasAttribute("class"))
doc.body.className = "-e-web-view-background-color -e-web-view-text-color";
diff --git a/src/mail/e-mail-browser.c b/src/mail/e-mail-browser.c
index 29b370a0ff..144026df55 100644
--- a/src/mail/e-mail-browser.c
+++ b/src/mail/e-mail-browser.c
@@ -353,7 +353,9 @@ mail_browser_message_selected_cb (EMailBrowser *browser,
title = _("(No Subject)");
gtk_window_set_title (GTK_WINDOW (browser), title);
- gtk_widget_grab_focus (GTK_WIDGET (display));
+
+ if (gtk_widget_get_mapped (GTK_WIDGET (browser)))
+ gtk_widget_grab_focus (GTK_WIDGET (display));
if (e_mail_reader_utils_get_mark_seen_setting (reader, NULL))
camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN);
diff --git a/src/mail/e-mail-display.c b/src/mail/e-mail-display.c
index 859f5dacb5..20a0fb35a5 100644
--- a/src/mail/e-mail-display.c
+++ b/src/mail/e-mail-display.c
@@ -1340,6 +1340,19 @@ mail_display_content_loaded_cb (EWebView *web_view,
"", "__evo-remote-content-img-large", FALSE,
e_web_view_get_cancellable (web_view));
}
+
+ /* Re-grab the focus, which is needed for the caret mode to show the cursor */
+ if (e_web_view_get_caret_mode (web_view) &&
+ gtk_widget_has_focus (GTK_WIDGET (web_view))) {
+ GtkWidget *toplevel, *widget = GTK_WIDGET (web_view);
+
+ toplevel = gtk_widget_get_toplevel (widget);
+
+ if (GTK_IS_WINDOW (toplevel)) {
+ gtk_window_set_focus (GTK_WINDOW (toplevel), NULL);
+ gtk_widget_grab_focus (widget);
+ }
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]