[empathy] Use new smiley parser in EmpathyChatTextView.
- From: Xavier Claessens <xclaesse src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [empathy] Use new smiley parser in EmpathyChatTextView.
- Date: Thu, 26 Nov 2009 09:19:37 +0000 (UTC)
commit 591c58b68cb39c62d22d76f394c30481b0821018
Author: Xavier Claessens <xclaesse gmail com>
Date: Mon Oct 26 12:59:09 2009 +0100
Use new smiley parser in EmpathyChatTextView.
libempathy-gtk/empathy-chat-text-view.c | 29 ++++++++++++++++++-----------
libempathy-gtk/empathy-smiley-manager.h | 4 ++--
2 files changed, 20 insertions(+), 13 deletions(-)
---
diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c
index de777f2..aa8676b 100644
--- a/libempathy-gtk/empathy-chat-text-view.c
+++ b/libempathy-gtk/empathy-chat-text-view.c
@@ -1262,7 +1262,8 @@ chat_text_view_insert_text_with_emoticons (EmpathyChatTextView *view,
{
EmpathyChatTextViewPriv *priv = GET_PRIV (view);
gboolean use_smileys = FALSE;
- GSList *smileys, *l;
+ GSList *hits, *l;
+ gint last = 0;
empathy_conf_get_bool (empathy_conf_get (),
EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
@@ -1273,19 +1274,25 @@ chat_text_view_insert_text_with_emoticons (EmpathyChatTextView *view,
return;
}
- smileys = empathy_smiley_manager_parse (priv->smiley_manager, str);
- for (l = smileys; l; l = l->next) {
- EmpathySmiley *smiley;
+ hits = empathy_smiley_manager_parse_len (priv->smiley_manager, str, -1);
+ for (l = hits; l; l = l->next) {
+ EmpathySmileyHit *hit = l->data;
- smiley = l->data;
- if (smiley->pixbuf) {
- gtk_text_buffer_insert_pixbuf (priv->buffer, iter, smiley->pixbuf);
- } else {
- gtk_text_buffer_insert (priv->buffer, iter, smiley->str, -1);
+ if (hit->start > last) {
+ /* Append the text between last smiley (or the
+ * start of the message) and this smiley */
+ gtk_text_buffer_insert (priv->buffer, iter, str + last,
+ hit->start - last);
}
- empathy_smiley_free (smiley);
+ gtk_text_buffer_insert_pixbuf (priv->buffer, iter, hit->pixbuf);
+
+ last = hit->end;
+
+ empathy_smiley_hit_free (hit);
}
- g_slist_free (smileys);
+ g_slist_free (hits);
+
+ gtk_text_buffer_insert (priv->buffer, iter, str + last, -1);
}
void
diff --git a/libempathy-gtk/empathy-smiley-manager.h b/libempathy-gtk/empathy-smiley-manager.h
index 7d37c59..9530fe8 100644
--- a/libempathy-gtk/empathy-smiley-manager.h
+++ b/libempathy-gtk/empathy-smiley-manager.h
@@ -56,8 +56,8 @@ typedef struct {
typedef struct {
GdkPixbuf *pixbuf;
const gchar *path;
- gint start;
- gint end;
+ gint start;
+ gint end;
} EmpathySmileyHit;
typedef void (*EmpathySmileyMenuFunc) (EmpathySmileyManager *manager,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]