[gnome-builder] treenode: round of code style cleanup
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] treenode: round of code style cleanup
- Date: Tue, 27 Sep 2016 21:17:55 +0000 (UTC)
commit 81fccbc74aa3c2c6fd0e2a7a085db27071e6d074
Author: Christian Hergert <chergert redhat com>
Date: Tue Sep 27 13:52:58 2016 -0700
treenode: round of code style cleanup
libide/tree/ide-tree-node.c | 200 ++++++++++++++++++++++++++-----------------
libide/tree/ide-tree-node.h | 12 ++--
libide/tree/ide-tree.c | 7 +-
3 files changed, 130 insertions(+), 89 deletions(-)
---
diff --git a/libide/tree/ide-tree-node.c b/libide/tree/ide-tree-node.c
index 2dc846b..09dcb48 100644
--- a/libide/tree/ide-tree-node.c
+++ b/libide/tree/ide-tree-node.c
@@ -35,7 +35,7 @@ struct _IdeTreeNode
gchar *text;
IdeTree *tree;
GQuark icon_name;
- GIcon *icon;
+ GIcon *gicon;
GList *emblems;
guint use_markup : 1;
guint needs_build : 1;
@@ -57,7 +57,7 @@ enum {
PROP_0,
PROP_CHILDREN_POSSIBLE,
PROP_ICON_NAME,
- PROP_ICON,
+ PROP_GICON,
PROP_ITEM,
PROP_PARENT,
PROP_TEXT,
@@ -273,36 +273,43 @@ ide_tree_node_get_parent (IdeTreeNode *node)
* ide_tree_node_get_gicon:
*
* Fetch the GIcon, re-render if necessary
+ *
+ * Returns: (transfer none): An #GIcon or %NULL.
*/
GIcon *
-ide_tree_node_get_gicon (IdeTreeNode *node)
+ide_tree_node_get_gicon (IdeTreeNode *self)
{
const gchar *icon_name;
- GIcon *icon;
- GList *element;
- g_return_val_if_fail (IDE_IS_TREE_NODE (node), NULL);
+ g_return_val_if_fail (IDE_IS_TREE_NODE (self), NULL);
+
+ icon_name = ide_tree_node_get_icon_name (self);
- icon_name = node ? ide_tree_node_get_icon_name (node) : NULL;
- if (!(node->icon) && icon_name)
+ if G_UNLIKELY (self->gicon == NULL && icon_name != NULL)
{
- icon = g_themed_icon_new (icon_name);
- node->icon = g_emblemed_icon_new (icon, NULL);
- element = node->emblems;
- while (element)
+ g_autoptr(GIcon) base = NULL;
+ g_autoptr(GIcon) icon = NULL;
+
+ base = g_themed_icon_new (icon_name);
+ icon = g_emblemed_icon_new (base, NULL);
+
+ for (GList *iter = self->emblems; iter != NULL; iter = iter->next)
{
- GIcon *emblem_icon = g_themed_icon_new (element->data);
- GEmblem *emblem = g_emblem_new (emblem_icon);
- g_emblemed_icon_add_emblem (node->icon, emblem);
- g_object_unref (&emblem);
- g_object_unref (&emblem_icon);
- element = element->next;
+ const gchar *emblem_icon_name = iter->data;
+ g_autoptr(GIcon) emblem_base = NULL;
+ g_autoptr(GEmblem) emblem = NULL;
+
+ emblem_base = g_themed_icon_new (emblem_icon_name);
+ emblem = g_emblem_new (emblem_base);
+
+ g_emblemed_icon_add_emblem (G_EMBLEMED_ICON (icon), emblem);
}
- g_object_notify_by_pspec (G_OBJECT (node), properties [PROP_ICON]);
- g_clear_object (&icon);
+
+ if (g_set_object (&self->gicon, icon))
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_GICON]);
}
- return node->icon;
+ return self->gicon;
}
/**
@@ -340,88 +347,125 @@ ide_tree_node_set_icon_name (IdeTreeNode *node,
if (value != node->icon_name)
{
node->icon_name = value;
- g_clear_object (&node->icon);
+ g_clear_object (&node->gicon);
g_object_notify_by_pspec (G_OBJECT (node), properties [PROP_ICON_NAME]);
+ g_object_notify_by_pspec (G_OBJECT (node), properties [PROP_GICON]);
}
}
+/**
+ * ide_tree_node_add_emblem:
+ * @self: An #IdeTreeNode
+ * @emblem_name: the icon-name of the emblem
+ *
+ * Adds an emplem to be rendered on top of the node.
+ *
+ * Use ide_tree_node_remove_emblem() to remove an emblem.
+ */
void
-ide_tree_node_add_emblem (IdeTreeNode *node,
- const gchar *emblem_name)
+ide_tree_node_add_emblem (IdeTreeNode *self,
+ const gchar *emblem)
{
- GList *elem;
- GList *elem_tmp;
- g_return_if_fail (IDE_IS_TREE_NODE (node));
+ g_return_if_fail (IDE_IS_TREE_NODE (self));
- elem_tmp = node->emblems;
- elem = elem_tmp;
- while (elem_tmp != NULL)
+ for (GList *iter = self->emblems; iter != NULL; iter = iter->next)
{
- if (!g_strcmp0 (emblem_name, elem_tmp->data))
+ const gchar *iter_icon_name = iter->data;
+
+ if (g_strcmp0 (iter_icon_name, emblem) == 0)
return;
- elem = elem_tmp;
- elem_tmp = elem_tmp->next;
}
- gchar *data = g_strdup (emblem_name);
- if(!data)
- return;
- elem = g_list_append (elem, g_strdup(emblem_name));
- if (!node->emblems)
- node->emblems = elem;
-
- g_clear_object (&node->icon);
+ self->emblems = g_list_prepend (self->emblems, g_strdup (emblem));
+ g_clear_object (&self->gicon);
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_GICON]);
}
void
-ide_tree_node_remove_emblem (IdeTreeNode *node,
- const gchar *emblem_name)
+ide_tree_node_remove_emblem (IdeTreeNode *self,
+ const gchar *emblem_name)
{
- GList *elem;
- g_return_if_fail (IDE_IS_TREE_NODE (node));
+ g_return_if_fail (IDE_IS_TREE_NODE (self));
- elem = g_list_find_custom (node->emblems, emblem_name, g_strcmp0);
- if (elem)
+ for (GList *iter = self->emblems; iter != NULL; iter = iter->next)
{
- g_free (elem->data);
- node->emblems = g_list_remove (node->emblems, elem->data);
- g_clear_object (&node->icon);
+ gchar *iter_icon_name = iter->data;
+
+ if (g_strcmp0 (iter_icon_name, emblem_name) == 0)
+ {
+ g_free (iter_icon_name);
+ self->emblems = g_list_delete_link (self->emblems, iter);
+ g_clear_object (&self->gicon);
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_GICON]);
+ return;
+ }
}
}
+/**
+ * ide_tree_node_clear_emblems:
+ *
+ * Removes all emblems from @self.
+ */
void
-ide_tree_node_clear_emblems (IdeTreeNode *node)
+ide_tree_node_clear_emblems (IdeTreeNode *self)
{
- g_return_if_fail (IDE_IS_TREE_NODE (node));
+ g_return_if_fail (IDE_IS_TREE_NODE (self));
- g_list_free_full (node->emblems, g_free);
- node->emblems = NULL;
- g_clear_object (&node->icon);
+ g_list_free_full (self->emblems, g_free);
+ self->emblems = NULL;
+ g_clear_object (&self->gicon);
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_GICON]);
}
+/**
+ * ide_tree_node_has_emblem:
+ * @self: An #IdeTreeNode
+ * @emblem_name: a string containing the emblem name
+ *
+ * Checks to see if @emblem_name has been added to the #IdeTreeNode.
+ *
+ * Returns: %TRUE if @emblem_name is used by @self
+ */
gboolean
-ide_tree_node_has_emblem (IdeTreeNode *node,
- const gchar *emblem_name)
+ide_tree_node_has_emblem (IdeTreeNode *self,
+ const gchar *emblem_name)
{
- g_return_val_if_fail (IDE_IS_TREE_NODE (node), FALSE);
+ g_return_val_if_fail (IDE_IS_TREE_NODE (self), FALSE);
+
+ for (GList *iter = self->emblems; iter != NULL; iter = iter->next)
+ {
+ const gchar *iter_icon_name = iter->data;
+
+ if (g_strcmp0 (iter_icon_name, emblem_name) == 0)
+ return TRUE;
+ }
- return g_list_find_custom (node->emblems, emblem_name, g_strcmp0) != NULL;
+ return FALSE;
}
void
-ide_tree_node_set_emblems (IdeTreeNode *node,
- GList *emblems)
+ide_tree_node_set_emblems (IdeTreeNode *self,
+ const gchar * const *emblems)
{
- g_return_if_fail (IDE_IS_TREE_NODE (node));
- g_return_if_fail (emblems);
+ g_return_if_fail (IDE_IS_TREE_NODE (self));
+
+ if (self->emblems != NULL)
+ {
+ g_list_free_full (self->emblems, g_free);
+ self->emblems = NULL;
+ }
- if (emblems != node->emblems)
+ if (emblems != NULL)
{
- if (node->emblems)
- g_list_free_full (node->emblems, g_free);
- node->emblems = g_list_copy_deep (emblems, (GCopyFunc) g_strdup, NULL);
- g_clear_object (&node->icon);
+ guint len = g_strv_length ((gchar **)emblems);
+
+ for (guint i = len; i > 0; i--)
+ self->emblems = g_list_prepend (self->emblems, g_strdup (emblems[i-1]));
}
+
+ g_clear_object (&self->gicon);
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_GICON]);
}
/**
@@ -434,7 +478,7 @@ ide_tree_node_set_emblems (IdeTreeNode *node,
*/
void
ide_tree_node_set_item (IdeTreeNode *node,
- GObject *item)
+ GObject *item)
{
g_return_if_fail (IDE_IS_TREE_NODE (node));
g_return_if_fail (!item || G_IS_OBJECT (item));
@@ -445,7 +489,7 @@ ide_tree_node_set_item (IdeTreeNode *node,
void
_ide_tree_node_set_parent (IdeTreeNode *node,
- IdeTreeNode *parent)
+ IdeTreeNode *parent)
{
g_return_if_fail (IDE_IS_TREE_NODE (node));
g_return_if_fail (node->parent == NULL);
@@ -675,14 +719,14 @@ ide_tree_node_get_property (GObject *object,
g_value_set_string (value, g_quark_to_string (node->icon_name));
break;
- case PROP_ICON:
- g_value_set_object (value, node->icon);
- break;
-
case PROP_ITEM:
g_value_set_object (value, node->item);
break;
+ case PROP_GICON:
+ g_value_set_object (value, node->gicon);
+ break;
+
case PROP_PARENT:
g_value_set_object (value, node->parent);
break;
@@ -790,13 +834,13 @@ ide_tree_node_class_init (IdeTreeNodeClass *klass)
NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
/**
- * IdeTreeNode:icon:
+ * IdeTreeNode:gicon:
*
* The cached GIcon to display.
*/
- properties[PROP_ICON] =
- g_param_spec_object ("icon",
- "Icon",
+ properties[PROP_GICON] =
+ g_param_spec_object ("gicon",
+ "GIcon",
"The GIcon object",
G_TYPE_ICON,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
diff --git a/libide/tree/ide-tree-node.h b/libide/tree/ide-tree-node.h
index 3015404..704cd67 100644
--- a/libide/tree/ide-tree-node.h
+++ b/libide/tree/ide-tree-node.h
@@ -66,15 +66,15 @@ gboolean ide_tree_node_get_use_markup (IdeTreeNode *sel
void ide_tree_node_set_use_markup (IdeTreeNode *self,
gboolean use_markup);
GIcon *ide_tree_node_get_gicon (IdeTreeNode *self);
-void ide_tree_node_add_emblem (IdeTreeNode *node,
+void ide_tree_node_add_emblem (IdeTreeNode *self,
const gchar *emblem_name);
-void ide_tree_node_remove_emblem (IdeTreeNode *node,
+void ide_tree_node_remove_emblem (IdeTreeNode *self,
const gchar *emblem_name);
-void ide_tree_node_clear_emblems (IdeTreeNode *node);
-gboolean ide_tree_node_has_emblem (IdeTreeNode *node,
+void ide_tree_node_clear_emblems (IdeTreeNode *self);
+gboolean ide_tree_node_has_emblem (IdeTreeNode *self,
const gchar *emblem_name);
-void ide_tree_node_set_emblems (IdeTreeNode *node,
- GList *emblems);
+void ide_tree_node_set_emblems (IdeTreeNode *self,
+ const gchar * const *emblems);
gboolean ide_tree_node_get_use_dim_label (IdeTreeNode *self);
void ide_tree_node_set_use_dim_label (IdeTreeNode *self,
gboolean use_dim_label);
diff --git a/libide/tree/ide-tree.c b/libide/tree/ide-tree.c
index 63925fe..47354c2 100644
--- a/libide/tree/ide-tree.c
+++ b/libide/tree/ide-tree.c
@@ -467,9 +467,9 @@ pixbuf_func (GtkCellLayout *cell_layout,
GtkTreeIter *iter,
gpointer data)
{
- IdeTreeNode *node;
+ g_autoptr(IdeTreeNode) node = NULL;
+ g_autoptr(GIcon) old_icon = NULL;
GIcon *icon;
- GIcon *old_icon;
g_assert (GTK_IS_CELL_LAYOUT (cell_layout));
g_assert (GTK_IS_CELL_RENDERER_PIXBUF (cell));
@@ -481,9 +481,6 @@ pixbuf_func (GtkCellLayout *cell_layout,
g_object_get (cell, "gicon", &old_icon, NULL);
if (icon != old_icon)
g_object_set (cell, "gicon", icon, NULL);
-
- g_clear_object (&old_icon);
- g_clear_object (&node);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]