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);