diff options
author | Mark Doliner <markdoliner@pidgin.im> | 2008-09-10 21:59:38 +0000 |
---|---|---|
committer | Mark Doliner <markdoliner@pidgin.im> | 2008-09-10 21:59:38 +0000 |
commit | e779b275ba37edff04b9d77ea4ebdf2ca6b45ee7 (patch) | |
tree | 6ecf3685070de9fc522b9bef21726bee05531614 | |
parent | 2ee2e65924b7f557daa0d307e9cf4fcdc1400ce4 (diff) | |
parent | 7af802f8d40dc9ae1dfef23fc6c0cf795c03012f (diff) | |
download | pidgin-e779b275ba37edff04b9d77ea4ebdf2ca6b45ee7.tar.gz |
merge of 'a2e8d72efd3416d5a4f8015ac667cd2a0ce86c40'
and '91dc48a14f59c0bf80cb18bd6e79c65ae62c7266'
-rw-r--r-- | .mtn-ignore | 1 | ||||
-rw-r--r-- | pidgin/gtkblist.c | 46 | ||||
-rw-r--r-- | pidgin/gtkprefs.c | 6 | ||||
-rw-r--r-- | pidgin/gtksavedstatuses.c | 1 | ||||
-rw-r--r-- | pidgin/gtkstatusbox.c | 3 | ||||
-rw-r--r-- | po/POTFILES.in | 3 |
6 files changed, 23 insertions, 37 deletions
diff --git a/.mtn-ignore b/.mtn-ignore index ae4a3660fa..186a871a06 100644 --- a/.mtn-ignore +++ b/.mtn-ignore @@ -58,6 +58,7 @@ libpurple/purple-client-bindings.c libpurple/purple-client-bindings.h libpurple/purple-client-example libpurple/tests/check_libpurple +libpurple/tests/libpurple.. libpurple/version.h$ libpurple/win32/libpurplerc.rc$ libtool diff --git a/pidgin/gtkblist.c b/pidgin/gtkblist.c index 42734045f1..17a076c129 100644 --- a/pidgin/gtkblist.c +++ b/pidgin/gtkblist.c @@ -67,7 +67,6 @@ #include <gdk/gdk.h> #define HEADLINE_CLOSE_SIZE 12 -#define STEPS 50 typedef struct { @@ -168,18 +167,11 @@ typedef enum { PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */ } PidginBlistNodeFlags; -typedef enum { - RECENT_STATUS_NONE = 0, - RECENT_STATUS_SIGN_ON, - RECENT_STATUS_SIGN_OFF -} RecentStatus; - typedef struct _pidgin_blist_node { GtkTreeRowReference *row; gboolean contact_expanded; - RecentStatus recent_signonoff; + gboolean recent_signonoff; gint recent_signonoff_timer; - gint recent_signonoff_steps; struct { PurpleConversation *conv; time_t last_message; /* timestamp for last displayed message */ @@ -3746,11 +3738,11 @@ pidgin_blist_get_status_icon(PurpleBlistNode *node, PidginStatusIconSize size) p = purple_buddy_get_presence(buddy); trans = purple_presence_is_idle(p); - /*if (PURPLE_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff) + if (PURPLE_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff) icon = PIDGIN_STOCK_STATUS_LOGIN; else if (gtkbuddynode && gtkbuddynode->recent_signonoff) icon = PIDGIN_STOCK_STATUS_LOGOUT; - else */if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE)) + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE)) if (trans) icon = PIDGIN_STOCK_STATUS_BUSY_I; else @@ -6046,11 +6038,9 @@ static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *n GdkPixbuf *status, *avatar, *emblem, *prpl_icon; char *mark; char *idle = NULL; - struct _pidgin_blist_node *gtknode = ((PurpleBlistNode*)buddy)->ui_data; gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded; gboolean selected = (gtkblist->selected_node == node); gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); - int size; presence = purple_buddy_get_presence(buddy); if (editing_blist) @@ -6059,14 +6049,6 @@ static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *n status = pidgin_blist_get_status_icon((PurpleBlistNode*)buddy, biglist ? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL); - size = biglist ? 16 : 11; - if (gtknode->recent_signonoff == RECENT_STATUS_SIGN_ON) { - size = size / 2 + (size / 2 + (STEPS - gtknode->recent_signonoff_steps)) % (size / 2); - } else if (gtknode->recent_signonoff == RECENT_STATUS_SIGN_OFF) { - size = size - (STEPS - gtknode->recent_signonoff_steps) % (size / 2); - } - status = gdk_pixbuf_scale_simple(status, size, size, GDK_INTERP_BILINEAR); - /* Speed it up if we don't want buddy icons. */ if(biglist) avatar = pidgin_blist_get_buddy_icon((PurpleBlistNode *)buddy, TRUE, TRUE); @@ -6198,7 +6180,7 @@ static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode * BUDDY_ICON_COLUMN, NULL, CONTACT_EXPANDER_COLUMN, TRUE, CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE, - GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, + GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, -1); g_free(mark); if(status) @@ -7150,17 +7132,13 @@ pidgin_blist_get_handle() { static gboolean buddy_signonoff_timeout_cb(PurpleBuddy *buddy) { struct _pidgin_blist_node *gtknode = ((PurpleBlistNode*)buddy)->ui_data; - gboolean cont = TRUE; - if (--gtknode->recent_signonoff_steps == 0) { - gtknode->recent_signonoff = RECENT_STATUS_NONE; - gtknode->recent_signonoff_timer = 0; - cont = FALSE; - } + gtknode->recent_signonoff = FALSE; + gtknode->recent_signonoff_timer = 0; pidgin_blist_update(NULL, (PurpleBlistNode*)buddy); - return cont; + return FALSE; } static void buddy_signonoff_cb(PurpleBuddy *buddy) @@ -7173,12 +7151,11 @@ static void buddy_signonoff_cb(PurpleBuddy *buddy) gtknode = ((PurpleBlistNode*)buddy)->ui_data; - gtknode->recent_signonoff = PURPLE_BUDDY_IS_ONLINE(buddy) ? RECENT_STATUS_SIGN_ON : RECENT_STATUS_SIGN_OFF; + gtknode->recent_signonoff = TRUE; if(gtknode->recent_signonoff_timer > 0) purple_timeout_remove(gtknode->recent_signonoff_timer); - gtknode->recent_signonoff_steps = STEPS; - gtknode->recent_signonoff_timer = purple_timeout_add(100, + gtknode->recent_signonoff_timer = purple_timeout_add(10000, (GSourceFunc)buddy_signonoff_timeout_cb, buddy); } @@ -7655,10 +7632,7 @@ pidgin_blist_update_accounts_menu(void) gtk_widget_destroy(menuitem); } - if (!(accounts = purple_accounts_get_all())) - return; - - for (; accounts; accounts = accounts->next) { + for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) { char *buf = NULL; GtkWidget *image = NULL; PurpleAccount *account = NULL; diff --git a/pidgin/gtkprefs.c b/pidgin/gtkprefs.c index 8c91e6b7a7..6f9c623c69 100644 --- a/pidgin/gtkprefs.c +++ b/pidgin/gtkprefs.c @@ -1005,6 +1005,12 @@ interface_page(void) keyboard_shortcuts(ret); + /* Status selector options */ + vbox = pidgin_make_frame(ret, _("Status Selector")); + pidgin_prefs_checkbox(_("Keep the status message when the status is changed"), + PIDGIN_PREFS_ROOT "/status/keep_status_message", vbox); + + gtk_widget_show_all(ret); g_object_unref(sg); return ret; diff --git a/pidgin/gtksavedstatuses.c b/pidgin/gtksavedstatuses.c index 2ae61933a8..3cf3d5d6bc 100644 --- a/pidgin/gtksavedstatuses.c +++ b/pidgin/gtksavedstatuses.c @@ -1913,6 +1913,7 @@ pidgin_status_init(void) purple_prefs_add_none(PIDGIN_PREFS_ROOT "/status/dialog"); purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/width", 550); purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/height", 250); + purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/status/keep_status_message", FALSE); } void diff --git a/pidgin/gtkstatusbox.c b/pidgin/gtkstatusbox.c index 9fbeab330d..01e76a315d 100644 --- a/pidgin/gtkstatusbox.c +++ b/pidgin/gtkstatusbox.c @@ -2715,7 +2715,8 @@ static void pidgin_status_box_changed(PidginStatusBox *status_box) gtk_widget_show_all(status_box->vbox); status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box); gtk_widget_grab_focus(status_box->imhtml); - gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml)); + if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/status/keep_status_message")) + gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml)); } else { diff --git a/po/POTFILES.in b/po/POTFILES.in index 42b3400892..43cc471777 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -183,6 +183,8 @@ libpurple/status.c libpurple/util.c libpurple/win32/libc_interface.c pidgin.desktop.in +pidgin/artwork/hicolor/24x24/emotes/default.theme.in +pidgin/artwork/hicolor/24x24/emotes/none/none.theme.in pidgin/eggtrayicon.c pidgin/gtkaccount.c pidgin/gtkblist.c @@ -214,6 +216,7 @@ pidgin/gtkutils.c pidgin/gtkwhiteboard.c pidgin/pidgin.h pidgin/pidgincombobox.c +pidgin/pidginstock-artwork.c pidgin/pidginstock.c pidgin/pidgintooltip.c pidgin/pixmaps/emotes/default/24/default.theme.in |