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