SF.net SVN: geany-plugins:[1060] trunk/geany-plugins/spellcheck
eht16 at users.sourceforge.net
eht16 at xxxxx
Sat Nov 28 13:55:04 UTC 2009
Revision: 1060
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1060&view=rev
Author: eht16
Date: 2009-11-28 13:55:04 +0000 (Sat, 28 Nov 2009)
Log Message:
-----------
Prevent looking for very long search terms which most probably will fail anyway.
Modified Paths:
--------------
trunk/geany-plugins/spellcheck/ChangeLog
trunk/geany-plugins/spellcheck/src/gui.c
Modified: trunk/geany-plugins/spellcheck/ChangeLog
===================================================================
--- trunk/geany-plugins/spellcheck/ChangeLog 2009-11-28 13:12:12 UTC (rev 1059)
+++ trunk/geany-plugins/spellcheck/ChangeLog 2009-11-28 13:55:04 UTC (rev 1060)
@@ -5,6 +5,9 @@
* src/gui.c, src/scplugin.c, src/scplugin.h:
Add an option to make the editor menu items for Spelling
Suggestions optional.
+ * src/gui.c:
+ Prevent looking for very long search terms which most probably
+ will fail anyway.
2009-09-30 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/geany-plugins/spellcheck/src/gui.c
===================================================================
--- trunk/geany-plugins/spellcheck/src/gui.c 2009-11-28 13:12:12 UTC (rev 1059)
+++ trunk/geany-plugins/spellcheck/src/gui.c 2009-11-28 13:55:04 UTC (rev 1060)
@@ -202,6 +202,22 @@
}
+static GtkWidget *init_editor_submenu(void)
+{
+ if (sc_info->edit_menu_sub != NULL && GTK_IS_WIDGET(sc_info->edit_menu_sub))
+ gtk_widget_destroy(sc_info->edit_menu_sub);
+
+ sc_info->edit_menu_sub = gtk_menu_new();
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(sc_info->edit_menu), sc_info->edit_menu_sub);
+
+ gtk_widget_show(sc_info->edit_menu);
+ gtk_widget_show(sc_info->edit_menu_sep);
+ gtk_widget_show(sc_info->edit_menu_sub);
+
+ return sc_info->edit_menu_sub;
+}
+
+
void sc_gui_update_editor_menu_cb(GObject *obj, const gchar *word, gint pos,
GeanyDocument *doc, gpointer user_data)
{
@@ -233,6 +249,27 @@
return;
}
+ /* ignore too long search words */
+ if (strlen(search_word) > 100)
+ {
+ gchar *label, *short_search_word;
+ GtkWidget *menu_item;
+
+ short_search_word = utils_str_middle_truncate(search_word, 30);
+ label = g_strdup_printf(_("Search term \"%s\" is too long to check."), short_search_word);
+
+ init_editor_submenu();
+ menu_item = gtk_menu_item_new_with_label(label);
+ gtk_widget_set_sensitive(menu_item, FALSE);
+ gtk_widget_show(menu_item);
+ gtk_container_add(GTK_CONTAINER(sc_info->edit_menu_sub), menu_item);
+
+ g_free(label);
+ g_free(short_search_word);
+ g_free(search_word);
+ return;
+ }
+
if (sc_speller_dict_check(search_word) != 0)
{
GtkWidget *menu_item, *menu;
@@ -246,12 +283,8 @@
clickinfo.doc = doc;
setptr(clickinfo.word, search_word);
- if (sc_info->edit_menu_sub != NULL && GTK_IS_WIDGET(sc_info->edit_menu_sub))
- gtk_widget_destroy(sc_info->edit_menu_sub);
+ menu = init_editor_submenu();
- sc_info->edit_menu_sub = menu = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(sc_info->edit_menu), sc_info->edit_menu_sub);
-
for (i = 0; i < n_suggs; i++)
{
if (i > 0 && i % 10 == 0)
@@ -268,6 +301,7 @@
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), menu);
}
menu_item = gtk_menu_item_new_with_label(suggs[i]);
+ gtk_widget_show(menu_item);
gtk_container_add(GTK_CONTAINER(menu), menu_item);
g_signal_connect(menu_item, "activate",
G_CALLBACK(menu_suggestion_item_activate_cb), NULL);
@@ -276,26 +310,26 @@
{
menu_item = gtk_menu_item_new_with_label(_("(No Suggestions)"));
gtk_widget_set_sensitive(menu_item, FALSE);
+ gtk_widget_show(menu_item);
gtk_container_add(GTK_CONTAINER(sc_info->edit_menu_sub), menu_item);
}
menu_item = gtk_separator_menu_item_new();
+ gtk_widget_show(menu_item);
gtk_container_add(GTK_CONTAINER(sc_info->edit_menu_sub), menu_item);
label = g_strdup_printf(_("Add \"%s\" to Dictionary"), search_word);
menu_item = image_menu_item_new(GTK_STOCK_ADD, label);
+ gtk_widget_show(menu_item);
gtk_container_add(GTK_CONTAINER(sc_info->edit_menu_sub), menu_item);
g_signal_connect(menu_item, "activate",
G_CALLBACK(menu_addword_item_activate_cb), GINT_TO_POINTER(0));
menu_item = image_menu_item_new(GTK_STOCK_REMOVE, _("Ignore All"));
+ gtk_widget_show(menu_item);
gtk_container_add(GTK_CONTAINER(sc_info->edit_menu_sub), menu_item);
g_signal_connect(menu_item, "activate",
G_CALLBACK(menu_addword_item_activate_cb), GINT_TO_POINTER(1));
- gtk_widget_show(sc_info->edit_menu);
- gtk_widget_show(sc_info->edit_menu_sep);
- gtk_widget_show_all(sc_info->edit_menu_sub);
-
if (suggs != NULL)
sc_speller_dict_free_string_list(suggs);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list