comparison pidgin/gtkstatusbox.c @ 25740:9ab681f23007

propagate from branch 'im.pidgin.pidgin' (head c36cf6e54e25bff1ff7802082ae3c787d658187c) to branch 'org.darkrain42.pidgin.xmpp' (head 92d6837c02024957e64a843d1b409cf944cc89fc)
author Paul Aurich <paul@darkrain42.org>
date Thu, 20 Nov 2008 21:57:52 +0000
parents 1163d93da109
children 584063555949 9c0337d4b878
comparison
equal deleted inserted replaced
25717:907ca9a36fe0 25740:9ab681f23007
395 395
396 status_box->icon = gtk_image_new(); 396 status_box->icon = gtk_image_new();
397 status_box->icon_box = gtk_event_box_new(); 397 status_box->icon_box = gtk_event_box_new();
398 gtk_widget_set_parent(status_box->icon_box, GTK_WIDGET(status_box)); 398 gtk_widget_set_parent(status_box->icon_box, GTK_WIDGET(status_box));
399 gtk_widget_show(status_box->icon_box); 399 gtk_widget_show(status_box->icon_box);
400
401 #if GTK_CHECK_VERSION(2,12,0)
402 gtk_widget_set_tooltip_text(status_box->icon_box,
403 status_box->account ? _("Click to change your buddyicon for this account.") :
404 _("Click to change your buddyicon for all accounts."));
405 #endif
400 406
401 if (status_box->account && 407 if (status_box->account &&
402 !purple_account_get_bool(status_box->account, "use-global-buddyicon", TRUE)) 408 !purple_account_get_bool(status_box->account, "use-global-buddyicon", TRUE))
403 { 409 {
404 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(status_box->account); 410 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(status_box->account);
1197 if (status_box->connecting_pixbufs[i] != NULL) 1203 if (status_box->connecting_pixbufs[i] != NULL)
1198 gdk_pixbuf_unref(status_box->connecting_pixbufs[i]); 1204 gdk_pixbuf_unref(status_box->connecting_pixbufs[i]);
1199 } 1205 }
1200 1206
1201 status_box->connecting_index = 0; 1207 status_box->connecting_index = 0;
1202 status_box->connecting_pixbufs[0] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT0, 1208
1203 icon_size, "PidginStatusBox"); 1209 #define CACHE_ANIMATION_CONNECT(index) \
1204 status_box->connecting_pixbufs[1] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT1, 1210 status_box->connecting_pixbufs[index] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),\
1205 icon_size, "PidginStatusBox"); 1211 PIDGIN_STOCK_ANIMATION_CONNECT ## index, icon_size, "PidginStatusBox")
1206 status_box->connecting_pixbufs[2] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT2, 1212
1207 icon_size, "PidginStatusBox"); 1213 CACHE_ANIMATION_CONNECT(0);
1208 status_box->connecting_pixbufs[3] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT3, 1214 CACHE_ANIMATION_CONNECT(1);
1209 icon_size, "PidginStatusBox"); 1215 CACHE_ANIMATION_CONNECT(2);
1210 status_box->connecting_pixbufs[4] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT4, 1216 CACHE_ANIMATION_CONNECT(3);
1211 icon_size, "PidginStatusBox"); 1217 CACHE_ANIMATION_CONNECT(4);
1212 status_box->connecting_pixbufs[5] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT5, 1218 CACHE_ANIMATION_CONNECT(5);
1213 icon_size, "PidginStatusBox"); 1219 CACHE_ANIMATION_CONNECT(6);
1214 status_box->connecting_pixbufs[6] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT6, 1220 CACHE_ANIMATION_CONNECT(7);
1215 icon_size, "PidginStatusBox"); 1221 CACHE_ANIMATION_CONNECT(8);
1216 status_box->connecting_pixbufs[7] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT7, 1222
1217 icon_size, "PidginStatusBox"); 1223 #undef CACHE_ANIMATION_CONNECT
1218 status_box->connecting_pixbufs[8] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT8,
1219 icon_size, "PidginStatusBox");
1220 1224
1221 for (i = 0; i < G_N_ELEMENTS(status_box->typing_pixbufs); i++) { 1225 for (i = 0; i < G_N_ELEMENTS(status_box->typing_pixbufs); i++) {
1222 if (status_box->typing_pixbufs[i] != NULL) 1226 if (status_box->typing_pixbufs[i] != NULL)
1223 gdk_pixbuf_unref(status_box->typing_pixbufs[i]); 1227 gdk_pixbuf_unref(status_box->typing_pixbufs[i]);
1224 } 1228 }
1225 1229
1226 status_box->typing_index = 0; 1230 status_box->typing_index = 0;
1227 status_box->typing_pixbufs[0] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING0, 1231
1228 icon_size, "PidginStatusBox"); 1232 #define CACHE_ANIMATION_TYPING(index) \
1229 status_box->typing_pixbufs[1] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING1, 1233 status_box->typing_pixbufs[index] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), \
1230 icon_size, "PidginStatusBox"); 1234 PIDGIN_STOCK_ANIMATION_TYPING ## index, icon_size, "PidginStatusBox")
1231 status_box->typing_pixbufs[2] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING2, 1235
1232 icon_size, "PidginStatusBox"); 1236 CACHE_ANIMATION_TYPING(0);
1233 status_box->typing_pixbufs[3] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING3, 1237 CACHE_ANIMATION_TYPING(1);
1234 icon_size, "PidginStatusBox"); 1238 CACHE_ANIMATION_TYPING(2);
1235 status_box->typing_pixbufs[4] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING4, 1239 CACHE_ANIMATION_TYPING(3);
1236 icon_size, "PidginStatusBox"); 1240 CACHE_ANIMATION_TYPING(4);
1241
1242 #undef CACHE_ANIMATION_TYPING
1237 } 1243 }
1238 1244
1239 static void account_enabled_cb(PurpleAccount *acct, PidginStatusBox *status_box) 1245 static void account_enabled_cb(PurpleAccount *acct, PidginStatusBox *status_box)
1240 { 1246 {
1241 PurpleAccount *initial_token_acct = status_box->token_status_account; 1247 PurpleAccount *initial_token_acct = status_box->token_status_account;
2665 2671
2666 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box))) 2672 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box)))
2667 { 2673 {
2668 if (status_box->imhtml_visible) 2674 if (status_box->imhtml_visible)
2669 { 2675 {
2676 GtkTextIter start, end;
2677 GtkTextBuffer *buffer;
2670 gtk_widget_show_all(status_box->vbox); 2678 gtk_widget_show_all(status_box->vbox);
2671 status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box); 2679 status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
2672 gtk_widget_grab_focus(status_box->imhtml); 2680 gtk_widget_grab_focus(status_box->imhtml);
2673 gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml)); 2681 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
2682 gtk_text_buffer_get_bounds(buffer, &start, &end);
2683 gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "insert"), &end);
2684 gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "selection_bound"), &start);
2674 } 2685 }
2675 else 2686 else
2676 { 2687 {
2677 gtk_widget_hide_all(status_box->vbox); 2688 gtk_widget_hide_all(status_box->vbox);
2678 activate_currently_selected_status(status_box); /* This is where we actually set the status */ 2689 activate_currently_selected_status(status_box); /* This is where we actually set the status */