Mercurial > pidgin
comparison plugins/spellchk.c @ 13947:25c55fb4b512
[gaim-migrate @ 16487]
Fix SF Bug #1517875
"The text replacement plugin is finally a good thing to
use. Unfortunately, it advertises case sensitivity
falsely. Try, for example, adding 'h' and 'H' as two
separate text replacements. ;-)"
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Tue, 11 Jul 2006 20:47:11 +0000 |
parents | 4191d39bd70e |
children |
comparison
equal
deleted
inserted
replaced
13946:4d577b63299a | 13947:25c55fb4b512 |
---|---|
1896 } | 1896 } |
1897 | 1897 |
1898 static void list_add_new() | 1898 static void list_add_new() |
1899 { | 1899 { |
1900 GtkTreeIter iter; | 1900 GtkTreeIter iter; |
1901 const char *word = gtk_entry_get_text(GTK_ENTRY(bad_entry)); | |
1902 gboolean case_sensitive = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(case_toggle)); | |
1901 | 1903 |
1902 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) { | 1904 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) { |
1903 char *tmpword = g_utf8_casefold(gtk_entry_get_text(GTK_ENTRY(bad_entry)), -1); | 1905 char *tmpword = g_utf8_casefold(word, -1); |
1904 | 1906 |
1905 do { | 1907 do { |
1906 GValue val0; | 1908 GValue bad_val; |
1907 char *bad; | 1909 gboolean match; |
1908 | 1910 |
1909 val0.g_type = 0; | 1911 bad_val.g_type = 0; |
1910 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, BAD_COLUMN, &val0); | 1912 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, BAD_COLUMN, &bad_val); |
1911 bad = g_utf8_casefold(g_value_get_string(&val0), -1); | 1913 |
1912 | 1914 if (case_sensitive) |
1913 if (!strcmp(bad, tmpword)) { | 1915 { |
1914 g_value_unset(&val0); | 1916 GValue case_sensitive_val; |
1917 case_sensitive_val.g_type = 0; | |
1918 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, CASE_SENSITIVE_COLUMN, &case_sensitive_val); | |
1919 | |
1920 /* If they're both case-sensitive, then compare directly. | |
1921 * Otherwise, they overlap. */ | |
1922 if (g_value_get_boolean(&case_sensitive_val)) | |
1923 { | |
1924 match = !strcmp(g_value_get_string(&bad_val), word); | |
1925 } | |
1926 else | |
1927 { | |
1928 char *bad = g_utf8_casefold(g_value_get_string(&bad_val), -1); | |
1929 match = !strcmp(bad, tmpword); | |
1930 g_free(bad); | |
1931 } | |
1932 g_value_unset(&case_sensitive_val); | |
1933 } | |
1934 else | |
1935 { | |
1936 char *bad = g_utf8_casefold(g_value_get_string(&bad_val), -1); | |
1937 match = !strcmp(bad, tmpword); | |
1915 g_free(bad); | 1938 g_free(bad); |
1939 } | |
1940 | |
1941 if (match) { | |
1942 g_value_unset(&bad_val); | |
1916 g_free(tmpword); | 1943 g_free(tmpword); |
1917 | 1944 |
1918 gaim_notify_error(NULL, _("Duplicate Correction"), | 1945 gaim_notify_error(NULL, _("Duplicate Correction"), |
1919 _("The specified word already exists in the correction list."), | 1946 _("The specified word already exists in the correction list."), |
1920 gtk_entry_get_text(GTK_ENTRY(bad_entry))); | 1947 gtk_entry_get_text(GTK_ENTRY(bad_entry))); |
1921 return; | 1948 return; |
1922 } | 1949 } |
1923 | 1950 |
1924 g_value_unset(&val0); | 1951 g_value_unset(&bad_val); |
1925 g_free(bad); | |
1926 | 1952 |
1927 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter)); | 1953 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter)); |
1928 | 1954 |
1929 g_free(tmpword); | 1955 g_free(tmpword); |
1930 } | 1956 } |
1931 | 1957 |
1932 | 1958 |
1933 gtk_list_store_append(model, &iter); | 1959 gtk_list_store_append(model, &iter); |
1934 gtk_list_store_set(model, &iter, | 1960 gtk_list_store_set(model, &iter, |
1935 BAD_COLUMN, gtk_entry_get_text(GTK_ENTRY(bad_entry)), | 1961 BAD_COLUMN, word, |
1936 GOOD_COLUMN, gtk_entry_get_text(GTK_ENTRY(good_entry)), | 1962 GOOD_COLUMN, gtk_entry_get_text(GTK_ENTRY(good_entry)), |
1937 WORD_ONLY_COLUMN, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(complete_toggle)), | 1963 WORD_ONLY_COLUMN, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(complete_toggle)), |
1938 CASE_SENSITIVE_COLUMN, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(case_toggle)), | 1964 CASE_SENSITIVE_COLUMN, case_sensitive, |
1939 -1); | 1965 -1); |
1940 | 1966 |
1941 gtk_editable_delete_text(GTK_EDITABLE(bad_entry), 0, -1); | 1967 gtk_editable_delete_text(GTK_EDITABLE(bad_entry), 0, -1); |
1942 gtk_editable_delete_text(GTK_EDITABLE(good_entry), 0, -1); | 1968 gtk_editable_delete_text(GTK_EDITABLE(good_entry), 0, -1); |
1943 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(complete_toggle), TRUE); | 1969 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(complete_toggle), TRUE); |