Mercurial > pidgin
diff src/gtkconv.c @ 11686:0914f135760a
[gaim-migrate @ 13972]
This fixes the dancing conversation dialog when the typing icon
appears and disappears with a relatively small system font.
Additionally, it does less widget creation and destruction by creating
a persistent GtkImage widget in the menubar which is merely painted
with the appropriate stock icon.
The most straightforward way I saw to solve this was add a "blank"
menu icon to the stock icon system.
committer: Tailor Script <tailor@pidgin.im>
| author | Ethan Blanton <elb@pidgin.im> |
|---|---|
| date | Mon, 17 Oct 2005 20:48:46 +0000 |
| parents | c1906dc6257c |
| children | 9c0612901c3e |
line wrap: on
line diff
--- a/src/gtkconv.c Mon Oct 17 20:33:35 2005 +0000 +++ b/src/gtkconv.c Mon Oct 17 20:48:46 2005 +0000 @@ -2510,6 +2510,12 @@ win->menu.tray); gtk_widget_show(win->menu.tray); + win->menu.typing_icon = gtk_image_new_from_stock(GAIM_STOCK_MENU_ICON_BLANK, + GTK_ICON_SIZE_MENU); + gtk_widget_show(win->menu.typing_icon); + gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(win->menu.tray), + win->menu.typing_icon); + gtk_widget_show(win->menu.menubar); return win->menu.menubar; @@ -2564,26 +2570,21 @@ if(gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) im = GAIM_CONV_IM(conv); - if(gtkwin->menu.typing_icon) { - gtk_widget_destroy(gtkwin->menu.typing_icon); - gtkwin->menu.typing_icon = NULL; - } if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { - gtkwin->menu.typing_icon = gtk_image_new_from_stock(GAIM_STOCK_TYPING, - GTK_ICON_SIZE_MENU); + gtk_image_set_from_stock(gtkwin->menu.typing_icon, GAIM_STOCK_TYPING, + GTK_ICON_SIZE_MENU); gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, _("User is typing..."), NULL); } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) { - gtkwin->menu.typing_icon = gtk_image_new_from_stock(GAIM_STOCK_TYPED, - GTK_ICON_SIZE_MENU); + gtk_image_set_from_stock(gtkwin->menu.typing_icon, GAIM_STOCK_TYPED, + GTK_ICON_SIZE_MENU); gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, _("User has typed something and paused"), NULL); - } - - if(gtkwin->menu.typing_icon) { - gtk_widget_show(gtkwin->menu.typing_icon); - gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(gtkwin->menu.tray), - gtkwin->menu.typing_icon); + } else { + gtk_image_set_from_stock(gtkwin->menu.typing_icon, GAIM_STOCK_MENU_ICON_BLANK, + GTK_ICON_SIZE_MENU); + gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, + "", NULL); } }
