Mercurial > dwindows
diff gtk3/dw.c @ 1223:1255ba41adad
Added taskbar support for GTK...
This will only work for desktops running Gnome...
It will do nothing for Unity/KDE desktops.
GTK3 support is tested.... will test GTK2 after committing.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 10 Oct 2011 04:38:45 +0000 |
parents | 70dca53cb071 |
children | db21c0081387 |
line wrap: on
line diff
--- a/gtk3/dw.c Mon Oct 10 02:54:27 2011 +0000 +++ b/gtk3/dw.c Mon Oct 10 04:38:45 2011 +0000 @@ -6507,6 +6507,22 @@ DW_MUTEX_UNLOCK; } +/* Translate the status message into a message on our buddy window */ +static void _status_translate(GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer user_data) +{ + GdkEventButton event = { 0 }; + long x, y; + gboolean retval; + + dw_pointer_query_pos(&x, &y); + + event.button = button; + event.x = x; + event.y = y; + + g_signal_emit_by_name(G_OBJECT(user_data), "button_press_event", &event, &retval); +} + /* * Inserts an icon into the taskbar. * Parameters: @@ -6516,7 +6532,19 @@ */ void dw_taskbar_insert(HWND handle, HICN icon, char *bubbletext) { - /* TODO */ + GtkStatusIcon *status; + GdkPixbuf *pixbuf; + int _locked_by_me = FALSE; + + DW_MUTEX_LOCK; + pixbuf = _find_pixbuf(icon, NULL, NULL); + status = gtk_status_icon_new_from_pixbuf(pixbuf); + if(bubbletext) + gtk_status_icon_set_tooltip_text(status, bubbletext); + g_object_set_data(G_OBJECT(handle), "_dw_taskbar", status); + g_signal_connect(G_OBJECT (status), "popup-menu", G_CALLBACK (_status_translate), handle); + gtk_status_icon_set_visible(status, TRUE); + DW_MUTEX_UNLOCK; } /* @@ -6527,7 +6555,13 @@ */ void dw_taskbar_delete(HWND handle, HICN icon) { - /* TODO */ + GtkStatusIcon *status; + int _locked_by_me = FALSE; + + DW_MUTEX_LOCK; + status = g_object_get_data(G_OBJECT(handle), "_dw_taskbar"); + g_object_unref(G_OBJECT(status)); + DW_MUTEX_UNLOCK; } /*