From: Bastien Nocera Date: Wed, 5 May 2021 12:28:15 +0000 (+0200) Subject: gtk: Translate navigation events coordinates X-Git-Tag: 1.19.3~509^2~130 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9cd6d02cfff5239e672c7b83f349dd47b5396e72;p=platform%2Fupstream%2Fgstreamer.git gtk: Translate navigation events coordinates If the application passed down some pointer coordinates, translate those from display coordinates to stream coordinates, so things work as expected even if the video is resized. Part-of: --- diff --git a/ext/gtk/gstgtkbasesink.c b/ext/gtk/gstgtkbasesink.c index 0c48f54..b690c44 100644 --- a/ext/gtk/gstgtkbasesink.c +++ b/ext/gtk/gstgtkbasesink.c @@ -283,6 +283,19 @@ gst_gtk_base_sink_navigation_send_event (GstNavigation * navigation, GstGtkBaseSink *sink = GST_GTK_BASE_SINK (navigation); GstEvent *event; GstPad *pad; + gdouble x, y; + + if (gst_structure_get_double (structure, "pointer_x", &x) && + gst_structure_get_double (structure, "pointer_y", &y)) { + GtkGstBaseWidget *widget = gst_gtk_base_sink_get_widget (sink); + gdouble stream_x, stream_y; + + gtk_gst_base_widget_display_size_to_stream_size (widget, + x, y, &stream_x, &stream_y); + gst_structure_set (structure, + "pointer_x", G_TYPE_DOUBLE, (gdouble) stream_x, + "pointer_y", G_TYPE_DOUBLE, (gdouble) stream_y, NULL); + } event = gst_event_new_navigation (structure); pad = gst_pad_get_peer (GST_VIDEO_SINK_PAD (sink));