qulogic/pidgin

Rework tray icon blinking
trac-17174
2017-09-20, Daniel Kamil Kozar
329cf2453fb8
Parents b185e9184501
Children 93c0cd117e1d
Rework tray icon blinking

Imported from https://developer.pidgin.im/ticket/17174 , authored by
Zephaniah E. Loss-Cutler-Hull .
--- a/pidgin/gtkdocklet-gtk.c Mon Sep 18 22:10:58 2017 -0500
+++ b/pidgin/gtkdocklet-gtk.c Wed Sep 20 01:38:28 2017 +0200
@@ -134,7 +134,7 @@
}
static void
-docklet_gtk_status_update_icon(PurpleStatusPrimitive status, gboolean connecting, gboolean pending)
+docklet_gtk_status_update_icon(PurpleStatusPrimitive status, gboolean connecting, gboolean pending, gboolean blinked)
{
const gchar *icon_name = NULL;
@@ -159,20 +159,17 @@
break;
}
- if (pending)
+ if (connecting) {
+ icon_name = PIDGIN_STOCK_TRAY_CONNECT;
+ }
+
+ if (!blinked && pending) {
icon_name = PIDGIN_STOCK_TRAY_PENDING;
- if (connecting)
- icon_name = PIDGIN_STOCK_TRAY_CONNECT;
+ }
if (icon_name) {
gtk_status_icon_set_from_icon_name(docklet, icon_name);
}
-
- 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);
- }
}
static void
--- a/pidgin/gtkdocklet.c Mon Sep 18 22:10:58 2017 -0500
+++ b/pidgin/gtkdocklet.c Wed Sep 20 01:38:28 2017 +0200
@@ -69,17 +69,21 @@
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(blinked);
+ }
} else {
- pidgin_docklet_update_icon();
+ pidgin_docklet_update_icon(blinked);
}
ret = TRUE; /* keep blinking */
} else {
docklet_blinking_timer = 0;
blinked = FALSE;
+ pidgin_docklet_update_icon(FALSE);
}
return ret;
@@ -207,7 +211,7 @@
pending = newpending;
connecting = newconnecting;
- pidgin_docklet_update_icon();
+ pidgin_docklet_update_icon(FALSE);
/* and schedule the blinker function if messages are pending */
if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink")
@@ -758,10 +762,10 @@
* public api for ui_ops
**************************************************************************/
void
-pidgin_docklet_update_icon()
+pidgin_docklet_update_icon(gboolean blinked)
{
if (ui_ops && ui_ops->update_icon)
- ui_ops->update_icon(status, connecting, pending);
+ ui_ops->update_icon(status, connecting, pending, blinked);
}
void
@@ -795,7 +799,7 @@
}
visible = TRUE;
docklet_update_status();
- pidgin_docklet_update_icon();
+ pidgin_docklet_update_icon(FALSE);
}
void
--- a/pidgin/gtkdocklet.h Mon Sep 18 22:10:58 2017 -0500
+++ b/pidgin/gtkdocklet.h Wed Sep 20 01:38:28 2017 +0200
@@ -31,7 +31,7 @@
{
void (*create)(void);
void (*destroy)(void);
- void (*update_icon)(PurpleStatusPrimitive, gboolean, gboolean);
+ void (*update_icon)(PurpleStatusPrimitive, gboolean, gboolean, gboolean);
void (*blank_icon)(void);
void (*set_tooltip)(gchar *);
GtkMenuPositionFunc position_menu;
@@ -39,7 +39,7 @@
/* functions in gtkdocklet.c */
-void pidgin_docklet_update_icon(void);
+void pidgin_docklet_update_icon(gboolean blinked);
void pidgin_docklet_clicked(int);
void pidgin_docklet_embedded(void);
void pidgin_docklet_remove(void);
--- a/pidgin/win32/gtkdocklet-win32.c Mon Sep 18 22:10:58 2017 -0500
+++ b/pidgin/win32/gtkdocklet-win32.c Wed Sep 20 01:38:28 2017 +0200
@@ -497,7 +497,7 @@
}
static void winpidgin_tray_update_icon(PurpleStatusPrimitive status,
- gboolean connecting, gboolean pending) {
+ gboolean connecting, gboolean pending, gboolean blinked) {
int icon_index;
g_return_if_fail(image != NULL);