Mercurial > pidgin.yaz
changeset 11314:bcc7f30c91bd
[gaim-migrate @ 13516]
1)re-apply the gtkimhtml patch, as I was wrong about it.
2)revert spellchk.c to 1.71
3)apply patch from Levi (tak) Bard to make it work but not crash.
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 19 Aug 2005 15:59:16 +0000 |
parents | e9e4fca7de29 |
children | a74244102c0a |
files | plugins/spellchk.c src/gtkimhtmltoolbar.c |
diffstat | 2 files changed, 189 insertions(+), 308 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/spellchk.c Fri Aug 19 15:13:17 2005 +0000 +++ b/plugins/spellchk.c Fri Aug 19 15:59:16 2005 +0000 @@ -56,7 +56,6 @@ enum { BAD_COLUMN, GOOD_COLUMN, - WORD_ONLY_COLUMN, N_COLUMNS }; @@ -76,7 +75,7 @@ static GtkListStore *model; static gboolean -is_word_uppercase(const gchar *word) +is_word_uppercase(gchar *word) { for (; word[0] != '\0'; word = g_utf8_find_next_char (word, NULL)) { if (!g_unichar_isupper(g_utf8_get_char(word)) && @@ -88,7 +87,7 @@ } static gboolean -is_word_lowercase(const gchar *word) +is_word_lowercase(gchar *word) { for (; word[0] != '\0'; word = g_utf8_find_next_char(word, NULL)) { if (!g_unichar_islower(g_utf8_get_char(word)) && @@ -100,7 +99,7 @@ } static gboolean -is_word_proper(const gchar *word) +is_word_proper(gchar *word) { if (word[0] == '\0') return FALSE; @@ -112,7 +111,7 @@ } static gchar * -make_word_proper(const gchar *word) +make_word_proper(gchar *word) { gchar *state = g_utf8_strdown(word, -1); @@ -121,66 +120,6 @@ return state; } -static void -substitute_simple_buffer(GtkTextBuffer *buffer) -{ - GtkTextIter start; - GtkTextIter end; - GtkTreeIter treeiter; - gchar *text = NULL; - - gtk_text_buffer_get_iter_at_offset(buffer, &start, 0); - gtk_text_buffer_get_iter_at_offset(buffer, &end, 0); - gtk_text_iter_forward_to_end(&end); - - text = gtk_text_buffer_get_text(buffer, &start, &end, FALSE); - - if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &treeiter) && text) { - do{ - GValue val0 = {0, }; - GValue val1 = {0, }; - GValue val2 = {0, }; - const gchar *bad; - const gchar *good; - gchar *tmpbad; - gchar *tmptext; - gchar *cursor; - gboolean word_only; - glong char_pos; - - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, BAD_COLUMN, &val0); - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, GOOD_COLUMN, &val1); - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, WORD_ONLY_COLUMN, &val2); - - bad = g_value_get_string(&val0); - good = g_value_get_string(&val1); - word_only = g_value_get_boolean(&val2); - - tmpbad = g_utf8_casefold(bad, -1); - tmptext = g_utf8_casefold(text, -1); - - /* using g_utf8_* to get /character/ offsets instead of byte offsets for buffer */ - if (!word_only && (cursor = g_strrstr(tmptext, tmpbad))) - { - char_pos = g_utf8_pointer_to_offset(tmptext, cursor); - gtk_text_buffer_get_iter_at_offset(buffer, &start, char_pos); - gtk_text_buffer_get_iter_at_offset(buffer, &end, char_pos + g_utf8_strlen(bad, -1)); - gtk_text_buffer_delete(buffer, &start, &end); - - gtk_text_buffer_get_iter_at_offset(buffer, &start, char_pos); - gtk_text_buffer_insert(buffer, &start, good, -1); - } - - g_value_unset(&val0); - g_value_unset(&val1); - g_value_unset(&val2); - g_free(tmpbad); - g_free(tmptext); - - } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &treeiter)); - } -} - static gchar * substitute_word(gchar *word) { @@ -197,28 +136,21 @@ do { GValue val0 = {0, }; GValue val1 = {0, }; - GValue val2 = {0, }; - const char *bad; - const char *good; + char *bad; + char *good; gchar *tmpbad; gchar *tmpword; - gboolean word_only; - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, BAD_COLUMN, &val0); - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, GOOD_COLUMN, &val1); - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, WORD_ONLY_COLUMN, &val2); + gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 0, &val0); + gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 1, &val1); - bad = g_value_get_string(&val0); - good = g_value_get_string(&val1); - word_only = g_value_get_boolean(&val2); + bad = (char *) g_value_get_string(&val0); + good = (char *) g_value_get_string(&val1); tmpbad = g_utf8_casefold(bad, -1); tmpword = g_utf8_casefold(word, -1); - if (word_only && (!strcmp(bad, lowerword) || (!is_word_lowercase(bad) && !strcmp(tmpbad, tmpword)))) { - g_free(tmpbad); - g_free(tmpword); - + if (!strcmp(bad, lowerword) || (!is_word_lowercase(bad) && !strcmp(tmpbad, tmpword))) { outword = g_strdup(good); if (is_word_lowercase(bad) && is_word_lowercase(good)) { @@ -240,14 +172,15 @@ g_value_unset(&val0); g_value_unset(&val1); - g_value_unset(&val2); + + g_free(tmpbad); + g_free(tmpword); return outword; } - g_value_unset(&val0); g_value_unset(&val1); - g_value_unset(&val2); + g_free(tmpbad); g_free(tmpword); @@ -356,17 +289,6 @@ gchar *tmp; int period_count = 0; gchar *word; - GtkTextMark *mark; - GtkTextIter pos; - - substitute_simple_buffer(buffer); - - mark = gtk_text_buffer_get_insert(buffer); - gtk_text_buffer_get_iter_at_mark(buffer, &pos, mark); - spell->pos = gtk_text_iter_get_offset(&pos); - - gtk_text_buffer_get_iter_at_mark(buffer, &start, mark); - gtk_text_buffer_get_iter_at_mark(buffer, &end, mark); /* We need to go backwords to find out if we are inside a word or not. */ gtk_text_iter_backward_char(&end); @@ -480,7 +402,6 @@ if (len == 1) check_range(spell, buffer, start, *iter); - gtk_text_buffer_get_iter_at_offset(buffer, iter, spell->pos); gtk_text_buffer_move_mark(buffer, spell->mark_insert_end, iter); spell->inserting = FALSE; @@ -527,7 +448,7 @@ spell->word = NULL; } -static void +spellchk* spellchk_new_attach(GaimConversation *c) { spellchk *spell; GtkTextBuffer *buffer; @@ -540,8 +461,9 @@ view = GTK_TEXT_VIEW(gtkconv->entry); spell = g_object_get_data(G_OBJECT(view), SPELLCHK_OBJECT_KEY); - if (spell != NULL) - return; + if(spell){ + return spell; + } /* attach to the widget */ spell = g_new0(spellchk, 1); @@ -574,7 +496,7 @@ "insert-text", G_CALLBACK(insert_text_after), spell); - return; + return spell; } static int buf_get_line(char *ibuf, char **buf, int *position, int len) @@ -607,10 +529,18 @@ static void load_conf() { - /* Corrections to change "...", "(c)", "(r)", and "(tm)" to their + /* There are things in this word list that the plugin can't yet correct. + * For example, BAD "words" with spaces in them. I've left them in the + * list because if the plugin is enhanced in the future, they'll be + * useful corrections. + * + * Corrections to change "...", "(c)", "(r)", and "(tm)" to their * Unicode character equivalents were not added here even though - * they existed in the source list(s). I think these corrections + * they existed in the source list(s). This plugin doesn't yet + * handle them and it seems that even if it did, those corrections * would be more trouble than they're worth. + * + * - Richard Laager (rlaager) */ const char * const defaultconf = "BAD abbout\nGOOD about\n" @@ -639,7 +569,7 @@ "BAD advanage\nGOOD advantage\n" "BAD affraid\nGOOD afraid\n" "BAD afterthe\nGOOD after the\n" - "COMPLETE 0\nBAD againstt he\nGOOD against the\n" + "BAD againstt he\nGOOD against the\n" "BAD aganist\nGOOD against\n" "BAD aggresive\nGOOD aggressive\n" "BAD agian\nGOOD again\n" @@ -675,7 +605,7 @@ "BAD andone\nGOOD and one\n" "BAD andteh\nGOOD and the\n" "BAD andthe\nGOOD and the\n" - "COMPLETE 0\nBAD andt he\nGOOD and the\n" + "BAD andt he\nGOOD and the\n" "BAD anothe\nGOOD another\n" "BAD anual\nGOOD annual\n" "BAD any1\nGOOD anyone\n" @@ -692,15 +622,15 @@ "BAD aquisition\nGOOD acquisition\n" "BAD aquisitions\nGOOD acquisitions\n" "BAD arent\nGOOD aren't\n" - "COMPLETE 0\nBAD aren;t\nGOOD aren't\n" + "BAD aren;t\nGOOD aren't\n" "BAD arguement\nGOOD argument\n" "BAD arguements\nGOOD arguments\n" - "COMPLETE 0\nBAD arn't\nGOOD aren't\n" + "BAD arn't\nGOOD aren't\n" "BAD arond\nGOOD around\n" "BAD artical\nGOOD article\n" "BAD articel\nGOOD article\n" "BAD asdvertising\nGOOD advertising\n" - "COMPLETE 0\nBAD askt he\nGOOD ask the\n" + "BAD askt he\nGOOD ask the\n" "BAD assistent\nGOOD assistant\n" "BAD asthe\nGOOD as the\n" "BAD atention\nGOOD attention\n" @@ -752,7 +682,7 @@ "BAD brodcast\nGOOD broadcast\n" "BAD butthe\nGOOD but the\n" "BAD bve\nGOOD be\n" - "COMPLETE 0\nBAD byt he\nGOOD by the\n" + "BAD byt he\nGOOD by the\n" "BAD cafe\nGOOD café\n" "BAD caharcter\nGOOD character\n" "BAD calcullated\nGOOD calculated\n" @@ -760,8 +690,8 @@ "BAD candidtae\nGOOD candidate\n" "BAD candidtaes\nGOOD candidates\n" "BAD cant\nGOOD can't\n" - "COMPLETE 0\nBAD can;t\nGOOD can't\n" - "COMPLETE 0\nBAD can't of been\nGOOD can't have been\n" + "BAD can;t\nGOOD can't\n" + "BAD can't of been\nGOOD can't have been\n" "BAD catagory\nGOOD category\n" "BAD categiory\nGOOD category\n" "BAD certian\nGOOD certain\n" @@ -806,7 +736,7 @@ "BAD comntain\nGOOD contain\n" "BAD comntains\nGOOD contains\n" "BAD compair\nGOOD compare\n" - "COMPLETE 0\nBAD company;s\nGOOD company's\n" + "BAD company;s\nGOOD company's\n" "BAD competetive\nGOOD competitive\n" "BAD compleated\nGOOD completed\n" "BAD compleatly\nGOOD completely\n" @@ -836,12 +766,12 @@ "BAD corruptable\nGOOD corruptible\n" "BAD cotten\nGOOD cotton\n" "BAD coudl\nGOOD could\n" - "COMPLETE 0\nBAD coudln't\nGOOD couldn't\n" - "COMPLETE 0\nBAD coudn't\nGOOD couldn't\n" + "BAD coudln't\nGOOD couldn't\n" + "BAD coudn't\nGOOD couldn't\n" "BAD couldnt\nGOOD couldn't\n" - "COMPLETE 0\nBAD couldn;t\nGOOD couldn't\n" - "COMPLETE 0\nBAD could of been\nGOOD could have been\n" - "COMPLETE 0\nBAD could of had\nGOOD could have had\n" + "BAD couldn;t\nGOOD couldn't\n" + "BAD could of been\nGOOD could have been\n" + "BAD could of had\nGOOD could have had\n" "BAD couldthe\nGOOD could the\n" "BAD couldve\nGOOD could've\n" "BAD cpoy\nGOOD copy\n" @@ -862,7 +792,7 @@ "BAD decor\nGOOD décor\n" "BAD defendent\nGOOD defendant\n" "BAD definately\nGOOD definitely\n" - "COMPLETE 0\nBAD deja vu\nGOOD déjà vu\n" + "BAD deja vu\nGOOD déjà vu\n" "BAD deptartment\nGOOD department\n" "BAD desicion\nGOOD decision\n" "BAD desicions\nGOOD decisions\n" @@ -888,7 +818,7 @@ "BAD didint\nGOOD didn't\n" "BAD didnot\nGOOD did not\n" "BAD didnt\nGOOD didn't\n" - "COMPLETE 0\nBAD didn;t\nGOOD didn't\n" + "BAD didn;t\nGOOD didn't\n" "BAD difefrent\nGOOD different\n" "BAD diferences\nGOOD differences\n" "BAD differance\nGOOD difference\n" @@ -912,11 +842,11 @@ "BAD documetn\nGOOD document\n" "BAD documnet\nGOOD document\n" "BAD documnets\nGOOD documents\n" - "COMPLETE 0\nBAD doens't\nGOOD doesn't\n" + "BAD doens't\nGOOD doesn't\n" "BAD doese\nGOOD does\n" - "COMPLETE 0\nBAD doe snot\nGOOD does not\n" + "BAD doe snot\nGOOD does not\n" "BAD doesnt\nGOOD doesn't\n" - "COMPLETE 0\nBAD doesn;t\nGOOD doesn't\n" + "BAD doesn;t\nGOOD doesn't\n" "BAD doign\nGOOD doing\n" "BAD doimg\nGOOD doing\n" "BAD doind\nGOOD doing\n" @@ -924,10 +854,10 @@ "BAD donig\nGOOD doing\n" "BAD donno\nGOOD don't know\n" "BAD dont\nGOOD don't\n" - "COMPLETE 0\nBAD do'nt\nGOOD don't\n" - "COMPLETE 0\nBAD don;t\nGOOD don't\n" - "COMPLETE 0\nBAD don't no\nGOOD don't know\n" - "COMPLETE 0\nBAD dosn't\nGOOD doesn't\n" + "BAD do'nt\nGOOD don't\n" + "BAD don;t\nGOOD don't\n" + "BAD don't no\nGOOD don't know\n" + "BAD dosn't\nGOOD doesn't\n" "BAD driveing\nGOOD driving\n" "BAD drnik\nGOOD drink\n" "BAD dunno\nGOOD don't know\n" @@ -993,7 +923,7 @@ "BAD friday\nGOOD Friday\n" "BAD frmo\nGOOD from\n" "BAD fromthe\nGOOD from the\n" - "COMPLETE 0\nBAD fromt he\nGOOD from the\n" + "BAD fromt he\nGOOD from the\n" "BAD furneral\nGOOD funeral\n" "BAD fwe\nGOOD few\n" "BAD garantee\nGOOD guarantee\n" @@ -1015,7 +945,7 @@ "BAD guidlines\nGOOD guidelines\n" "BAD hadbeen\nGOOD had been\n" "BAD hadnt\nGOOD hadn't\n" - "COMPLETE 0\nBAD hadn;t\nGOOD hadn't\n" + "BAD hadn;t\nGOOD hadn't\n" "BAD haev\nGOOD have\n" "BAD hapen\nGOOD happen\n" "BAD hapened\nGOOD happened\n" @@ -1024,22 +954,22 @@ "BAD happend\nGOOD happened\n" "BAD hasbeen\nGOOD has been\n" "BAD hasnt\nGOOD hasn't\n" - "COMPLETE 0\nBAD hasn;t\nGOOD hasn't\n" + "BAD hasn;t\nGOOD hasn't\n" "BAD havebeen\nGOOD have been\n" "BAD haveing\nGOOD having\n" "BAD havent\nGOOD haven't\n" - "COMPLETE 0\nBAD haven;t\nGOOD haven't\n" + "BAD haven;t\nGOOD haven't\n" "BAD hda\nGOOD had\n" "BAD hearign\nGOOD hearing\n" - "COMPLETE 0\nBAD he;d\nGOOD he'd\n" + "BAD he;d\nGOOD he'd\n" "BAD hel\nGOOD he'll\n" - "COMPLETE 0\nBAD he;ll\nGOOD he'll\n" + "BAD he;ll\nGOOD he'll\n" "BAD helpfull\nGOOD helpful\n" "BAD herat\nGOOD heart\n" "BAD heres\nGOOD here's\n" - "COMPLETE 0\nBAD here;s\nGOOD here's\n" + "BAD here;s\nGOOD here's\n" "BAD hes\nGOOD he's\n" - "COMPLETE 0\nBAD he;s\nGOOD he's\n" + "BAD he;s\nGOOD he's\n" "BAD hesaid\nGOOD he said\n" "BAD hewas\nGOOD he was\n" "BAD hge\nGOOD he\n" @@ -1057,27 +987,27 @@ "BAD hting\nGOOD thing\n" "BAD htink\nGOOD think\n" "BAD htis\nGOOD this\n" - "COMPLETE 0\nBAD htp:\nGOOD http:\n" - "COMPLETE 0\nBAD http:\\\\nGOOD http://\n" + "BAD htp:\nGOOD http:\n" + "BAD http:\\\\nGOOD http://\n" "BAD httpL\nGOOD http:\n" "BAD hvae\nGOOD have\n" "BAD hvaing\nGOOD having\n" "BAD hwich\nGOOD which\n" "BAD i\nGOOD I\n" - "COMPLETE 0\nBAD i c\nGOOD I see\n" - "COMPLETE 0\nBAD i;d\nGOOD I'd\n" - "COMPLETE 0\nBAD i'd\nGOOD I'd\n" - "COMPLETE 0\nBAD I;d\nGOOD I'd\n" + "BAD i c\nGOOD I see\n" + "BAD i;d\nGOOD I'd\n" + "BAD i'd\nGOOD I'd\n" + "BAD I;d\nGOOD I'd\n" "BAD idae\nGOOD idea\n" "BAD idaes\nGOOD ideas\n" "BAD identofy\nGOOD identify\n" "BAD ihs\nGOOD his\n" "BAD iits the\nGOOD it's the\n" - "COMPLETE 0\nBAD i'll\nGOOD I'll\n" - "COMPLETE 0\nBAD I;ll\nGOOD I'll\n" - "COMPLETE 0\nBAD i;m\nGOOD I'm\n" - "COMPLETE 0\nBAD i'm\nGOOD I'm\n" - "COMPLETE 0\nBAD I\"m\nGOOD I'm\n" + "BAD i'll\nGOOD I'll\n" + "BAD I;ll\nGOOD I'll\n" + "BAD i;m\nGOOD I'm\n" + "BAD i'm\nGOOD I'm\n" + "BAD I\"m\nGOOD I'm\n" "BAD imediate\nGOOD immediate\n" "BAD imediatly\nGOOD immediately\n" "BAD immediatly\nGOOD immediately\n" @@ -1103,33 +1033,33 @@ "BAD inteh\nGOOD in the\n" "BAD interum\nGOOD interim\n" "BAD inthe\nGOOD in the\n" - "COMPLETE 0\nBAD int he\nGOOD in the\n" + "BAD int he\nGOOD in the\n" "BAD inturn\nGOOD intern\n" "BAD inwhich\nGOOD in which\n" - "COMPLETE 0\nBAD i snot\nGOOD is not\n" + "BAD i snot\nGOOD is not\n" "BAD isnt\nGOOD isn't\n" - "COMPLETE 0\nBAD isn;t\nGOOD isn't\n" + "BAD isn;t\nGOOD isn't\n" "BAD isthe\nGOOD is the\n" "BAD itd\nGOOD it'd\n" - "COMPLETE 0\nBAD it;d\nGOOD it'd\n" + "BAD it;d\nGOOD it'd\n" "BAD itis\nGOOD it is\n" "BAD ititial\nGOOD initial\n" "BAD itll\nGOOD it'll\n" - "COMPLETE 0\nBAD it;ll\nGOOD it'll\n" + "BAD it;ll\nGOOD it'll\n" "BAD itnerest\nGOOD interest\n" "BAD itnerested\nGOOD interested\n" "BAD itneresting\nGOOD interesting\n" "BAD itnerests\nGOOD interests\n" - "COMPLETE 0\nBAD it;s\nGOOD it's\n" + "BAD it;s\nGOOD it's\n" "BAD itsa\nGOOD it's a\n" - "COMPLETE 0\nBAD its a\nGOOD it's a\n" - "COMPLETE 0\nBAD it snot\nGOOD it's not\n" - "COMPLETE 0\nBAD it' snot\nGOOD it's not\n" - "COMPLETE 0\nBAD its the\nGOOD it's the\n" + "BAD its a\nGOOD it's a\n" + "BAD it snot\nGOOD it's not\n" + "BAD it' snot\nGOOD it's not\n" + "BAD its the\nGOOD it's the\n" "BAD itwas\nGOOD it was\n" "BAD ive\nGOOD I've\n" - "COMPLETE 0\nBAD i;ve\nGOOD I've\n" - "COMPLETE 0\nBAD i've\nGOOD I've\n" + "BAD i;ve\nGOOD I've\n" + "BAD i've\nGOOD I've\n" "BAD iwll\nGOOD will\n" "BAD iwth\nGOOD with\n" "BAD jsut\nGOOD just\n" @@ -1149,9 +1079,9 @@ "BAD laterz\nGOOD later\n" "BAD learnign\nGOOD learning\n" "BAD lenght\nGOOD length\n" - "COMPLETE 0\nBAD let;s\nGOOD let's\n" - "COMPLETE 0\nBAD let's him\nGOOD lets him\n" - "COMPLETE 0\nBAD let's it\nGOOD lets it\n" + "BAD let;s\nGOOD let's\n" + "BAD let's him\nGOOD lets him\n" + "BAD let's it\nGOOD lets it\n" "BAD levle\nGOOD level\n" "BAD libary\nGOOD library\n" "BAD librarry\nGOOD library\n" @@ -1176,14 +1106,14 @@ "BAD managment\nGOOD management\n" "BAD mantain\nGOOD maintain\n" "BAD marraige\nGOOD marriage\n" - "COMPLETE 0\nBAD may of been\nGOOD may have been\n" - "COMPLETE 0\nBAD may of had\nGOOD may have had\n" + "BAD may of been\nGOOD may have been\n" + "BAD may of had\nGOOD may have had\n" "BAD memeber\nGOOD member\n" "BAD merchent\nGOOD merchant\n" "BAD mesage\nGOOD message\n" "BAD mesages\nGOOD messages\n" - "COMPLETE 0\nBAD might of been\nGOOD might have been\n" - "COMPLETE 0\nBAD might of had\nGOOD might have had\n" + "BAD might of been\nGOOD might have been\n" + "BAD might of had\nGOOD might have had\n" "BAD mispell\nGOOD misspell\n" "BAD mispelling\nGOOD misspelling\n" "BAD mispellings\nGOOD misspellings\n" @@ -1194,13 +1124,13 @@ "BAD monday\nGOOD Monday\n" "BAD morgage\nGOOD mortgage\n" "BAD mroe\nGOOD more\n" - "COMPLETE 0\nBAD must of been\nGOOD must have been\n" - "COMPLETE 0\nBAD must of had\nGOOD must have had\n" + "BAD must of been\nGOOD must have been\n" + "BAD must of had\nGOOD must have had\n" "BAD mysefl\nGOOD myself\n" "BAD myu\nGOOD my\n" "BAD naive\nGOOD naïve\n" - "COMPLETE 0\nBAD ne way\nGOOD anyway\n" - "COMPLETE 0\nBAD ne ways\nGOOD anyways\n" + "BAD ne way\nGOOD anyway\n" + "BAD ne ways\nGOOD anyways\n" "BAD ne1\nGOOD anyone\n" "BAD neway\nGOOD anyway\n" "BAD neways\nGOOD anyways\n" @@ -1237,7 +1167,7 @@ "BAD oneof\nGOOD one of\n" "BAD onepoint\nGOOD one point\n" "BAD onthe\nGOOD on the\n" - "COMPLETE 0\nBAD ont he\nGOOD on the\n" + "BAD ont he\nGOOD on the\n" "BAD onyl\nGOOD only\n" "BAD oppasite\nGOOD opposite\n" "BAD opperation\nGOOD operation\n" @@ -1357,7 +1287,7 @@ "BAD saidit\nGOOD said it\n" "BAD saidthat\nGOOD said that\n" "BAD saidthe\nGOOD said the\n" - "COMPLETE 0\nBAD saidt he\nGOOD said the\n" + "BAD saidt he\nGOOD said the\n" "BAD sandwhich\nGOOD sandwich\n" "BAD sandwitch\nGOOD sandwich\n" "BAD saturday\nGOOD Saturday\n" @@ -1374,20 +1304,21 @@ "BAD seperate\nGOOD separate\n" "BAD sercumstances\nGOOD circumstances\n" "BAD shcool\nGOOD school\n" - "COMPLETE 0\nBAD she;d\nGOOD she'd\n" - "COMPLETE 0\nBAD she;ll\nGOOD she'll\n" + "BAD she'\nGOOD she'll\n" + "BAD she;d\nGOOD she'd\n" + "BAD she;ll\nGOOD she'll\n" "BAD shes\nGOOD she's\n" - "COMPLETE 0\nBAD she;s\nGOOD she's\n" + "BAD she;s\nGOOD she's\n" "BAD shesaid\nGOOD she said\n" "BAD shineing\nGOOD shining\n" "BAD shiped\nGOOD shipped\n" "BAD shoudl\nGOOD should\n" - "COMPLETE 0\nBAD shoudln't\nGOOD shouldn't\n" + "BAD shoudln't\nGOOD shouldn't\n" "BAD shouldent\nGOOD shouldn't\n" "BAD shouldnt\nGOOD shouldn't\n" - "COMPLETE 0\nBAD shouldn;t\nGOOD shouldn't\n" - "COMPLETE 0\nBAD should of been\nGOOD should have been\n" - "COMPLETE 0\nBAD should of had\nGOOD should have had\n" + "BAD shouldn;t\nGOOD shouldn't\n" + "BAD should of been\nGOOD should have been\n" + "BAD should of had\nGOOD should have had\n" "BAD shouldve\nGOOD should've\n" "BAD showinf\nGOOD showing\n" "BAD signifacnt\nGOOD significant\n" @@ -1407,7 +1338,7 @@ "BAD somewaht\nGOOD somewhat\n" "BAD somthing\nGOOD something\n" "BAD somtimes\nGOOD sometimes\n" - "COMPLETE 0\nBAD sot hat\nGOOD so that\n" + "BAD sot hat\nGOOD so that\n" "BAD soudn\nGOOD sound\n" "BAD soudns\nGOOD sounds\n" "BAD speach\nGOOD speech\n" @@ -1448,7 +1379,7 @@ "BAD tecnical\nGOOD technical\n" "BAD teh\nGOOD the\n" "BAD tehy\nGOOD they\n" - "COMPLETE 0\nBAD tellt he\nGOOD tell the\n" + "BAD tellt he\nGOOD tell the\n" "BAD termoil\nGOOD turmoil\n" "BAD tets\nGOOD test\n" "BAD tghe\nGOOD the\n" @@ -1457,33 +1388,33 @@ "BAD thanx\nGOOD thanks\n" "BAD thats\nGOOD that's\n" "BAD thatthe\nGOOD that the\n" - "COMPLETE 0\nBAD thatt he\nGOOD that the\n" + "BAD thatt he\nGOOD that the\n" "BAD thecompany\nGOOD the company\n" "BAD thefirst\nGOOD the first\n" "BAD thegovernment\nGOOD the government\n" - "COMPLETE 0\nBAD their are\nGOOD there are\n" - "COMPLETE 0\nBAD their is\nGOOD there is\n" + "BAD their are\nGOOD there are\n" + "BAD their is\nGOOD there is\n" "BAD themself\nGOOD themselves\n" "BAD themselfs\nGOOD themselves\n" "BAD thenew\nGOOD the new\n" "BAD theres\nGOOD there's\n" - "COMPLETE 0\nBAD there's is\nGOOD theirs is\n" + "BAD there's is\nGOOD theirs is\n" "BAD theri\nGOOD their\n" "BAD thesame\nGOOD the same\n" "BAD thetwo\nGOOD the two\n" "BAD theyd\nGOOD they'd\n" - "COMPLETE 0\nBAD they;d\nGOOD they'd\n" - "COMPLETE 0\nBAD they;l\nGOOD they'll\n" + "BAD they;d\nGOOD they'd\n" + "BAD they;l\nGOOD they'll\n" "BAD theyll\nGOOD they'll\n" - "COMPLETE 0\nBAD they;ll\nGOOD they'll\n" - "COMPLETE 0\nBAD they;r\nGOOD they're\n" - "COMPLETE 0\nBAD theyre\nGOOD they're\n" - "COMPLETE 0\nBAD they;re\nGOOD they're\n" - "COMPLETE 0\nBAD they're are\nGOOD there are\n" - "COMPLETE 0\nBAD they're is\nGOOD there is\n" - "COMPLETE 0\nBAD they;v\nGOOD they've\n" + "BAD they;ll\nGOOD they'll\n" + "BAD they;r\nGOOD they're\n" + "BAD theyre\nGOOD they're\n" + "BAD they;re\nGOOD they're\n" + "BAD they're are\nGOOD there are\n" + "BAD they're is\nGOOD there is\n" + "BAD they;v\nGOOD they've\n" "BAD theyve\nGOOD they've\n" - "COMPLETE 0\nBAD they;ve\nGOOD they've\n" + "BAD they;ve\nGOOD they've\n" "BAD thgat\nGOOD that\n" "BAD thge\nGOOD the\n" "BAD thier\nGOOD their \n" @@ -1513,7 +1444,7 @@ "BAD tnx\nGOOD thanks\n" "BAD todya\nGOOD today\n" "BAD togehter\nGOOD together\n" - "COMPLETE 0\nBAD toldt he\nGOOD told the\n" + "BAD toldt he\nGOOD told the\n" "BAD tomorow\nGOOD tomorrow\n" "BAD tongiht\nGOOD tonight\n" "BAD tonihgt\nGOOD tonight\n" @@ -1521,7 +1452,7 @@ "BAD totaly\nGOOD totally\n" "BAD totalyl\nGOOD totally\n" "BAD tothe\nGOOD to the\n" - "COMPLETE 0\nBAD tot he\nGOOD to the\n" + "BAD tot he\nGOOD to the\n" "BAD towrad\nGOOD toward\n" "BAD traditionalyl\nGOOD traditionally\n" "BAD transfered\nGOOD transferred\n" @@ -1535,7 +1466,7 @@ "BAD u\nGOOD you\n" "BAD udnerstand\nGOOD understand\n" "BAD understnad\nGOOD understand\n" - "COMPLETE 0\nBAD undert he\nGOOD under the\n" + "BAD undert he\nGOOD under the\n" "BAD unforseen\nGOOD unforeseen\n" "BAD UnitedStates\nGOOD United States\n" "BAD unliek\nGOOD unlike\n" @@ -1548,44 +1479,44 @@ "BAD veyr\nGOOD very\n" "BAD virtualyl\nGOOD virtually\n" "BAD visavis\nGOOD vis-a-vis\n" - "COMPLETE 0\nBAD vis-a-vis\nGOOD vis-à-vis\n" + "BAD vis-a-vis\nGOOD vis-à-vis\n" "BAD vrey\nGOOD very\n" "BAD vulnerible\nGOOD vulnerable\n" "BAD waht\nGOOD what\n" "BAD warrent\nGOOD warrant\n" - "COMPLETE 0\nBAD wa snot\nGOOD was not\n" - "COMPLETE 0\nBAD wasnt\nGOOD wasn't\n" - "COMPLETE 0\nBAD wasn;t\nGOOD wasn't\n" + "BAD wa snot\nGOOD was not\n" + "BAD wasnt\nGOOD wasn't\n" + "BAD wasn;t\nGOOD wasn't\n" "BAD wat\nGOOD what\n" "BAD watn\nGOOD want\n" - "COMPLETE 0\nBAD we;d\nGOOD we'd\n" + "BAD we;d\nGOOD we'd\n" "BAD wednesday\nGOOD Wednesday\n" "BAD wel\nGOOD we'll\n" "BAD wehn\nGOOD when\n" - "COMPLETE 0\nBAD we'l\nGOOD we'll\n" - "COMPLETE 0\nBAD we;ll\nGOOD we'll\n" - "COMPLETE 0\nBAD we;re\nGOOD we're\n" + "BAD we'l\nGOOD we'll\n" + "BAD we;ll\nGOOD we'll\n" + "BAD we;re\nGOOD we're\n" "BAD werent\nGOOD weren't\n" - "COMPLETE 0\nBAD weren;t\nGOOD weren't\n" - "COMPLETE 0\nBAD wern't\nGOOD weren't\n" + "BAD weren;t\nGOOD weren't\n" + "BAD wern't\nGOOD weren't\n" "BAD werre\nGOOD were\n" "BAD weve\nGOOD we've\n" - "COMPLETE 0\nBAD we;ve\nGOOD we've\n" + "BAD we;ve\nGOOD we've\n" "BAD whats\nGOOD what's\n" - "COMPLETE 0\nBAD what;s\nGOOD what's\n" + "BAD what;s\nGOOD what's\n" "BAD whcih\nGOOD which\n" - "COMPLETE 0\nBAD whent he\nGOOD when the\n" + "BAD whent he\nGOOD when the\n" "BAD wheres\nGOOD where's\n" - "COMPLETE 0\nBAD where;s\nGOOD where's\n" + "BAD where;s\nGOOD where's\n" "BAD wherre\nGOOD where\n" "BAD whic\nGOOD which\n" - "COMPLETE 0\nBAD whicht he\nGOOD which the\n" + "BAD whicht he\nGOOD which the\n" "BAD whihc\nGOOD which\n" "BAD wholl\nGOOD who'll\n" "BAD whos\nGOOD who's\n" - "COMPLETE 0\nBAD who;s\nGOOD who's\n" + "BAD who;s\nGOOD who's\n" "BAD whove\nGOOD who've\n" - "COMPLETE 0\nBAD who;ve\nGOOD who've\n" + "BAD who;ve\nGOOD who've\n" "BAD whta\nGOOD what\n" "BAD whys\nGOOD why's\n" "BAD wief\nGOOD wife\n" @@ -1593,12 +1524,12 @@ "BAD wihch\nGOOD which\n" "BAD wiht\nGOOD with\n" "BAD willbe\nGOOD will be\n" - "COMPLETE 0\nBAD will of been\nGOOD will have been\n" - "COMPLETE 0\nBAD will of had\nGOOD will have had\n" + "BAD will of been\nGOOD will have been\n" + "BAD will of had\nGOOD will have had\n" "BAD windoes\nGOOD windows\n" "BAD witha\nGOOD with a\n" "BAD withe\nGOOD with\n" - "COMPLETE 0\nBAD withthe\nGOOD with the\n" + "BAD withthe\nGOOD with the\n" "BAD witht he\nGOOD with the\n" "BAD wiull\nGOOD will\n" "BAD wnat\nGOOD want\n" @@ -1608,15 +1539,15 @@ "BAD wohle\nGOOD whole\n" "BAD wokr\nGOOD work\n" "BAD wont\nGOOD won't\n" - "COMPLETE 0\nBAD wo'nt\nGOOD won't\n" - "COMPLETE 0\nBAD won;t\nGOOD won't\n" + "BAD wo'nt\nGOOD won't\n" + "BAD won;t\nGOOD won't\n" "BAD woudl\nGOOD would\n" - "COMPLETE 0\nBAD woudln't\nGOOD wouldn't\n" + "BAD woudln't\nGOOD wouldn't\n" "BAD wouldbe\nGOOD would be\n" "BAD wouldnt\nGOOD wouldn't\n" - "COMPLETE 0\nBAD wouldn;t\nGOOD wouldn't\n" - "COMPLETE 0\nBAD would of been\nGOOD would have been\n" - "COMPLETE 0\nBAD would of had\nGOOD would have had\n" + "BAD wouldn;t\nGOOD wouldn't\n" + "BAD would of been\nGOOD would have been\n" + "BAD would of had\nGOOD would have had\n" "BAD wouldve\nGOOD would've\n" "BAD wriet\nGOOD write\n" "BAD writting\nGOOD writing\n" @@ -1635,22 +1566,22 @@ "BAD yoiu\nGOOD you\n" "BAD youare\nGOOD you are\n" "BAD youd\nGOOD you'd\n" - "COMPLETE 0\nBAD you;d\nGOOD you'd\n" + "BAD you;d\nGOOD you'd\n" "BAD youll\nGOOD you'll\n" - "COMPLETE 0\nBAD your a\nGOOD you're a\n" - "COMPLETE 0\nBAD your an\nGOOD you're an\n" + "BAD your a\nGOOD you're a\n" + "BAD your an\nGOOD you're an\n" "BAD youre\nGOOD you're\n" - "COMPLETE 0\nBAD you;re\nGOOD you're\n" - "COMPLETE 0\nBAD you're own\nGOOD your own\n" - "COMPLETE 0\nBAD your her\nGOOD you're her\n" - "COMPLETE 0\nBAD your here\nGOOD you're here\n" - "COMPLETE 0\nBAD your his\nGOOD you're his\n" - "COMPLETE 0\nBAD your my\nGOOD you're my\n" - "COMPLETE 0\nBAD your the\nGOOD you're the\n" - "COMPLETE 0\nBAD your their\nGOOD you're their\n" - "COMPLETE 0\nBAD your your\nGOOD you're your\n" + "BAD you;re\nGOOD you're\n" + "BAD you're own\nGOOD your own\n" + "BAD your her\nGOOD you're her\n" + "BAD your here\nGOOD you're here\n" + "BAD your his\nGOOD you're his\n" + "BAD your my\nGOOD you're my\n" + "BAD your the\nGOOD you're the\n" + "BAD your their\nGOOD you're their\n" + "BAD your your\nGOOD you're your\n" "BAD youve\nGOOD you've\n" - "COMPLETE 0\nBAD you;ve\nGOOD you've\n" + "BAD you;ve\nGOOD you've\n" "BAD ytou\nGOOD you\n" "BAD yuo\nGOOD you\n" "BAD yuor\nGOOD your\n"; @@ -1659,10 +1590,8 @@ GHashTable *hashes; char bad[82] = ""; char good[256] = ""; - char completestr[BUFSIZ] = ""; int pnt = 0; gsize size; - gboolean complete = TRUE; buf = g_build_filename(gaim_user_dir(), "dict", NULL); g_file_get_contents(buf, &ibuf, &size, NULL); @@ -1672,22 +1601,14 @@ size = strlen(defaultconf); } - model = gtk_list_store_new((gint)N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); - hashes = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + model = gtk_list_store_new((gint)N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); + hashes = g_hash_table_new(g_str_hash, g_str_equal); while (buf_get_line(ibuf, &buf, &pnt, size)) { if (*buf != '#') { if (!strncasecmp(buf, "BAD ", 4)) - { strncpy(bad, buf + 4, 81); - } - else if(!strncasecmp(buf, "COMPLETE ", 9)) - { - strncpy(completestr, buf+9, BUFSIZ-1); - complete = (gboolean)strtol(completestr, NULL, 10); - } - else if (!strncasecmp(buf, "GOOD ", 5)) - { + else if (!strncasecmp(buf, "GOOD ", 5)) { strncpy(good, buf + 5, 255); if (*bad && *good && g_hash_table_lookup(hashes, bad) == NULL) { @@ -1695,7 +1616,6 @@ /* We don't actually need to store the good string, since this * hash is just being used to eliminate duplicate bad strings. - * The value has to be non-NULL so the lookup above will work. */ g_hash_table_insert(hashes, g_strdup(bad), GINT_TO_POINTER(1)); @@ -1703,15 +1623,14 @@ gtk_list_store_set(model, &iter, 0, bad, 1, good, - 2, complete, -1); } bad[0] = '\0'; - complete = TRUE; } } } g_free(ibuf); + g_hash_table_foreach(hashes, (GHFunc)g_free, NULL); g_hash_table_destroy(hashes); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), @@ -1721,7 +1640,6 @@ static GtkWidget *tree; static GtkWidget *bad_entry; static GtkWidget *good_entry; -static GtkWidget *complete_toggle; static void save_list(); @@ -1746,24 +1664,6 @@ g_value_unset(&val); } - -static void on_toggled(GtkCellRendererToggle *cellrenderertoggle, - gchar *path, gpointer data){ - GtkTreeIter iter; - gboolean enabled; - - g_return_if_fail(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model), &iter, path)); - gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, - WORD_ONLY_COLUMN, &enabled, - -1); - - gtk_list_store_set(GTK_LIST_STORE(model), &iter, - WORD_ONLY_COLUMN, !enabled, - -1); - - save_list(); -} - static void list_add_new() { GtkTreeIter iter; @@ -1775,7 +1675,7 @@ GValue val0 = {0, }; char *bad; - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, BAD_COLUMN, &val0); + gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 0, &val0); bad = g_utf8_casefold(g_value_get_string(&val0), -1); if (!strcmp(bad, tmpword)) { @@ -1800,14 +1700,11 @@ gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, - BAD_COLUMN, gtk_entry_get_text(GTK_ENTRY(bad_entry)), - GOOD_COLUMN, gtk_entry_get_text(GTK_ENTRY(good_entry)), - WORD_ONLY_COLUMN, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(complete_toggle)), + 0, gtk_entry_get_text(GTK_ENTRY(bad_entry)), + 1, gtk_entry_get_text(GTK_ENTRY(good_entry)), -1); - gtk_editable_delete_text(GTK_EDITABLE(bad_entry), 0, -1); gtk_editable_delete_text(GTK_EDITABLE(good_entry), 0, -1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(complete_toggle), TRUE); gtk_widget_grab_focus(bad_entry); save_list(); @@ -1854,17 +1751,14 @@ do { GValue val0 = {0, }; GValue val1 = {0, }; - GValue val2 = {0, }; - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, BAD_COLUMN, &val0); - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, GOOD_COLUMN, &val1); - gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, WORD_ONLY_COLUMN, &val2); + gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 0, &val0); + gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 1, &val1); - g_string_append_printf(data, "COMPLETE %d\nBAD %s\nGOOD %s\n\n", g_value_get_boolean(&val2), g_value_get_string(&val0), g_value_get_string(&val1)); + g_string_append_printf(data, "BAD %s\nGOOD %s\n\n", g_value_get_string(&val0), g_value_get_string(&val1)); g_value_unset(&val0); g_value_unset(&val1); - g_value_unset(&val2); } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter)); } @@ -1927,16 +1821,17 @@ GtkWidget *hbox, *label; GtkWidget *button; GtkSizeGroup *sg; - GtkSizeGroup *sg2; GtkCellRenderer *renderer; GtkTreeViewColumn *column; + sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + ret = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width (GTK_CONTAINER(ret), 12); vbox = gaim_gtk_make_frame(ret, _("Text Replacements")); gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); - gtk_widget_set_size_request(vbox, 445, -1); + gtk_widget_set_size_request(vbox, 300, -1); gtk_widget_show(vbox); win = gtk_scrolled_window_new(0, 0); @@ -1950,7 +1845,7 @@ tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); /* gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE); */ - gtk_widget_set_size_request(tree, 445, 200); + gtk_widget_set_size_request(tree, 260,200); renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), @@ -1973,18 +1868,6 @@ column = gtk_tree_view_column_new_with_attributes(_("You send"), renderer, "text", GOOD_COLUMN, NULL); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_fixed_width(column, 150); - /* gtk_tree_view_column_set_resizable(column, TRUE); */ - gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); - renderer = gtk_cell_renderer_toggle_new(); - g_object_set(G_OBJECT(renderer), - "activatable", TRUE, - NULL); - g_signal_connect(G_OBJECT(renderer), "toggled", - G_CALLBACK(on_toggled), GINT_TO_POINTER(2)); - column = gtk_tree_view_column_new_with_attributes(_("Complete words"), - renderer, "active", WORD_ONLY_COLUMN, NULL); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width(column, 130); /* gtk_tree_view_column_set_resizable(column, TRUE); */ gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); @@ -2011,22 +1894,17 @@ vbox = gaim_gtk_make_frame(ret, _("Add a new text replacement")); gtk_widget_set_size_request(vbox, 300, -1); - sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - sg2 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - hbox = gtk_hbox_new(FALSE, 2); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); label = gtk_label_new_with_mnemonic(_("You _type:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - gtk_size_group_add_widget(sg, label); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); bad_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(bad_entry), 40); gtk_box_pack_start(GTK_BOX(hbox), bad_entry, TRUE, TRUE, 0); - gtk_size_group_add_widget(sg2, bad_entry); + gtk_size_group_add_widget(sg, bad_entry); gtk_label_set_mnemonic_widget(GTK_LABEL(label), bad_entry); gtk_widget_show(bad_entry); @@ -2036,21 +1914,14 @@ label = gtk_label_new_with_mnemonic(_("You _send:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - gtk_size_group_add_widget(sg, label); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); good_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(good_entry), 255); gtk_box_pack_start(GTK_BOX(hbox), good_entry, TRUE, TRUE, 0); - gtk_size_group_add_widget(sg2, good_entry); + gtk_size_group_add_widget(sg, good_entry); gtk_label_set_mnemonic_widget(GTK_LABEL(label), good_entry); gtk_widget_show(good_entry); - complete_toggle=gtk_check_button_new_with_mnemonic(_("Only replace _complete words")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(complete_toggle), TRUE); - gtk_widget_show(complete_toggle); - gtk_box_pack_start(GTK_BOX(vbox), complete_toggle, FALSE, FALSE, 0); - hbox = gtk_hbutton_box_new(); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); button = gtk_button_new_from_stock(GTK_STOCK_ADD);
--- a/src/gtkimhtmltoolbar.c Fri Aug 19 15:13:17 2005 +0000 +++ b/src/gtkimhtmltoolbar.c Fri Aug 19 15:59:16 2005 +0000 @@ -752,6 +752,16 @@ gtk_widget_set_sensitive(GTK_WIDGET(toolbar->fgcolor), buttons & GTK_IMHTML_FORECOLOR); gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bgcolor), buttons & GTK_IMHTML_BACKCOLOR); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->clear), + (buttons & GTK_IMHTML_BOLD || + buttons & GTK_IMHTML_ITALIC || + buttons & GTK_IMHTML_UNDERLINE || + buttons & GTK_IMHTML_GROW || + buttons & GTK_IMHTML_SHRINK || + buttons & GTK_IMHTML_FACE || + buttons & GTK_IMHTML_FORECOLOR || + buttons & GTK_IMHTML_BACKCOLOR)); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->image), buttons & GTK_IMHTML_IMAGE); gtk_widget_set_sensitive(GTK_WIDGET(toolbar->link), buttons & GTK_IMHTML_LINK); gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smiley), buttons & GTK_IMHTML_SMILEY);