[epiphany/gnome-3-18] window: add blacklist of events to not deliver to web view
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/gnome-3-18] window: add blacklist of events to not deliver to web view
- Date: Mon, 21 Nov 2016 02:34:56 +0000 (UTC)
commit 78523b00eadde51f158f756d21c8083c4261c667
Author: Michael Catanzaro <mcatanzaro gnome org>
Date: Wed Nov 16 15:11:42 2016 -0600
window: add blacklist of events to not deliver to web view
Certain window and tab management shortcuts are reserved by Epiphany and
will never be delivered to the webpage, even though webpages should in
general be allowed to override Epiphany shortcuts (e.g. Ctrl+B in Google
Docs should embolden text and not open the old bookmarks dialog, Ctrl+I
should italicize text and not open a new incognito window).
https://bugzilla.gnome.org/show_bug.cgi?id=764653
src/ephy-window.c | 27 ++++++++++++++++++++++++++-
1 files changed, 26 insertions(+), 1 deletions(-)
---
diff --git a/src/ephy-window.c b/src/ephy-window.c
index b22dcf1..18b9bd1 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -835,6 +835,30 @@ ephy_window_bound_accels (GtkWidget *widget,
return FALSE;
}
+static gboolean
+should_web_view_receive_key_press_event (GdkEventKey *event)
+{
+ if (event->state == GDK_CONTROL_MASK)
+ return event->keyval != GDK_KEY_n &&
+ event->keyval != GDK_KEY_q &&
+ event->keyval != GDK_KEY_t &&
+ event->keyval != GDK_KEY_w &&
+ event->keyval != GDK_KEY_Page_Up &&
+ event->keyval != GDK_KEY_KP_9 &&
+ event->keyval != GDK_KEY_Page_Down &&
+ event->keyval != GDK_KEY_KP_3;
+
+ if (event->state == (GDK_SHIFT_MASK | GDK_CONTROL_MASK))
+ return event->keyval != GDK_KEY_N &&
+ event->keyval != GDK_KEY_T &&
+ event->keyval != GDK_KEY_Page_Up &&
+ event->keyval != GDK_KEY_KP_9 &&
+ event->keyval != GDK_KEY_Page_Down &&
+ event->keyval != GDK_KEY_KP_3;
+
+ return TRUE;
+}
+
static gboolean
ephy_window_key_press_event (GtkWidget *widget,
GdkEventKey *event)
@@ -856,7 +880,8 @@ ephy_window_key_press_event (GtkWidget *widget,
* first propagate the event to the web view. Next, try
* accelerators only if the web view did not handle the event.
*/
- if (!gtk_window_propagate_key_event (GTK_WINDOW (widget), event)) {
+ if (!should_web_view_receive_key_press_event (event) ||
+ !gtk_window_propagate_key_event (GTK_WINDOW (widget), event)) {
if (!gtk_window_activate_key (GTK_WINDOW (widget), event))
ephy_window_bound_accels (widget, event);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]