diff --git a/data/ui/dialogs/main.ui b/data/ui/dialogs/main.ui index 3df029a..d55fea1 100644 --- a/data/ui/dialogs/main.ui +++ b/data/ui/dialogs/main.ui @@ -11,9 +11,9 @@ True False - slide True - True + + diff --git a/src/Dialogs/MainWindow.vala b/src/Dialogs/MainWindow.vala index 5428b54..b2fb535 100644 --- a/src/Dialogs/MainWindow.vala +++ b/src/Dialogs/MainWindow.vala @@ -40,26 +40,18 @@ public class Tootle.Dialogs.MainWindow: Hdy.Window, ISavedWindow { } public bool back () { - var children = deck.get_children (); - unowned var current = children.find (deck.visible_child); - if (current != null) { - unowned var prev = current.prev; - if (current.prev != null) { - deck.visible_child = prev.data; - (current.data as Views.Base).unused = true; - Timeout.add (deck.transition_duration, clean_unused_views); - } - } + deck.navigate (Hdy.NavigationDirection.BACK); return true; } - bool clean_unused_views () { - deck.get_children ().foreach (c => { - var view = c as Views.Base; - if (view != null && view.unused) - view.destroy (); - }); - return Source.REMOVE; + [GtkCallback] + void on_child_transition () { + if (deck.transition_running) + return; + + Widget unused_child; + while ((unused_child = deck.get_adjacent_child (Hdy.NavigationDirection.FORWARD)) != null) + unused_child.destroy (); } public override bool delete_event (Gdk.EventAny event) { diff --git a/src/Views/Base.vala b/src/Views/Base.vala index 754f304..8db533e 100644 --- a/src/Views/Base.vala +++ b/src/Views/Base.vala @@ -10,7 +10,6 @@ public class Tootle.Views.Base : Box { public string label { get; set; default = ""; } public bool needs_attention { get; set; default = false; } public bool current { get; set; default = false; } - public bool unused { get; set; default = false; } public SimpleActionGroup? actions { get; set; } public Container content { get; set; }