@@ -373,10 +373,15 @@ public class Tuba.Views.MediaViewer : Gtk.Widget, Gtk.Buildable, Adw.Swipeable {
373373 enabled = true ,
374374 allow_mouse_drag = true
375375 };
376+ swipe_tracker. prepare. connect (on_swipe_tracker_prepare);
376377 swipe_tracker. update_swipe. connect (on_update_swipe);
377378 swipe_tracker. end_swipe. connect (on_end_swipe);
378379 }
379380
381+ private void on_swipe_tracker_prepare (Adw .NavigationDirection direction ) {
382+ update_revealer_widget ();
383+ }
384+
380385 private void on_update_swipe (double progress ) {
381386 this . swipe_children_opacity = 0.0 ;
382387 this . swipe_progress = progress;
@@ -673,6 +678,7 @@ public class Tuba.Views.MediaViewer : Gtk.Widget, Gtk.Buildable, Adw.Swipeable {
673678 }
674679
675680 private void reset_media_viewer () {
681+ revealer_widgets. clear ();
676682 this . fullscreen = false ;
677683 todo_items. clear ();
678684
@@ -686,6 +692,11 @@ public class Tuba.Views.MediaViewer : Gtk.Widget, Gtk.Buildable, Adw.Swipeable {
686692 revealed = false ;
687693 }
688694
695+ private void update_revealer_widget () {
696+ if (revealed && revealer_widgets. has_key ((int ) carousel. position))
697+ scale_revealer. source_widget = revealer_widgets. get ((int ) carousel. position);
698+ }
699+
689700 private async string download_video (string url ) throws Error {
690701 return yield Host . download (url);
691702 }
@@ -702,6 +713,7 @@ public class Tuba.Views.MediaViewer : Gtk.Widget, Gtk.Buildable, Adw.Swipeable {
702713 do_todo_items ();
703714 }
704715
716+ public Gee . HashMap<int, Gtk . Widget > revealer_widgets = new Gee .HashMap<int, Gtk . Widget > ();
705717 public void add_media (
706718 string url ,
707719 Tuba .Attachment .MediaType media_type ,
@@ -710,11 +722,14 @@ public class Tuba.Views.MediaViewer : Gtk.Widget, Gtk.Buildable, Adw.Swipeable {
710722 bool as_is = false ,
711723 string ? alt_text = null ,
712724 string ? user_friendly_url = null ,
713- bool stream = false
725+ bool stream = false ,
726+ Gtk .Widget ? revealer_widget = null
714727 ) {
715728 Item item;
716729 string final_friendly_url = user_friendly_url == null ? url : user_friendly_url;
717730 Gdk . Paintable ? final_preview = as_is ? null : preview;
731+ if (revealer_widget != null )
732+ revealer_widgets. set (pos == null ? items. size : pos, revealer_widget);
718733
719734 if (media_type. is_video ()) {
720735 var video = new Gtk .Video ();
0 commit comments