summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorP. F. Chimento <philip.chimento@gmail.com>2013-05-14 12:19:21 +0200
committerP. F. Chimento <philip.chimento@gmail.com>2013-05-14 12:19:21 +0200
commitac2490118e389085081768f1d8d0238e5bfa42b0 (patch)
tree651073c0989e32cebdb4d675c26c51ba5c8c0467
parent5c935a5689feedcf1b4700c0fb145f1c061e41c8 (diff)
Treat pages with no name as having name NULL
[endlessm/eos-sdk#58]
-rw-r--r--endless/eospagemanager.c36
-rw-r--r--test/test-page-manager.c22
2 files changed, 39 insertions, 19 deletions
diff --git a/endless/eospagemanager.c b/endless/eospagemanager.c
index a76f397..051ccce 100644
--- a/endless/eospagemanager.c
+++ b/endless/eospagemanager.c
@@ -540,9 +540,8 @@ eos_page_manager_class_init (EosPageManagerClass *klass)
* EosPageManager:visible-page-name:
*
* The name of the page that is currently being displayed by the page manager.
- * If the page manager has no pages, then this is %NULL.
- * However, if there is a page currently being displayed but it has no name,
- * then this is the empty string (<code>""</code>).
+ * If the page manager has no pages, or if there is a page currently being
+ * displayed but it has no name, then this is %NULL.
*/
eos_page_manager_props[PROP_VISIBLE_PAGE_NAME] =
g_param_spec_string ("visible-page-name", "Visible page name",
@@ -659,8 +658,8 @@ eos_page_manager_set_visible_page (EosPageManager *self,
* Gets the name of the page widget that @self is currently displaying.
* See #EosPageManager:visible-page for more information.
*
- * Returns: the name of the page, or %NULL if @self does not have any pages,
- * or the empty string if the page does not have a name.
+ * Returns: (allow-none): the name of the page, or %NULL if @self does not have
+ * any pages or if the visible page does not have a name.
*/
const gchar *
eos_page_manager_get_visible_page_name (EosPageManager *self)
@@ -687,6 +686,7 @@ eos_page_manager_set_visible_page_name (EosPageManager *self,
const gchar *page_name)
{
g_return_if_fail (EOS_IS_PAGE_MANAGER (self));
+ g_return_if_fail (page_name != NULL);
EosPageManagerPageInfo *info = find_page_info_by_name (self, page_name);
if (info == NULL)
@@ -707,7 +707,7 @@ eos_page_manager_set_visible_page_name (EosPageManager *self,
* page manager.
* See #EosPageManager:name for more information.
*
- * Returns: the name of @page, or the empty string if @page does not have a
+ * Returns: (allow-none): the name of @page, or %NULL if @page does not have a
* name.
*/
const gchar *
@@ -724,9 +724,6 @@ eos_page_manager_get_page_name (EosPageManager *self,
return NULL;
}
- if (info->name == NULL)
- return "";
-
return info->name;
}
@@ -734,10 +731,11 @@ eos_page_manager_get_page_name (EosPageManager *self,
* eos_page_manager_set_page_name:
* @self: the page manager
* @page: the page to be renamed
- * @name: the new name for @page
+ * @name: (allow-none): the new name for @page
*
* Changes the name of @page, which must previously have been added to the
* page manager.
+ * To remove @page's name, pass %NULL for @name.
* See #EosPageManager:name for more information.
*/
void
@@ -745,17 +743,22 @@ eos_page_manager_set_page_name (EosPageManager *self,
GtkWidget *page,
const gchar *name)
{
+ EosPageManagerPageInfo *info;
+
g_return_if_fail (EOS_IS_PAGE_MANAGER (self));
g_return_if_fail (GTK_IS_WIDGET (page));
/* Two pages with the same name are not allowed */
- EosPageManagerPageInfo *info = find_page_info_by_name (self, name);
- if (info != NULL && info->page != page)
+ if (name != NULL)
{
- g_critical ("Not setting page name to \"%s\", because page manager "
- "already contains a page by that name",
- name);
- return;
+ info = find_page_info_by_name (self, name);
+ if (info != NULL && info->page != page)
+ {
+ g_critical ("Not setting page name to \"%s\", because page manager "
+ "already contains a page by that name",
+ name);
+ return;
+ }
}
info = find_page_info_by_widget (self, page);
@@ -797,6 +800,7 @@ eos_page_manager_remove_page_by_name (EosPageManager *self,
const gchar *name)
{
g_return_if_fail (EOS_IS_PAGE_MANAGER (self));
+ g_return_if_fail (name != NULL);
EosPageManagerPageInfo *info = find_page_info_by_name (self, name);
if (info == NULL)
diff --git a/test/test-page-manager.c b/test/test-page-manager.c
index 00ce0ad..b1d862f 100644
--- a/test/test-page-manager.c
+++ b/test/test-page-manager.c
@@ -176,12 +176,26 @@ test_pm_page_no_name (PageManagerFixture *fixture,
GtkWidget *new_page = gtk_label_new("new");
gtk_container_add (GTK_CONTAINER (fixture->pm), new_page);
name_get = eos_page_manager_get_page_name (EOS_PAGE_MANAGER (fixture->pm), new_page);
- g_assert_cmpstr (name_get, ==, "");
+ g_assert (name_get == NULL);
gtk_container_child_get (GTK_CONTAINER (fixture->pm), new_page,
"name", &name_prop,
NULL);
- g_assert_cmpstr (name_prop, ==, "");
- g_free (name_prop);
+ g_assert (name_prop == NULL);
+}
+
+static void
+test_pm_set_page_no_name (PageManagerFixture *fixture,
+ gconstpointer unused)
+{
+ const gchar *name;
+ eos_page_manager_set_page_name (EOS_PAGE_MANAGER (fixture->pm),
+ fixture->page1,
+ NULL);
+ name = eos_page_manager_get_page_name (EOS_PAGE_MANAGER (fixture->pm),
+ fixture->page1);
+ g_assert (name == NULL);
+ name = eos_page_manager_get_visible_page_name (EOS_PAGE_MANAGER (fixture->pm));
+ g_assert (name == NULL);
}
static void
@@ -310,6 +324,8 @@ add_page_manager_tests (void)
ADD_PAGE_MANAGER_TEST ("/page-manager/child-prop-name",
test_pm_child_prop_name);
ADD_PAGE_MANAGER_TEST ("/page-manager/page-no-name", test_pm_page_no_name);
+ ADD_PAGE_MANAGER_TEST ("/page-manager/set-page-no-name",
+ test_pm_set_page_no_name);
ADD_PAGE_MANAGER_TEST ("/page-manager/remove-page-by-name",
test_pm_remove_page_by_name);
ADD_PAGE_MANAGER_TEST ("/page-manager/duplicate-page-name",