summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Doliner <markdoliner@pidgin.im>2008-09-10 21:59:38 +0000
committerMark Doliner <markdoliner@pidgin.im>2008-09-10 21:59:38 +0000
commite779b275ba37edff04b9d77ea4ebdf2ca6b45ee7 (patch)
tree6ecf3685070de9fc522b9bef21726bee05531614
parent2ee2e65924b7f557daa0d307e9cf4fcdc1400ce4 (diff)
parent7af802f8d40dc9ae1dfef23fc6c0cf795c03012f (diff)
downloadpidgin-e779b275ba37edff04b9d77ea4ebdf2ca6b45ee7.tar.gz
merge of 'a2e8d72efd3416d5a4f8015ac667cd2a0ce86c40'
and '91dc48a14f59c0bf80cb18bd6e79c65ae62c7266'
-rw-r--r--.mtn-ignore1
-rw-r--r--pidgin/gtkblist.c46
-rw-r--r--pidgin/gtkprefs.c6
-rw-r--r--pidgin/gtksavedstatuses.c1
-rw-r--r--pidgin/gtkstatusbox.c3
-rw-r--r--po/POTFILES.in3
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