| 30 |
30 |
| 31 #include "gtkdialogs.h" |
31 #include "gtkdialogs.h" |
| 32 |
32 |
| 33 #include "eggtrayicon.h" |
33 #include "eggtrayicon.h" |
| 34 #include "gtkdocklet.h" |
34 #include "gtkdocklet.h" |
| |
35 #include <gdk/gdkkeysyms.h> |
| 35 |
36 |
| 36 #define SHORT_EMBED_TIMEOUT 5000 |
37 #define SHORT_EMBED_TIMEOUT 5000 |
| 37 #define LONG_EMBED_TIMEOUT 15000 |
38 #define LONG_EMBED_TIMEOUT 15000 |
| 38 |
39 |
| 39 /* globals */ |
40 /* globals */ |
| 85 if (event->type != GDK_BUTTON_PRESS) |
86 if (event->type != GDK_BUTTON_PRESS) |
| 86 return FALSE; |
87 return FALSE; |
| 87 |
88 |
| 88 pidgin_docklet_clicked(event->button); |
89 pidgin_docklet_clicked(event->button); |
| 89 return TRUE; |
90 return TRUE; |
| |
91 } |
| |
92 |
| |
93 static gboolean |
| |
94 docklet_x11_pressed_cb(GtkWidget *button, GdkEventKey *event) |
| |
95 { |
| |
96 guint state, keyval; |
| |
97 |
| |
98 state = event->state & gtk_accelerator_get_default_mod_mask(); |
| |
99 keyval = event->keyval; |
| |
100 if (state == 0 && |
| |
101 (keyval == GDK_Return || |
| |
102 keyval == GDK_KP_Enter || |
| |
103 keyval == GDK_ISO_Enter || |
| |
104 keyval == GDK_space || |
| |
105 keyval == GDK_KP_Space)) |
| |
106 { |
| |
107 pidgin_docklet_clicked(1); |
| |
108 return TRUE; |
| |
109 } |
| |
110 |
| |
111 return FALSE; |
| |
112 } |
| |
113 |
| |
114 static void |
| |
115 docklet_x11_popup_cb(GtkWidget *button) |
| |
116 { |
| |
117 pidgin_docklet_clicked(3); |
| 90 } |
118 } |
| 91 |
119 |
| 92 static void |
120 static void |
| 93 docklet_x11_update_icon(PurpleStatusPrimitive status, gboolean connecting, gboolean pending) |
121 docklet_x11_update_icon(PurpleStatusPrimitive status, gboolean connecting, gboolean pending) |
| 94 { |
122 { |
| 257 } |
285 } |
| 258 |
286 |
| 259 docklet = egg_tray_icon_new(PIDGIN_NAME); |
287 docklet = egg_tray_icon_new(PIDGIN_NAME); |
| 260 box = gtk_event_box_new(); |
288 box = gtk_event_box_new(); |
| 261 image = gtk_image_new(); |
289 image = gtk_image_new(); |
| |
290 GTK_WIDGET_SET_FLAGS (image, GTK_CAN_FOCUS); |
| 262 |
291 |
| 263 g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(docklet_x11_embedded_cb), NULL); |
292 g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(docklet_x11_embedded_cb), NULL); |
| 264 g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(docklet_x11_destroyed_cb), NULL); |
293 g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(docklet_x11_destroyed_cb), NULL); |
| 265 g_signal_connect(G_OBJECT(docklet), "size-allocate", G_CALLBACK(docklet_x11_resize_icon), NULL); |
294 g_signal_connect(G_OBJECT(docklet), "size-allocate", G_CALLBACK(docklet_x11_resize_icon), NULL); |
| 266 g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(docklet_x11_clicked_cb), NULL); |
295 g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(docklet_x11_clicked_cb), NULL); |
| |
296 g_signal_connect(G_OBJECT(box), "key-press-event", G_CALLBACK(docklet_x11_pressed_cb), NULL); |
| |
297 g_signal_connect(G_OBJECT(box), "popup-menu", G_CALLBACK(docklet_x11_popup_cb), NULL); |
| 267 gtk_container_add(GTK_CONTAINER(box), image); |
298 gtk_container_add(GTK_CONTAINER(box), image); |
| 268 gtk_container_add(GTK_CONTAINER(docklet), box); |
299 gtk_container_add(GTK_CONTAINER(docklet), box); |
| 269 |
300 |
| 270 if (!gtk_check_version(2,4,0)) |
301 if (!gtk_check_version(2,4,0)) |
| 271 g_object_set(G_OBJECT(box), "visible-window", FALSE, NULL); |
302 g_object_set(G_OBJECT(box), "visible-window", FALSE, NULL); |