static void smiley_manager_add_valist (EmpathySmileyManager *manager, GdkPixbuf *smiley, const gchar *first_str, va_list var_args) { EmpathySmileyManagerPriv *priv = GET_PRIV (manager); const gchar *str; for (str = first_str; str; str = va_arg (var_args, gchar*)) { smiley_manager_tree_insert (priv->tree, smiley, str); } priv->smileys = g_slist_prepend (priv->smileys, smiley_new (smiley, first_str)); }
static void smiley_manager_tree_insert (SmileyManagerTree *tree, GdkPixbuf *smiley, const gchar *str) { SmileyManagerTree *child; child = smiley_manager_tree_find_or_insert_child (tree, g_utf8_get_char (str)); str = g_utf8_next_char (str); if (*str) { smiley_manager_tree_insert (child, smiley, str); return; } child->pixbuf = g_object_ref (smiley); }
static void smiley_manager_tree_insert (SmileyManagerTree *tree, GdkPixbuf *pixbuf, const gchar *str, const gchar *path) { SmileyManagerTree *child; child = smiley_manager_tree_find_or_insert_child (tree, g_utf8_get_char (str)); str = g_utf8_next_char (str); if (*str) { smiley_manager_tree_insert (child, pixbuf, str, path); return; } child->pixbuf = g_object_ref (pixbuf); child->path = g_strdup (path); }
static void smiley_manager_add_valist (EmpathySmileyManager *manager, GdkPixbuf *pixbuf, gchar *path, const gchar *first_str, va_list var_args) { EmpathySmileyManagerPriv *priv = GET_PRIV (manager); const gchar *str; EmpathySmiley *smiley; for (str = first_str; str; str = va_arg (var_args, gchar*)) { smiley_manager_tree_insert (priv->tree, pixbuf, str, path); } /* We give the ownership of path to the smiley */ smiley = smiley_new (pixbuf, g_strdup (first_str), path); priv->smileys = g_slist_prepend (priv->smileys, smiley); }
static void smiley_manager_add_valist (EmpathySmileyManager *manager, GdkPixbuf *pixbuf, const gchar *path, const gchar *first_str, va_list var_args) { EmpathySmileyManagerPriv *priv = GET_PRIV (manager); const gchar *str; EmpathySmiley *smiley; for (str = first_str; str; str = va_arg (var_args, gchar*)) { smiley_manager_tree_insert (priv->tree, pixbuf, str, path); } g_object_set_data_full (G_OBJECT (pixbuf), "smiley_str", g_strdup (first_str), g_free); smiley = smiley_new (pixbuf, first_str); priv->smileys = g_slist_prepend (priv->smileys, smiley); }