From 8e2d33d3a5d17531a36e629bcf4c0bc36cbf1cfe Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Sun, 2 Nov 2014 20:40:40 +0100 Subject: Imported Upstream version 14.04.10 --- src/list-stack.vala | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/list-stack.vala (limited to 'src/list-stack.vala') diff --git a/src/list-stack.vala b/src/list-stack.vala new file mode 100644 index 0000000..cd9745d --- /dev/null +++ b/src/list-stack.vala @@ -0,0 +1,92 @@ +/* -*- Mode: Vala; indent-tabs-mode: nil; tab-width: 4 -*- + * + * Copyright (C) 2011,2012 Canonical Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Authored by: Michael Terry + */ + +public class ListStack : Gtk.Fixed +{ + public uint num_children + { + get + { + var children = get_children (); + return children.length (); + } + } + + private int width; + + construct + { + width = grid_size * GreeterList.BOX_WIDTH; + } + + public GreeterList? top () + { + var children = get_children (); + if (children == null) + return null; + else + return children.last ().data as GreeterList; + } + + public void push (GreeterList pushed) + { + return_if_fail (pushed != null); + + var children = get_children (); + + pushed.start_scrolling = false; + pushed.set_size_request (width, -1); + add (pushed); + + if (children != null) + { + var current = children.last ().data as GreeterList; + /* Clear any errors so when we come back, they will be gone. */ + current.selected_entry.reset_state (); + current.greeter_box.push (pushed); + } + } + + public void pop () + { + var children = get_children (); + + return_if_fail (children != null); + + unowned List prev = children.last ().prev; + if (prev != null) + (prev.data as GreeterList).greeter_box.pop (); + } + + public override void size_allocate (Gtk.Allocation allocation) + { + base.size_allocate (allocation); + var children = get_children (); + foreach (var child in children) + { + child.size_allocate (allocation); + } + } + + public override void get_preferred_width (out int min, out int nat) + { + min = width; + nat = width; + } +} -- cgit v1.2.3