aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2012-11-02 22:19:14 +0800
committerMilan Crha <mcrha@redhat.com>2012-11-02 22:19:14 +0800
commit95aa304d52a14fdcdb5c919150d955f2f9ffcf4d (patch)
tree1d86fff7292aa324391e4f31a691f65920f17a93
parent83903dbbb3bca46aad82f0954ee9fb821422bcb1 (diff)
downloadgsoc2013-evolution-95aa304d52a14fdcdb5c919150d955f2f9ffcf4d.tar
gsoc2013-evolution-95aa304d52a14fdcdb5c919150d955f2f9ffcf4d.tar.gz
gsoc2013-evolution-95aa304d52a14fdcdb5c919150d955f2f9ffcf4d.tar.bz2
gsoc2013-evolution-95aa304d52a14fdcdb5c919150d955f2f9ffcf4d.tar.lz
gsoc2013-evolution-95aa304d52a14fdcdb5c919150d955f2f9ffcf4d.tar.xz
gsoc2013-evolution-95aa304d52a14fdcdb5c919150d955f2f9ffcf4d.tar.zst
gsoc2013-evolution-95aa304d52a14fdcdb5c919150d955f2f9ffcf4d.zip
Bug #687442 - Magic spacebar avoids iTip formatter comment write
-rw-r--r--modules/itip-formatter/itip-view.c2
-rw-r--r--modules/mail/e-mail-shell-view-private.c34
2 files changed, 34 insertions, 2 deletions
diff --git a/modules/itip-formatter/itip-view.c b/modules/itip-formatter/itip-view.c
index 7e91f3444d..30de7f5092 100644
--- a/modules/itip-formatter/itip-view.c
+++ b/modules/itip-formatter/itip-view.c
@@ -995,7 +995,7 @@ buttons_table_write_button (GString *buffer,
g_string_append_printf (
buffer,
- "<td><button type=\"button\" name=\"%s\" value=\"%d\" id=\"%s\" accesskey=\"%s\" hidden>"
+ "<td><button type=\"button\" name=\"%s\" value=\"%d\" id=\"%s\" accesskey=\"%s\" hidden disabled>"
"<div><img src=\"gtk-stock://%s?size=%d\"> <span>%s</span></div>"
"</button></td>\n",
name, response, name, access_key ? access_key : "" , icon,
diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c
index f51f8f1005..6cf83b98a8 100644
--- a/modules/mail/e-mail-shell-view-private.c
+++ b/modules/mail/e-mail-shell-view-private.c
@@ -262,12 +262,16 @@ mail_shell_view_key_press_event_cb (EMailShellView *mail_shell_view,
{
EShellView *shell_view;
EShellWindow *shell_window;
+ EShellContent *shell_content;
+ EMailView *mail_view;
+ EMailReader *reader;
+ EMailDisplay *mail_display;
GtkAction *action;
shell_view = E_SHELL_VIEW (mail_shell_view);
shell_window = e_shell_view_get_shell_window (shell_view);
- if ((event->state & GDK_CONTROL_MASK) != 0)
+ if ((event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK)) != 0)
return FALSE;
switch (event->keyval) {
@@ -283,6 +287,34 @@ mail_shell_view_key_press_event_cb (EMailShellView *mail_shell_view,
return FALSE;
}
+ shell_content = e_shell_view_get_shell_content (shell_view);
+ mail_view = e_mail_shell_content_get_mail_view (E_MAIL_SHELL_CONTENT (shell_content));
+ reader = E_MAIL_READER (mail_view);
+ mail_display = e_mail_reader_get_mail_display (reader);
+
+ if (gtk_widget_has_focus (GTK_WIDGET (mail_display))) {
+ WebKitWebFrame *frame;
+ WebKitDOMDocument *dom;
+ WebKitDOMElement *element;
+ gchar *name = NULL;
+
+ frame = webkit_web_view_get_focused_frame (WEBKIT_WEB_VIEW (mail_display));
+ dom = webkit_web_frame_get_dom_document (frame);
+ /* intentionally used "static_cast" */
+ element = webkit_dom_html_document_get_active_element ((WebKitDOMHTMLDocument *) dom);
+
+ if (element)
+ name = webkit_dom_node_get_node_name (WEBKIT_DOM_NODE (element));
+
+ /* if INPUT or TEXTAREA has focus, then any key press should go there */
+ if (name && (g_ascii_strcasecmp (name, "INPUT") == 0 || g_ascii_strcasecmp (name, "TEXTAREA") == 0)) {
+ g_free (name);
+ return FALSE;
+ }
+
+ g_free (name);
+ }
+
gtk_action_activate (action);
return TRUE;