summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--endless/eospagemanager.c16
-rw-r--r--test/test-page-manager.c17
2 files changed, 26 insertions, 7 deletions
diff --git a/endless/eospagemanager.c b/endless/eospagemanager.c
index 2db0975..e066f84 100644
--- a/endless/eospagemanager.c
+++ b/endless/eospagemanager.c
@@ -462,9 +462,21 @@ eos_page_manager_remove (GtkContainer *container,
if (info->name != NULL)
g_hash_table_remove (self->priv->pages_by_name, info->name);
- /* If this was the only page */
if (self->priv->visible_page_info == info)
- self->priv->visible_page_info = NULL;
+ {
+ /* If this was the only page */
+ if (self->priv->page_info == NULL)
+ {
+ self->priv->visible_page_info = NULL;
+ }
+ /* Otherwise set visible page as the first in our list. */
+ else
+ {
+ EosPageManagerPageInfo *visible_info = g_list_first (self->priv->page_info)->data;
+ set_visible_page_from_info (self, visible_info);
+ }
+
+ }
page_info_free (info);
diff --git a/test/test-page-manager.c b/test/test-page-manager.c
index 4122d7e..ecff997 100644
--- a/test/test-page-manager.c
+++ b/test/test-page-manager.c
@@ -411,11 +411,18 @@ test_pm_remove_page_undefined_behavior (PageManagerFixture *fixture,
gconstpointer unused)
{
GtkWidget *visible_page;
+ GtkWidget *page1 = gtk_label_new ("page1");
+ GtkWidget *page2 = gtk_label_new ("page2");
+ gtk_container_add (GTK_CONTAINER (fixture->pm), page1);
+ gtk_container_add (GTK_CONTAINER (fixture->pm), page2);
+ eos_page_manager_set_visible_page (EOS_PAGE_MANAGER (fixture->pm),
+ page1);
visible_page = eos_page_manager_get_visible_page (EOS_PAGE_MANAGER (fixture->pm));
- g_assert (visible_page == fixture->page1);
- gtk_container_remove (GTK_CONTAINER (fixture->pm), fixture->page1);
+ g_assert (visible_page == page1);
+ gtk_container_remove (GTK_CONTAINER (fixture->pm), page1);
+ // Only one page left, so it should be the visible page.
visible_page = eos_page_manager_get_visible_page (EOS_PAGE_MANAGER (fixture->pm));
- g_assert (visible_page != fixture->page1);
+ g_assert (visible_page == page2);
}
static void
@@ -599,7 +606,7 @@ add_page_manager_tests (void)
{
ADD_PAGE_MANAGER_TEST ("/page-manager/remove-page-behavior",
test_pm_remove_page_behavior);
- ADD_PAGE_MANAGER_TEST ("/page-manager/remove-page-undefined-behavior",
- test_pm_remove_page_undefined_behavior);
+ ADD_EMPTY_PAGE_MANAGER_TEST ("/page-manager/remove-page-undefined-behavior",
+ test_pm_remove_page_undefined_behavior);
}
}