Mercurial > pidgin
comparison src/gtkmenutray.c @ 12008:91aaa1b3ac30
[gaim-migrate @ 14301]
sf patch #1348466, from Sadrul Habib Chowdhury
Add a tooltip for the typing notification icons (and any other icon
in the gtkmenutray)
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 08 Nov 2005 23:34:54 +0000 |
parents | 34ea75bdd0c9 |
children |
comparison
equal
deleted
inserted
replaced
12007:8724718d387f | 12008:91aaa1b3ac30 |
---|---|
19 */ | 19 */ |
20 #include "debug.h" | 20 #include "debug.h" |
21 | 21 |
22 #include "gtkmenutray.h" | 22 #include "gtkmenutray.h" |
23 | 23 |
24 #include <gtk/gtkeventbox.h> | |
24 #include <gtk/gtkiconfactory.h> | 25 #include <gtk/gtkiconfactory.h> |
25 #include <gtk/gtkversion.h> | 26 #include <gtk/gtkversion.h> |
26 | 27 |
27 /****************************************************************************** | 28 /****************************************************************************** |
28 * Enums | 29 * Enums |
127 GtkSettings *settings; | 128 GtkSettings *settings; |
128 #endif | 129 #endif |
129 gint height = -1; | 130 gint height = -1; |
130 | 131 |
131 gtk_menu_item_set_right_justified(GTK_MENU_ITEM(menu_tray), TRUE); | 132 gtk_menu_item_set_right_justified(GTK_MENU_ITEM(menu_tray), TRUE); |
132 | 133 |
133 if(!GTK_IS_WIDGET(menu_tray->tray)) | 134 if(!GTK_IS_WIDGET(menu_tray->tray)) |
134 menu_tray->tray = gtk_hbox_new(FALSE, 0); | 135 menu_tray->tray = gtk_hbox_new(FALSE, 0); |
135 | 136 |
136 menu_tray->tooltips = gtk_tooltips_new(); | 137 menu_tray->tooltips = gtk_tooltips_new(); |
137 | 138 |
191 gaim_gtk_menu_tray_get_box(GaimGtkMenuTray *menu_tray) { | 192 gaim_gtk_menu_tray_get_box(GaimGtkMenuTray *menu_tray) { |
192 g_return_val_if_fail(GAIM_GTK_IS_MENU_TRAY(menu_tray), NULL); | 193 g_return_val_if_fail(GAIM_GTK_IS_MENU_TRAY(menu_tray), NULL); |
193 return menu_tray->tray; | 194 return menu_tray->tray; |
194 } | 195 } |
195 | 196 |
197 static void | |
198 gaim_gtk_menu_tray_add(GaimGtkMenuTray *menu_tray, GtkWidget *widget, | |
199 const char *tooltip, gboolean prepend) | |
200 { | |
201 g_return_if_fail(GAIM_GTK_IS_MENU_TRAY(menu_tray)); | |
202 g_return_if_fail(GTK_IS_WIDGET(widget)); | |
203 | |
204 if (GTK_WIDGET_NO_WINDOW(widget)) | |
205 { | |
206 GtkWidget *event; | |
207 | |
208 event = gtk_event_box_new(); | |
209 gtk_container_add(GTK_CONTAINER(event), widget); | |
210 gtk_widget_show(event); | |
211 widget = event; | |
212 } | |
213 | |
214 gaim_gtk_menu_tray_set_tooltip(menu_tray, widget, tooltip); | |
215 | |
216 if (prepend) | |
217 gtk_box_pack_start(GTK_BOX(menu_tray->tray), widget, FALSE, FALSE, 0); | |
218 else | |
219 gtk_box_pack_end(GTK_BOX(menu_tray->tray), widget, FALSE, FALSE, 0); | |
220 } | |
221 | |
196 void | 222 void |
197 gaim_gtk_menu_tray_append(GaimGtkMenuTray *menu_tray, GtkWidget *widget, const char *tooltip) | 223 gaim_gtk_menu_tray_append(GaimGtkMenuTray *menu_tray, GtkWidget *widget, const char *tooltip) |
198 { | 224 { |
199 g_return_if_fail(GAIM_GTK_IS_MENU_TRAY(menu_tray)); | 225 gaim_gtk_menu_tray_add(menu_tray, widget, tooltip, FALSE); |
200 g_return_if_fail(GTK_IS_WIDGET(widget)); | |
201 | |
202 gaim_gtk_menu_tray_set_tooltip(menu_tray, widget, tooltip); | |
203 gtk_box_pack_end(GTK_BOX(menu_tray->tray), widget, FALSE, FALSE, 0); | |
204 } | 226 } |
205 | 227 |
206 void | 228 void |
207 gaim_gtk_menu_tray_prepend(GaimGtkMenuTray *menu_tray, GtkWidget *widget, const char *tooltip) | 229 gaim_gtk_menu_tray_prepend(GaimGtkMenuTray *menu_tray, GtkWidget *widget, const char *tooltip) |
208 { | 230 { |
209 g_return_if_fail(GAIM_GTK_IS_MENU_TRAY(menu_tray)); | 231 gaim_gtk_menu_tray_add(menu_tray, widget, tooltip, TRUE); |
210 g_return_if_fail(GTK_IS_WIDGET(widget)); | |
211 | |
212 gaim_gtk_menu_tray_set_tooltip(menu_tray, widget, tooltip); | |
213 gtk_box_pack_start(GTK_BOX(menu_tray->tray), widget, FALSE, FALSE, 0); | |
214 } | 232 } |
215 | 233 |
216 void | 234 void |
217 gaim_gtk_menu_tray_set_tooltip(GaimGtkMenuTray *menu_tray, GtkWidget *widget, const char *tooltip) | 235 gaim_gtk_menu_tray_set_tooltip(GaimGtkMenuTray *menu_tray, GtkWidget *widget, const char *tooltip) |
218 { | 236 { |
219 if (!menu_tray->tooltips) | 237 if (!menu_tray->tooltips) |
220 return; | 238 return; |
221 | 239 |
222 /* Should we check whether widget is a child of menu_tray? */ | 240 /* Should we check whether widget is a child of menu_tray? */ |
241 | |
242 /* | |
243 * If the widget does not have it's own window, then it | |
244 * must have automatically been added to an event box | |
245 * when it was added to the menu tray. If this is the | |
246 * case, we want to set the tooltip on the widget's parent, | |
247 * not on the widget itself. | |
248 */ | |
223 if (GTK_WIDGET_NO_WINDOW(widget)) | 249 if (GTK_WIDGET_NO_WINDOW(widget)) |
224 gaim_debug_warning("GtkMenuTray", | 250 widget = widget->parent; |
225 "The widget does not have it's own window. Tooltip cannot be set for this widget.\n"); | 251 |
226 else | 252 gtk_tooltips_set_tip(menu_tray->tooltips, widget, tooltip, NULL); |
227 gtk_tooltips_set_tip(menu_tray->tooltips, widget, tooltip, NULL); | 253 } |
228 } | 254 |
229 |