diff options
author | Gary Kramlich <grim@reaperworld.com> | 2017-12-29 02:59:40 +0000 |
---|---|---|
committer | Gary Kramlich <grim@reaperworld.com> | 2017-12-29 02:59:40 +0000 |
commit | 2bc719673e691b1e57b5ffac87adb4086801ef51 (patch) | |
tree | 9c81de92cfc0aad784b37a5b29f7abb9ea5bbb9c | |
parent | 9d42e12c4f7096f53876c403eb3f5f98d4336e66 (diff) | |
parent | d9670b597d293cf1d31a44f651669933ad51c687 (diff) | |
download | pidgin-2bc719673e691b1e57b5ffac87adb4086801ef51.tar.gz |
Merged in strangeways/main/trac-17174 (pull request #264)
Rework tray icon blinking
Approved-by: Eion Robb <eionrobb@gmail.com>
Approved-by: Gary Kramlich <grim@reaperworld.com>
-rw-r--r-- | pidgin/gtkdocklet-gtk.c | 16 | ||||
-rw-r--r-- | pidgin/gtkdocklet.c | 10 |
2 files changed, 14 insertions, 12 deletions
diff --git a/pidgin/gtkdocklet-gtk.c b/pidgin/gtkdocklet-gtk.c index f70916bb57..4771e1e514 100644 --- a/pidgin/gtkdocklet-gtk.c +++ b/pidgin/gtkdocklet-gtk.c @@ -137,6 +137,7 @@ static void docklet_gtk_status_update_icon(PurpleStatusPrimitive status, gboolean connecting, gboolean pending) { const gchar *icon_name = NULL; + const gchar *current_icon_name = gtk_status_icon_get_icon_name(docklet); switch (status) { case PURPLE_STATUS_OFFLINE: @@ -159,19 +160,16 @@ docklet_gtk_status_update_icon(PurpleStatusPrimitive status, gboolean connecting break; } - if (pending) - icon_name = PIDGIN_STOCK_TRAY_PENDING; - if (connecting) + if (connecting && !purple_strequal(current_icon_name, PIDGIN_STOCK_TRAY_CONNECT)) { icon_name = PIDGIN_STOCK_TRAY_CONNECT; + } - if (icon_name) { - gtk_status_icon_set_from_icon_name(docklet, icon_name); + if (pending && !purple_strequal(current_icon_name, PIDGIN_STOCK_TRAY_PENDING)) { + icon_name = PIDGIN_STOCK_TRAY_PENDING; } - if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink")) { - gtk_status_icon_set_blinking(docklet, (pending && !connecting)); - } else if (gtk_status_icon_get_blinking(docklet)) { - gtk_status_icon_set_blinking(docklet, FALSE); + if (icon_name) { + gtk_status_icon_set_from_icon_name(docklet, icon_name); } } diff --git a/pidgin/gtkdocklet.c b/pidgin/gtkdocklet.c index 443e990f0a..6a1d608ef4 100644 --- a/pidgin/gtkdocklet.c +++ b/pidgin/gtkdocklet.c @@ -69,10 +69,13 @@ docklet_blink_icon(gpointer data) blinked = !blinked; - if(pending && !connecting) { - if (blinked) { - if (ui_ops && ui_ops->blank_icon) + if (pending) { + if (ui_ops && ui_ops->blank_icon) { + if (blinked) { ui_ops->blank_icon(); + } else { + pidgin_docklet_update_icon(); + } } else { pidgin_docklet_update_icon(); } @@ -80,6 +83,7 @@ docklet_blink_icon(gpointer data) } else { docklet_blinking_timer = 0; blinked = FALSE; + pidgin_docklet_update_icon(); } return ret; |