From: Ethan B. <ebl...@us...> - 2005-10-17 20:48:58
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20488/src Modified Files: gtkconv.c gtkstock.c gtkstock.h Log Message: 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. Index: gtkconv.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkconv.c,v retrieving revision 1.625 retrieving revision 1.626 diff -u -d -p -r1.625 -r1.626 --- gtkconv.c 17 Oct 2005 16:42:10 -0000 1.625 +++ gtkconv.c 17 Oct 2005 20:48:46 -0000 1.626 @@ -2510,6 +2510,12 @@ setup_menubar(GaimGtkWindow *win) 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 @@ update_typing_icon(GaimGtkConversation * 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); } } Index: gtkstock.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkstock.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- gtkstock.c 30 Aug 2005 05:53:56 -0000 1.5 +++ gtkstock.c 17 Oct 2005 20:48:46 -0000 1.6 @@ -80,6 +80,7 @@ static struct StockIcon { GAIM_STOCK_INVITE, NULL, GTK_STOCK_JUMP_TO }, { GAIM_STOCK_LINK, "buttons", "insert-link-small.png" }, { GAIM_STOCK_LOGO, "gaim", "logo.png" }, + { GAIM_STOCK_MENU_ICON_BLANK, "gaim", "menu-blank.png" }, { GAIM_STOCK_MODIFY, NULL, GTK_STOCK_PREFERENCES }, #if GTK_CHECK_VERSION(2,6,0) { GAIM_STOCK_PAUSE, NULL, GTK_STOCK_MEDIA_PAUSE }, Index: gtkstock.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkstock.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- gtkstock.h 15 Aug 2005 06:52:45 -0000 1.3 +++ gtkstock.h 17 Oct 2005 20:48:46 -0000 1.4 @@ -62,6 +62,7 @@ #define GAIM_STOCK_INVITE "gaim-invite" #define GAIM_STOCK_LINK "gaim-link" #define GAIM_STOCK_LOGO "gaim-logo" +#define GAIM_STOCK_MENU_ICON_BLANK "gaim-menu-icon-blank" #define GAIM_STOCK_MODIFY "gaim-modify" #define GAIM_STOCK_OPEN_MAIL "gaim-stock-open-mail" #define GAIM_STOCK_PAUSE "gaim-pause" |