# HG changeset patch # User Yoshiki Yazawa # Date 1218417466 -32400 # Node ID 5ddf8bee768d24d94db49bb349e08fbb4683af66 # Parent 85484ddf8823e4b6a0daf378f98b182805497b59 according to mojin, jisko limits each post to 140 bytes and requires at least 5 bytes. now letter counter for jisko takes account of this limit. diff -r 85484ddf8823 -r 5ddf8bee768d pidgin-twitter.c --- a/pidgin-twitter.c Sun Aug 10 23:00:48 2008 +0900 +++ b/pidgin-twitter.c Mon Aug 11 10:17:46 2008 +0900 @@ -1066,12 +1066,17 @@ switch(service) { case twitter_service: - case jisko_service: count = gtk_text_buffer_get_char_count(textbuffer) + (unsigned int)g_utf8_strlen(new_text, -1); markup = g_markup_printf_escaped("%u", count <= 140 ? "black" : "red", count); break; + case wassr_service: + count = gtk_text_buffer_get_char_count(textbuffer) + + (unsigned int)g_utf8_strlen(new_text, -1); + markup = g_markup_printf_escaped("%u", + count <= 255 ? "black" : "red", count); + break; case identica_service: gtk_text_buffer_get_start_iter(textbuffer, &head); gtk_text_buffer_get_end_iter(textbuffer, &tail); @@ -1083,11 +1088,17 @@ markup = g_markup_printf_escaped("%u", bytes <= 140 ? "black" : "red", bytes); break; - case wassr_service: - count = gtk_text_buffer_get_char_count(textbuffer) + - (unsigned int)g_utf8_strlen(new_text, -1); + case jisko_service: + gtk_text_buffer_get_start_iter(textbuffer, &head); + gtk_text_buffer_get_end_iter(textbuffer, &tail); + + text = gtk_text_buffer_get_text(textbuffer, &head, &tail, TRUE); + if(text) + bytes = strlen(text) + new_text_length; + g_free(text); markup = g_markup_printf_escaped("%u", - count <= 255 ? "black" : "red", count); + bytes >= 5 && bytes <= 140 ? + "black" : "red", bytes); break; default: twitter_debug("unknown service\n"); @@ -1120,13 +1131,19 @@ switch(service) { case twitter_service: - case jisko_service: count= gtk_text_buffer_get_char_count(textbuffer) - (gtk_text_iter_get_offset(end_pos) - gtk_text_iter_get_offset(start_pos)); markup = g_markup_printf_escaped("%u", count <= 140 ? "black" : "red", count); break; + case wassr_service: + count= gtk_text_buffer_get_char_count(textbuffer) - + (gtk_text_iter_get_offset(end_pos) - + gtk_text_iter_get_offset(start_pos)); + markup = g_markup_printf_escaped("%u", + count <= 255 ? "black" : "red", count); + break; case identica_service: gtk_text_buffer_get_start_iter(textbuffer, &head); gtk_text_buffer_get_end_iter(textbuffer, &tail); @@ -1146,12 +1163,25 @@ markup = g_markup_printf_escaped("%u", bytes <= 140 ? "black" : "red", bytes); break; - case wassr_service: - count= gtk_text_buffer_get_char_count(textbuffer) - - (gtk_text_iter_get_offset(end_pos) - - gtk_text_iter_get_offset(start_pos)); + case jisko_service: + gtk_text_buffer_get_start_iter(textbuffer, &head); + gtk_text_buffer_get_end_iter(textbuffer, &tail); + + text = gtk_text_buffer_get_text(textbuffer, + &head, &tail, TRUE); + if(text) + bytes = strlen(text); + g_free(text); + + text = gtk_text_buffer_get_text(textbuffer, + start_pos, end_pos, TRUE); + if(text) + bytes -= strlen(text); + g_free(text); + markup = g_markup_printf_escaped("%u", - count <= 255 ? "black" : "red", count); + bytes >= 5 && bytes <= 140 ? + "black" : "red", bytes); break; default: twitter_debug("unknown service\n");