pidgin/gtkstatusbox.c

changeset 24434
618f36bdbfd0
parent 24291
6b8e3e4dc8fb
child 24507
35927db6f321
equal deleted inserted replaced
24425:0a99ace18b6d 24434:618f36bdbfd0
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 #if 0
401 gtk_widget_set_tooltip_text(status_box->icon_box,
402 status_box->account ? _("Click to change your buddyicon for this account.") :
403 _("Click to change your buddyicon for all accounts."));
404 #endif
400 405
401 if (status_box->account && 406 if (status_box->account &&
402 !purple_account_get_bool(status_box->account, "use-global-buddyicon", TRUE)) 407 !purple_account_get_bool(status_box->account, "use-global-buddyicon", TRUE))
403 { 408 {
404 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(status_box->account); 409 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(status_box->account);
1197 if (status_box->connecting_pixbufs[i] != NULL) 1202 if (status_box->connecting_pixbufs[i] != NULL)
1198 gdk_pixbuf_unref(status_box->connecting_pixbufs[i]); 1203 gdk_pixbuf_unref(status_box->connecting_pixbufs[i]);
1199 } 1204 }
1200 1205
1201 status_box->connecting_index = 0; 1206 status_box->connecting_index = 0;
1202 status_box->connecting_pixbufs[0] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT0, 1207
1203 icon_size, "PidginStatusBox"); 1208 #define CACHE_ANIMATION_CONNECT(index) \
1204 status_box->connecting_pixbufs[1] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT1, 1209 status_box->connecting_pixbufs[index] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),\
1205 icon_size, "PidginStatusBox"); 1210 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, 1211
1207 icon_size, "PidginStatusBox"); 1212 CACHE_ANIMATION_CONNECT(0);
1208 status_box->connecting_pixbufs[3] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT3, 1213 CACHE_ANIMATION_CONNECT(1);
1209 icon_size, "PidginStatusBox"); 1214 CACHE_ANIMATION_CONNECT(2);
1210 status_box->connecting_pixbufs[4] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT4, 1215 CACHE_ANIMATION_CONNECT(3);
1211 icon_size, "PidginStatusBox"); 1216 CACHE_ANIMATION_CONNECT(4);
1212 status_box->connecting_pixbufs[5] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT5, 1217 CACHE_ANIMATION_CONNECT(5);
1213 icon_size, "PidginStatusBox"); 1218 CACHE_ANIMATION_CONNECT(6);
1214 status_box->connecting_pixbufs[6] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT6, 1219 CACHE_ANIMATION_CONNECT(7);
1215 icon_size, "PidginStatusBox"); 1220 CACHE_ANIMATION_CONNECT(8);
1216 status_box->connecting_pixbufs[7] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT7, 1221
1217 icon_size, "PidginStatusBox"); 1222 #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 status_box->connecting_pixbufs[9] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT9,
1221 icon_size, "PidginStatusBox");
1222 status_box->connecting_pixbufs[10] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT10,
1223 icon_size, "PidginStatusBox");
1224 status_box->connecting_pixbufs[11] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT11,
1225 icon_size, "PidginStatusBox");
1226 status_box->connecting_pixbufs[12] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT12,
1227 icon_size, "PidginStatusBox");
1228 status_box->connecting_pixbufs[13] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT13,
1229 icon_size, "PidginStatusBox");
1230 status_box->connecting_pixbufs[14] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT14,
1231 icon_size, "PidginStatusBox");
1232 status_box->connecting_pixbufs[15] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT15,
1233 icon_size, "PidginStatusBox");
1234 status_box->connecting_pixbufs[16] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT16,
1235 icon_size, "PidginStatusBox");
1236 status_box->connecting_pixbufs[17] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT17,
1237 icon_size, "PidginStatusBox");
1238 status_box->connecting_pixbufs[18] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT18,
1239 icon_size, "PidginStatusBox");
1240 status_box->connecting_pixbufs[19] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT19,
1241 icon_size, "PidginStatusBox");
1242 status_box->connecting_pixbufs[20] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT20,
1243 icon_size, "PidginStatusBox");
1244 status_box->connecting_pixbufs[21] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT21,
1245 icon_size, "PidginStatusBox");
1246 status_box->connecting_pixbufs[22] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT22,
1247 icon_size, "PidginStatusBox");
1248 status_box->connecting_pixbufs[23] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT23,
1249 icon_size, "PidginStatusBox");
1250 status_box->connecting_pixbufs[24] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT24,
1251 icon_size, "PidginStatusBox");
1252 status_box->connecting_pixbufs[25] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT25,
1253 icon_size, "PidginStatusBox");
1254 status_box->connecting_pixbufs[26] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT26,
1255 icon_size, "PidginStatusBox");
1256 status_box->connecting_pixbufs[27] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT27,
1257 icon_size, "PidginStatusBox");
1258 status_box->connecting_pixbufs[28] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT28,
1259 icon_size, "PidginStatusBox");
1260 status_box->connecting_pixbufs[29] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT29,
1261 icon_size, "PidginStatusBox");
1262 status_box->connecting_pixbufs[30] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT30,
1263 icon_size, "PidginStatusBox");
1264
1265 1223
1266 for (i = 0; i < G_N_ELEMENTS(status_box->typing_pixbufs); i++) { 1224 for (i = 0; i < G_N_ELEMENTS(status_box->typing_pixbufs); i++) {
1267 if (status_box->typing_pixbufs[i] != NULL) 1225 if (status_box->typing_pixbufs[i] != NULL)
1268 gdk_pixbuf_unref(status_box->typing_pixbufs[i]); 1226 gdk_pixbuf_unref(status_box->typing_pixbufs[i]);
1269 } 1227 }
1270 1228
1271 status_box->typing_index = 0; 1229 status_box->typing_index = 0;
1272 status_box->typing_pixbufs[0] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING0, 1230
1273 icon_size, "PidginStatusBox"); 1231 #define CACHE_ANIMATION_TYPING(index) \
1274 status_box->typing_pixbufs[1] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING1, 1232 status_box->typing_pixbufs[index] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), \
1275 icon_size, "PidginStatusBox"); 1233 PIDGIN_STOCK_ANIMATION_TYPING ## index, icon_size, "PidginStatusBox")
1276 status_box->typing_pixbufs[2] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING2, 1234
1277 icon_size, "PidginStatusBox"); 1235 CACHE_ANIMATION_TYPING(0);
1278 status_box->typing_pixbufs[3] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING3, 1236 CACHE_ANIMATION_TYPING(1);
1279 icon_size, "PidginStatusBox"); 1237 CACHE_ANIMATION_TYPING(2);
1280 status_box->typing_pixbufs[4] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING4, 1238 CACHE_ANIMATION_TYPING(3);
1281 icon_size, "PidginStatusBox"); 1239 CACHE_ANIMATION_TYPING(4);
1240
1241 #undef CACHE_ANIMATION_TYPING
1282 } 1242 }
1283 1243
1284 static void account_enabled_cb(PurpleAccount *acct, PidginStatusBox *status_box) 1244 static void account_enabled_cb(PurpleAccount *acct, PidginStatusBox *status_box)
1285 { 1245 {
1286 PurpleAccount *initial_token_acct = status_box->token_status_account; 1246 PurpleAccount *initial_token_acct = status_box->token_status_account;
2710 2670
2711 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box))) 2671 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box)))
2712 { 2672 {
2713 if (status_box->imhtml_visible) 2673 if (status_box->imhtml_visible)
2714 { 2674 {
2675 GtkTextIter start, end;
2676 GtkTextBuffer *buffer;
2715 gtk_widget_show_all(status_box->vbox); 2677 gtk_widget_show_all(status_box->vbox);
2716 status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box); 2678 status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
2717 gtk_widget_grab_focus(status_box->imhtml); 2679 gtk_widget_grab_focus(status_box->imhtml);
2680 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
2681 gtk_text_buffer_get_bounds(buffer, &start, &end);
2682 gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "insert"), &end);
2683 gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "selection_bound"), &start);
2718 } 2684 }
2719 else 2685 else
2720 { 2686 {
2721 gtk_widget_hide_all(status_box->vbox); 2687 gtk_widget_hide_all(status_box->vbox);
2722 activate_currently_selected_status(status_box); /* This is where we actually set the status */ 2688 activate_currently_selected_status(status_box); /* This is where we actually set the status */

mercurial