video: Make the overlay clickable
authorMatthias Clasen <mclasen@redhat.com>
Sat, 17 Jun 2023 23:00:14 +0000 (19:00 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 17 Jun 2023 23:30:08 +0000 (19:30 -0400)
And add missing accessible labels at the same time.

Fixes: #4522
gtk/gtkvideo.c
gtk/ui/gtkvideo.ui

index df54a2d54556439a41b7d5f71fd94d5f34c0bf77..d91f84fc1a5fdab923ca26598c922df077d4901f 100644 (file)
@@ -31,6 +31,7 @@
 #include "gtkpicture.h"
 #include "gtkrevealer.h"
 #include "gtkwidgetprivate.h"
+#include "gtkgestureclick.h"
 #include "gtkprivate.h"
 
 /**
@@ -128,6 +129,18 @@ gtk_video_pressed (GtkVideo *self)
   gtk_video_reveal_controls (self);
 }
 
+static void
+overlay_clicked_cb (GtkGestureClick *gesture,
+                    unsigned int     n_press,
+                    double           x,
+                    double           y,
+                    gpointer         data)
+{
+  GtkVideo *self = data;
+
+  gtk_media_stream_set_playing (self->media_stream, TRUE);
+}
+
 static void
 gtk_video_realize (GtkWidget *widget)
 {
@@ -360,6 +373,7 @@ gtk_video_class_init (GtkVideoClass *klass)
   gtk_widget_class_bind_template_child (widget_class, GtkVideo, controls_revealer);
   gtk_widget_class_bind_template_callback (widget_class, gtk_video_motion);
   gtk_widget_class_bind_template_callback (widget_class, gtk_video_pressed);
+  gtk_widget_class_bind_template_callback (widget_class, overlay_clicked_cb);
 
   gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
   gtk_widget_class_set_css_name (widget_class, I_("video"));
index 94ee86610716825b3aac2ab17ff65294281e0983..14252b6d04d894c0e951b52f089acf976a406078 100644 (file)
             <property name="valign">3</property>
             <property name="icon-name">media-playback-start-symbolic</property>
             <property name="icon-size">2</property>
+            <property name="accessible-role">button</property>
+            <accessibility>
+              <property name="label" translatable="1">Play</property>
+            </accessibility>
+            <child>
+              <object class="GtkGestureClick">
+                <signal name="pressed" handler="overlay_clicked_cb"/>
+              </object>
+            </child>
             <layout>
               <property name="measure">1</property>
             </layout>