Have tray respect system icons

todo win32
This commit is contained in:
TingPing 2015-02-05 05:51:05 -05:00
parent ed395a094e
commit 320e058240
7 changed files with 27 additions and 34 deletions

View File

@ -11,10 +11,6 @@
<file alias="ulist_founder.png" preprocess="to-pixdata" compressed="true">icons/ulist_founder.png</file>
<file alias="ulist_netop.png" preprocess="to-pixdata" compressed="true">icons/ulist_netop.png</file>
<file alias="tray_fileoffer.png" preprocess="to-pixdata" compressed="true">icons/tray_fileoffer.png</file>
<file alias="tray_highlight.png" preprocess="to-pixdata" compressed="true">icons/tray_highlight.png</file>
<file alias="tray_message.png" preprocess="to-pixdata" compressed="true">icons/tray_message.png</file>
<file alias="tree_channel.png" preprocess="to-pixdata">icons/tree_channel.png</file>
<file alias="tree_dialog.png" preprocess="to-pixdata" compressed="true">icons/tree_dialog.png</file>
<file alias="tree_server.png" preprocess="to-pixdata" compressed="true">icons/tree_server.png</file>

View File

@ -1,4 +1,4 @@
icon_DATA = hexchat.png
icon_DATA = hexchat.png hexchat-tray-message.png hexchat-tray-hilight.png hexchat-tray-fileoffer.png
icondir = $(datadir)/icons/hicolor/48x48/apps
hicolor_DATA = hexchat.svg

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -35,10 +35,6 @@ GdkPixbuf *pix_ulist_owner;
GdkPixbuf *pix_ulist_founder;
GdkPixbuf *pix_ulist_netop;
GdkPixbuf *pix_tray_fileoffer;
GdkPixbuf *pix_tray_highlight;
GdkPixbuf *pix_tray_message;
GdkPixbuf *pix_tree_channel;
GdkPixbuf *pix_tree_dialog;
GdkPixbuf *pix_tree_server;
@ -115,10 +111,6 @@ pixmaps_init (void)
pix_ulist_founder = load_pixmap ("ulist_founder");
pix_ulist_netop = load_pixmap ("ulist_netop");
pix_tray_fileoffer = load_pixmap ("tray_fileoffer");
pix_tray_highlight = load_pixmap ("tray_highlight");
pix_tray_message = load_pixmap ("tray_message");
pix_tree_channel = load_pixmap ("tree_channel");
pix_tree_dialog = load_pixmap ("tree_dialog");
pix_tree_server = load_pixmap ("tree_server");

View File

@ -26,7 +26,6 @@
#include "../common/util.h"
#include "../common/outbound.h"
#include "fe-gtk.h"
#include "pixmaps.h"
#include "maingui.h"
#include "menu.h"
@ -47,10 +46,10 @@ typedef enum /* current icon status */
TS_CUSTOM /* plugin */
} TrayStatus;
#define ICON_NORMAL pix_hexchat
#define ICON_MSG pix_tray_message
#define ICON_HILIGHT pix_tray_highlight
#define ICON_FILE pix_tray_fileoffer
#define ICON_NORMAL "hexchat-tray"
#define ICON_MSG "hexchat-tray-message"
#define ICON_HILIGHT "hexchat-tray-hilight"
#define ICON_FILE "hexchat-tray-fileoffer"
#define TIMEOUT 500
static hexchat_plugin *ph;
@ -177,7 +176,7 @@ tray_stop_flash (void)
if (sticon)
{
gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL);
gtk_status_icon_set_from_icon_name (sticon, ICON_NORMAL);
nets = tray_count_networks ();
chans = tray_count_channels ();
if (nets)
@ -212,40 +211,43 @@ tray_reset_counts (void)
}
static int
tray_timeout_cb (GdkPixbuf *icon)
tray_timeout_cb (const char *icon)
{
if (custom_icon1)
/*if (custom_icon1)
{
if (gtk_status_icon_get_pixbuf (sticon) == custom_icon1)
{
if (custom_icon2)
gtk_status_icon_set_from_pixbuf (sticon, custom_icon2);
else
gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL);
gtk_status_icon_set_from_icon_name (sticon, ICON_NORMAL);
}
else
{
gtk_status_icon_set_from_pixbuf (sticon, custom_icon1);
}
}
else
else*/
{
if (gtk_status_icon_get_pixbuf (sticon) == ICON_NORMAL)
/*if (gtk_status_icon_get_pixbuf (sticon) == ICON_NORMAL)
gtk_status_icon_set_from_pixbuf (sticon, icon);
else
gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL);
else*/
gtk_status_icon_set_from_icon_name (sticon, ICON_NORMAL);
}
return 1;
}
static void
tray_set_flash (GdkPixbuf *icon)
tray_set_flash (char *icon)
{
const char *curr_icon;
if (!sticon)
return;
/* already flashing the same icon */
if (flash_tag && gtk_status_icon_get_pixbuf (sticon) == icon)
curr_icon = gtk_status_icon_get_icon_name (sticon);
if (flash_tag && (curr_icon && !g_strcmp0 (curr_icon, icon)))
return;
/* no flashing if window is focused */
@ -254,7 +256,7 @@ tray_set_flash (GdkPixbuf *icon)
tray_stop_flash ();
gtk_status_icon_set_from_pixbuf (sticon, icon);
gtk_status_icon_set_from_icon_name (sticon, icon);
if (prefs.hex_gui_tray_blink)
flash_tag = g_timeout_add (TIMEOUT, (GSourceFunc) tray_timeout_cb, icon);
}
@ -270,7 +272,7 @@ fe_tray_set_flash (const char *filename1, const char *filename2, int tout)
if (tout == -1)
tout = TIMEOUT;
#if 0
custom_icon1 = gdk_pixbuf_new_from_file (filename1, NULL);
if (filename2)
custom_icon2 = gdk_pixbuf_new_from_file (filename2, NULL);
@ -278,6 +280,7 @@ fe_tray_set_flash (const char *filename1, const char *filename2, int tout)
gtk_status_icon_set_from_pixbuf (sticon, custom_icon1);
flash_tag = g_timeout_add (tout, (GSourceFunc) tray_timeout_cb, NULL);
tray_status = TS_CUSTOM;
#endif
}
void
@ -316,9 +319,11 @@ fe_tray_set_file (const char *filename)
if (filename)
{
#if 0
custom_icon1 = gdk_pixbuf_new_from_file (filename, NULL);
gtk_status_icon_set_from_pixbuf (sticon, custom_icon1);
tray_status = TS_CUSTOM;
#endif
}
}
@ -374,7 +379,7 @@ fe_tray_set_icon (feicon icon)
}
static void
tray_set_flash (GdkPixbuf *icon)
tray_set_flash (const char *icon)
{
if (sticon)
{
@ -650,7 +655,7 @@ tray_init (void)
custom_icon1 = NULL;
custom_icon2 = NULL;
sticon = gtk_status_icon_new_from_pixbuf (ICON_NORMAL);
sticon = gtk_status_icon_new_from_icon_name (ICON_NORMAL);
if (!sticon)
return;
@ -708,9 +713,9 @@ make_menu ()
static void
tray_init (void)
{
sticon = app_indicator_new ("hexchat", "hexchat-tray", APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
sticon = app_indicator_new ("hexchat", ICON_NORMAL, APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
app_indicator_set_status (sticon, APP_INDICATOR_STATUS_ACTIVE);
//app_indicator_set_attention_icon_full (sticon, "/usr/share/icons/hicolor/32x32/apps/hexchat-attention.png", "");
app_indicator_set_attention_icon_full (sticon, ICON_HILIGHT, "");
app_indicator_set_menu (sticon, make_menu ());
}
#endif /* End AppIndicator */