[epiphany/wip/exalm/keys: 1/2] window: Use signal for forwarding keys to webkit
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/exalm/keys: 1/2] window: Use signal for forwarding keys to webkit
- Date: Wed, 24 Mar 2021 12:56:44 +0000 (UTC)
commit 47db8f94b3f2deb9a70eb950e18d9a9943fc11d8
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Wed Mar 24 17:53:35 2021 +0500
window: Use signal for forwarding keys to webkit
Don't override vfunc here, this way it's simpler and works better with
HdyTabView:shortcut-widget.
src/ephy-window.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
---
diff --git a/src/ephy-window.c b/src/ephy-window.c
index ab948eeff..1b5c93453 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -665,14 +665,15 @@ ephy_window_should_view_receive_key_press_event (EphyWindow *window,
}
static gboolean
-ephy_window_key_press_event (GtkWidget *widget,
- GdkEventKey *event)
+key_press_event_cb (EphyWindow *window,
+ GdkEventKey *event)
{
EphyWebView *view;
- view = ephy_embed_get_web_view (EPHY_WINDOW (widget)->active_embed);
- if (gtk_window_get_focus (GTK_WINDOW (widget)) != GTK_WIDGET (view))
- return GTK_WIDGET_CLASS (ephy_window_parent_class)->key_press_event (widget, event);
+ view = ephy_embed_get_web_view (window->active_embed);
+
+ if (gtk_window_get_focus (GTK_WINDOW (window)) != GTK_WIDGET (view))
+ return GDK_EVENT_PROPAGATE;
/* GtkWindow's key press handler first calls gtk_window_activate_key,
* then gtk_window_propagate_key_event. We want to do the opposite,
@@ -684,12 +685,8 @@ ephy_window_key_press_event (GtkWidget *widget,
* short-circuit the event propagation if it's a special keybinding
* that is reserved for Epiphany not allowed to be seen by webpages.
*/
- if (!ephy_window_should_view_receive_key_press_event (EPHY_WINDOW (widget), event) ||
- !gtk_window_propagate_key_event (GTK_WINDOW (widget), event)) {
- gtk_window_activate_key (GTK_WINDOW (widget), event);
-
- return GDK_EVENT_STOP;
- }
+ if (ephy_window_should_view_receive_key_press_event (window, event))
+ return gtk_widget_event (GTK_WIDGET (view), (GdkEvent *)event);
return GDK_EVENT_PROPAGATE;
}
@@ -3847,7 +3844,6 @@ ephy_window_class_init (EphyWindowClass *klass)
object_class->get_property = ephy_window_get_property;
object_class->set_property = ephy_window_set_property;
- widget_class->key_press_event = ephy_window_key_press_event;
widget_class->window_state_event = ephy_window_state_event;
widget_class->show = ephy_window_show;
widget_class->destroy = ephy_window_destroy;
@@ -3889,6 +3885,8 @@ static void
ephy_window_init (EphyWindow *window)
{
LOG ("EphyWindow initialising %p", window);
+
+ g_signal_connect (window, "key-press-event", G_CALLBACK (key_press_event_cb), NULL);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]