[epiphany/mcatanzaro/context-menu] embed-event: Fix invalid cast to GdkEventButton
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/mcatanzaro/context-menu] embed-event: Fix invalid cast to GdkEventButton
- Date: Mon, 18 Mar 2019 15:22:21 +0000 (UTC)
commit 60c9bb76f8ca9999c50fc517f49c4daee0506a81
Author: Michael Catanzaro <mcatanzaro igalia com>
Date: Mon Mar 18 10:20:54 2019 -0500
embed-event: Fix invalid cast to GdkEventButton
The context-menu is not guaranteed to be a GdkEventButton. It could also
be a GdkEventKey, or a generic GdkEvent of no type.
https://bugzilla.redhat.com/show_bug.cgi?id=1687185
embed/ephy-embed-event.c | 21 ++++++++++++++++-----
embed/ephy-embed-event.h | 2 +-
src/ephy-window.c | 2 +-
3 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/embed/ephy-embed-event.c b/embed/ephy-embed-event.c
index ec202ec90..ebd5f967a 100644
--- a/embed/ephy-embed-event.c
+++ b/embed/ephy-embed-event.c
@@ -58,17 +58,28 @@ ephy_embed_event_init (EphyEmbedEvent *embed_event)
}
EphyEmbedEvent *
-ephy_embed_event_new (GdkEventButton *event, WebKitHitTestResult *hit_test_result)
+ephy_embed_event_new (GdkEvent *event,
+ WebKitHitTestResult *hit_test_result)
{
EphyEmbedEvent *embed_event;
embed_event = g_object_new (EPHY_TYPE_EMBED_EVENT, NULL);
embed_event->hit_test_result = g_object_ref (hit_test_result);
- embed_event->button = event->button;
- embed_event->modifier = event->state;
- embed_event->x = event->x;
- embed_event->y = event->y;
+
+ switch (event->type) {
+ case GDK_BUTTON_PRESS:
+ embed_event->button = ((GdkEventButton *)event)->button;
+ embed_event->modifier = ((GdkEventButton *)event)->state;
+ embed_event->x = ((GdkEventButton *)event)->x;
+ embed_event->y = ((GdkEventButton *)event)->y;
+ break;
+ case GDK_KEY_PRESS:
+ embed_event->modifier = ((GdkEventKey *)event)->state;
+ break;
+ default:
+ break;
+ }
return embed_event;
}
diff --git a/embed/ephy-embed-event.h b/embed/ephy-embed-event.h
index e8843d844..a43360ce1 100644
--- a/embed/ephy-embed-event.h
+++ b/embed/ephy-embed-event.h
@@ -30,7 +30,7 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (EphyEmbedEvent, ephy_embed_event, EPHY, EMBED_EVENT, GObject)
-EphyEmbedEvent * ephy_embed_event_new (GdkEventButton *event,
+EphyEmbedEvent * ephy_embed_event_new (GdkEvent *event,
WebKitHitTestResult *hit_test_result);
guint ephy_embed_event_get_context (EphyEmbedEvent *event);
guint ephy_embed_event_get_button (EphyEmbedEvent *event);
diff --git a/src/ephy-window.c b/src/ephy-window.c
index dafa41bd1..cc081ea9f 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -1539,7 +1539,7 @@ populate_context_menu (WebKitWebView *web_view,
webkit_context_menu_remove_all (context_menu);
- embed_event = ephy_embed_event_new ((GdkEventButton *)event, hit_test_result);
+ embed_event = ephy_embed_event_new (event, hit_test_result);
_ephy_window_set_context_event (window, embed_event);
g_object_unref (embed_event);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]