aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/trayicon.c84
-rw-r--r--src/trayicon.h2
2 files changed, 57 insertions, 29 deletions
diff --git a/src/trayicon.c b/src/trayicon.c
index 50c94f34..ae9b0244 100644
--- a/src/trayicon.c
+++ b/src/trayicon.c
@@ -163,6 +163,20 @@ TrayIcon *trayicon_create(MainWindow *mainwin)
#if GTK_CHECK_VERSION(2, 10, 0)
+void trayicon_show(TrayIcon *tray_icon)
+{
+ gtk_status_icon_set_visible(trayicon.status_icon, TRUE);
+};
+
+void trayicon_destroy(TrayIcon *tray_icon)
+{
+#if 0
+ g_object_unref(tray_icon->status_icon);
+ tray_icon->status_icon = NULL;
+#endif
+ gtk_status_icon_set_visible(tray_icon->status_icon, FALSE);
+}
+
void trayicon_set_tooltip(const gchar *text)
{
if (text) {
@@ -175,6 +189,24 @@ void trayicon_set_tooltip(const gchar *text)
}
}
+static guint notify_tag = 0;
+
+gboolean notify_timeout_cb(gpointer data)
+{
+ gtk_status_icon_set_blinking(trayicon.status_icon, FALSE);
+ notify_tag = 0;
+ return FALSE;
+}
+
+void trayicon_set_notify(gboolean enabled)
+{
+ if (enabled && notify_tag == 0) {
+ gtk_status_icon_set_blinking(trayicon.status_icon, enabled);
+ notify_tag = g_timeout_add(5000, notify_timeout_cb, NULL);
+ } else if (!enabled && notify_tag > 0)
+ g_source_remove(notify_tag);
+}
+
void trayicon_set_stock_icon(StockPixmap icon)
{
GdkPixbuf *pixbuf;
@@ -187,20 +219,6 @@ void trayicon_set_stock_icon(StockPixmap icon)
g_object_unref(scaled_pixbuf);
}
-void trayicon_show(TrayIcon *tray_icon)
-{
- gtk_status_icon_set_visible(trayicon.status_icon, TRUE);
-};
-
-void trayicon_destroy(TrayIcon *tray_icon)
-{
-#if 0
- g_object_unref(tray_icon->status_icon);
- tray_icon->status_icon = NULL;
-#endif
- gtk_status_icon_set_visible(tray_icon->status_icon, FALSE);
-}
-
static void trayicon_activated(GtkStatusIcon *status_icon, gpointer data)
{
MainWindow *mainwin = (MainWindow *)data;
@@ -219,6 +237,17 @@ static void trayicon_popup_menu_cb(GtkStatusIcon *status_icon, guint button,
#else
+void trayicon_show(TrayIcon *tray_icon)
+{
+ gtk_widget_show(tray_icon->widget);
+};
+
+void trayicon_destroy(TrayIcon *tray_icon)
+{
+ gtk_widget_destroy(tray_icon->widget);
+ tray_icon->widget = NULL;
+}
+
void trayicon_set_tooltip(const gchar *text)
{
if (text) {
@@ -232,6 +261,10 @@ void trayicon_set_tooltip(const gchar *text)
}
}
+void trayicon_set_notify(gboolean enabled)
+{
+}
+
void trayicon_set_stock_icon(StockPixmap icon)
{
GdkPixbuf *pixbuf;
@@ -244,17 +277,6 @@ void trayicon_set_stock_icon(StockPixmap icon)
g_object_unref(scaled_pixbuf);
}
-void trayicon_show(TrayIcon *tray_icon)
-{
- gtk_widget_show(tray_icon->widget);
-};
-
-void trayicon_destroy(TrayIcon *tray_icon)
-{
- gtk_widget_destroy(tray_icon->widget);
- tray_icon->widget = NULL;
-}
-
static void trayicon_button_pressed(GtkWidget *widget, GdkEventButton *event,
gpointer data)
{
@@ -336,19 +358,23 @@ TrayIcon *trayicon_create(MainWindow *mainwin)
return NULL;
}
-void trayicon_set_tooltip(const gchar *text)
+void trayicon_show(TrayIcon *tray_icon)
{
}
-void trayicon_set_stock_icon(StockPixmap icon)
+void trayicon_destroy(TrayIcon *tray_icon)
{
}
-void trayicon_show(TrayIcon *tray_icon)
+void trayicon_set_tooltip(const gchar *text)
{
}
-void trayicon_destroy(TrayIcon *tray_icon)
+void trayicon_set_notify(gboolean enabled)
+{
+}
+
+void trayicon_set_stock_icon(StockPixmap icon)
{
}
diff --git a/src/trayicon.h b/src/trayicon.h
index a5869666..af509dd9 100644
--- a/src/trayicon.h
+++ b/src/trayicon.h
@@ -43,8 +43,10 @@ struct _TrayIcon
};
TrayIcon *trayicon_create (MainWindow *mainwin);
+void trayicon_show (TrayIcon *tray_icon);
void trayicon_destroy (TrayIcon *tray_icon);
void trayicon_set_tooltip (const gchar *text);
+void trayicon_set_notify (gboolean enabled);
void trayicon_set_stock_icon (StockPixmap icon);
#endif /* __TRAYICON_H__ */