Mercurial > pidgin.yaz
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 */ |