#include <dirent.h>
#include <glib.h>
+#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <aspell.h>
-#include "intl.h"
-#include "gtk/gtktext.h"
#include "utils.h"
#include "codeconv.h"
-
+#include "alertpanel.h"
#include "gtkaspell.h"
+#include "gtk/gtkutils.h"
+
#define ASPELL_FASTMODE 1
#define ASPELL_NORMALMODE 2
#define ASPELL_BADSPELLERMODE 3
GtkWidget *popup_config_menu;
GtkWidget *sug_menu;
GtkWidget *replace_entry;
+ GtkWidget *parent_window;
gint default_sug_mode;
gint max_sug;
GtkTextView *gtktext;
GdkColor highlight;
+ GtkAccelGroup *accel_group;
};
typedef AspellConfig GtkAspellConfig;
gpointer data);
static gint find_gtkaspeller (gconstpointer aa,
gconstpointer bb);
-static void gtkaspell_alert_dialog (gchar *message);
/* gtkspellconfig - only one config per session */
GtkAspellConfig * gtkaspellconfig;
+static void destroy_menu(GtkWidget *widget, gpointer user_data);
/******************************************************************************/
static gint get_textview_buffer_charcount(GtkTextView *view);
-static gint get_textview_buffer_position(GtkTextView *view);
static gint get_textview_buffer_charcount(GtkTextView *view)
{
g_slist_foreach(checkers, free_checkers, NULL);
g_slist_free(checkers);
+ gtkaspellcheckers->checkers = NULL;
}
if ((dict_list = gtkaspellcheckers->dictionary_list)) {
}
g_free(gtkaspellcheckers->error_message);
-
+ gtkaspellcheckers->error_message = NULL;
return;
}
gint misspelled_color,
gboolean check_while_typing,
gboolean use_alternate,
- GtkTextView *gtktext)
+ GtkTextView *gtktext,
+ GtkWindow *parent_win)
{
Dictionary *dict;
GtkAspell *gtkaspell;
gtkaspell->max_sug = -1;
gtkaspell->suggestions_list = NULL;
gtkaspell->use_alternate = use_alternate;
-
+ gtkaspell->parent_window = GTK_WIDGET(parent_win);
+
allocate_color(gtkaspell, misspelled_color);
g_signal_connect_after(G_OBJECT(buffer), "insert-text",
return gtkaspell;
}
-void gtkaspell_delete(GtkAspell * gtkaspell)
+void gtkaspell_delete(GtkAspell *gtkaspell)
{
GtkTextView *gtktext = gtkaspell->gtktext;
g_signal_handlers_disconnect_by_func(G_OBJECT(gtktext),
G_CALLBACK(entry_insert_cb),
- gtkaspell);
+ gtkaspell);
g_signal_handlers_disconnect_by_func(G_OBJECT(gtktext),
G_CALLBACK(entry_delete_cb),
- gtkaspell);
+ gtkaspell);
g_signal_handlers_disconnect_by_func(G_OBJECT(gtktext),
- G_CALLBACK(button_press_intercept_cb),
- gtkaspell);
+ G_CALLBACK(button_press_intercept_cb),
+ gtkaspell);
gtkaspell_uncheck_all(gtkaspell);
free_suggestions_list(gtkaspell);
g_free((gchar *)gtkaspell->dictionary_path);
+ gtkaspell->dictionary_path = NULL;
debug_print("Aspell: deleting gtkaspell %0x\n", (guint) gtkaspell);
gint len,
GtkAspell *gtkaspell)
{
- size_t wlen;
guint pos;
g_return_if_fail(gtkaspell->gtkaspeller->checker);
if (eb->button != 3)
return FALSE;
- /* forge the leftclick */
- eb->button = 1;
-
g_signal_handlers_block_by_func(G_OBJECT(gtktext),
G_CALLBACK(button_press_intercept_cb),
gtkaspell);
+ g_signal_emit_by_name(G_OBJECT(gtktext), "button-release-event",
+ e, &retval);
+
+ /* forge the leftclick */
+ eb->button = 1;
+
g_signal_emit_by_name(G_OBJECT(gtktext), "button-press-event",
e, &retval);
g_signal_emit_by_name(G_OBJECT(gtktext), "button-release-event",
jargon = NULL;
debug_print("Aspell: language: %s, jargon: %s, size: %s\n",
- language, jargon, size);
+ language, jargon ? jargon : "",
+ size ? size : "");
if (language)
CONFIG_REPLACE_RETURN_FALSE_IF_FAIL("lang", language);
{
char *themode;
- gtk_label_get(GTK_LABEL(GTK_BIN(w)->child), (gchar **) &themode);
+ themode = (char *) gtk_label_get_text(GTK_LABEL(GTK_BIN(w)->child));
+ themode = g_strdup(themode);
set_real_sug_mode(gtkaspell, themode);
+ g_free(themode);
if (gtkaspell->config_menu)
populate_submenu(gtkaspell, gtkaspell->config_menu);
elements = aspell_word_list_elements(suggestions);
list = g_list_append(list, g_strdup(word));
- while (newword = aspell_string_enumeration_next(elements))
+ while ((newword = aspell_string_enumeration_next(elements)) != NULL)
list = g_list_append(list, g_strdup(newword));
gtkaspell->max_sug = g_list_length(list) - 1;
pos += direc;
}
if (misspelled) {
+ GtkMenu *menu = NULL;
misspelled_suggest(gtkaspell, gtkaspell->theword);
if (forward)
while (gtk_events_pending ())
gtk_main_iteration ();
- gtk_menu_popup(make_sug_menu(gtkaspell), NULL, NULL,
+ menu = make_sug_menu(gtkaspell);
+ gtk_menu_popup(menu, NULL, NULL,
set_menu_pos, gtkaspell, 0, GDK_CURRENT_TIME);
+ g_signal_connect(G_OBJECT(menu), "deactivate",
+ G_CALLBACK(destroy_menu),
+ gtkaspell);
} else {
reset_theword_data(gtkaspell);
- gtkaspell_alert_dialog(_("No misspelled word found."));
+ alertpanel_notice(_("No misspelled word found."));
set_textview_buffer_offset(gtkaspell->gtktext,
gtkaspell->orig_pos);
}
{
unsigned char *newword;
GdkEvent *e= (GdkEvent *) gtk_get_current_event();
-
+
newword = gtk_editable_get_chars(GTK_EDITABLE(gtkaspell->replace_entry),
0, -1);
replace_real_word(gtkaspell, newword);
if ((e->type == GDK_KEY_PRESS &&
- ((GdkEventKey *) e)->state & GDK_MOD1_MASK)) {
+ ((GdkEventKey *) e)->state & GDK_CONTROL_MASK)) {
aspell_speller_store_replacement(
gtkaspell->gtkaspeller->checker,
gtkaspell->theword, -1,
g_free(newword);
+ if (w && GTK_IS_DIALOG(w)) {
+ gtk_widget_destroy(w);
+ }
+
set_point_continue(gtkaspell);
}
GtkAspell *gtkaspell = (GtkAspell *) data;
GdkEvent *e= (GdkEvent *) gtk_get_current_event();
- gtk_label_get(GTK_LABEL(GTK_BIN(w)->child), (gchar**) &newword);
+ newword = (unsigned char *) gtk_label_get_text(GTK_LABEL(GTK_BIN(w)->child));
+ newword = g_strdup(newword);
replace_real_word(gtkaspell, newword);
if ((e->type == GDK_KEY_PRESS &&
- ((GdkEventKey *) e)->state & GDK_MOD1_MASK) ||
+ ((GdkEventKey *) e)->state & GDK_CONTROL_MASK) ||
(e->type == GDK_BUTTON_RELEASE &&
- ((GdkEventButton *) e)->state & GDK_MOD1_MASK)) {
+ ((GdkEventButton *) e)->state & GDK_CONTROL_MASK)) {
aspell_speller_store_replacement(
gtkaspell->gtkaspeller->checker,
gtkaspell->theword, -1,
gtk_menu_shell_deactivate(GTK_MENU_SHELL(w->parent));
set_point_continue(gtkaspell);
+ g_free(newword);
}
static void replace_real_word(GtkAspell *gtkaspell, gchar *newword)
int oldlen, newlen, wordlen;
gint origpos;
gint pos;
- gint start = gtkaspell->start_pos;
GtkTextView *gtktext;
GtkTextBuffer *textbuf;
GtkTextIter startiter, enditer;
static void add_word_to_personal_cb(GtkWidget *w, gpointer data)
{
GtkAspell *gtkaspell = (GtkAspell *) data;
- GtkTextView *gtktext = gtkaspell->gtktext;
aspell_speller_add_to_personal(gtkaspell->gtkaspeller->checker,
gtkaspell->theword,
gtkaspell->misspelled = misspelled;
if (gtkaspell->misspelled) {
-
+ GtkMenu *menu;
misspelled_suggest(gtkaspell, gtkaspell->theword);
set_textview_buffer_offset(gtkaspell->gtktext,
gtkaspell->end_pos);
- gtk_menu_popup(make_sug_menu(gtkaspell), NULL, NULL,
+ menu = make_sug_menu(gtkaspell);
+ gtk_menu_popup(menu, NULL, NULL,
set_menu_pos, gtkaspell, 0,
GDK_CURRENT_TIME);
+ g_signal_connect(G_OBJECT(menu), "deactivate",
+ G_CALLBACK(destroy_menu),
+ gtkaspell);
return;
}
} else
set_point_continue(gtkaspell);
}
+static gboolean replace_key_pressed(GtkWidget *widget,
+ GdkEventKey *event,
+ GtkAspell *gtkaspell)
+{
+ if (event && event->keyval == GDK_Escape) {
+ gtk_widget_destroy(widget);
+ return TRUE;
+ } else if (event && event->keyval == GDK_Return) {
+ replace_with_supplied_word_cb(widget, gtkaspell);
+ return TRUE;
+ }
+ return FALSE;
+}
+
static void replace_with_create_dialog_cb(GtkWidget *w, gpointer data)
{
+ static PangoFontDescription *font_desc;
GtkWidget *dialog;
GtkWidget *label;
+ GtkWidget *w_hbox;
GtkWidget *hbox;
+ GtkWidget *vbox;
GtkWidget *entry;
GtkWidget *ok_button;
GtkWidget *cancel_button;
+ GtkWidget *confirm_area;
+ GtkWidget *icon;
gchar *thelabel;
gint xx, yy;
GtkAspell *gtkaspell = (GtkAspell *) data;
dialog = gtk_dialog_new();
- gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
+ gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
gtk_window_set_title(GTK_WINDOW(dialog),_("Replace unknown word"));
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_widget_set_uposition(dialog, xx, yy);
g_signal_connect_swapped(G_OBJECT(dialog), "destroy",
G_CALLBACK(gtk_widget_destroy),
G_OBJECT(dialog));
- hbox = gtk_hbox_new(FALSE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(hbox), 8);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
+ hbox = gtk_hbox_new (FALSE, 12);
+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
+ gtk_widget_show (hbox);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox,
+ FALSE, FALSE, 0);
- thelabel = g_strdup_printf(_("Replace \"%s\" with: "),
+ thelabel = g_strdup_printf(_("<span weight=\"bold\" "
+ "size=\"larger\">Replace \"%s\" with: </span>"),
gtkaspell->theword);
+ /* for title label */
+ w_hbox = gtk_hbox_new(FALSE, 0);
+
+ icon = gtk_image_new_from_stock(GTK_STOCK_DIALOG_QUESTION,
+ GTK_ICON_SIZE_DIALOG);
+ gtk_misc_set_alignment (GTK_MISC (icon), 0.5, 0.0);
+ gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0);
+
+ vbox = gtk_vbox_new (FALSE, 12);
+ gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
+ gtk_widget_show (vbox);
+
label = gtk_label_new(thelabel);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
+ gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ if (!font_desc) {
+ gint size;
+
+ size = pango_font_description_get_size
+ (label->style->font_desc);
+ font_desc = pango_font_description_new();
+ pango_font_description_set_weight
+ (font_desc, PANGO_WEIGHT_BOLD);
+ pango_font_description_set_size
+ (font_desc, size * PANGO_SCALE_LARGE);
+ }
+ if (font_desc)
+ gtk_widget_modify_font(label, font_desc);
g_free(thelabel);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-
+
entry = gtk_entry_new();
gtkaspell->replace_entry = entry;
gtk_entry_set_text(GTK_ENTRY(entry), gtkaspell->theword);
gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1);
- g_signal_connect(G_OBJECT(entry), "activate",
- G_CALLBACK(replace_with_supplied_word_cb),
- gtkaspell);
- g_signal_connect_swapped(G_OBJECT(entry), "activate",
- G_CALLBACK(gtk_widget_destroy),
- G_OBJECT(dialog));
- gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, TRUE,
- TRUE, 0);
- label = gtk_label_new(_("Holding down MOD1 key while pressing "
+ g_signal_connect(G_OBJECT(dialog),
+ "key_press_event",
+ G_CALLBACK(replace_key_pressed), gtkaspell);
+ gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
+
+ label = gtk_label_new(_("Holding down Control key while pressing "
"Enter\nwill learn from mistake.\n"));
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
- gtk_misc_set_padding(GTK_MISC(label), 8, 0);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label,
- TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_widget_show(label);
hbox = gtk_hbox_new(TRUE, 0);
- ok_button = gtk_button_new_with_label(_("OK"));
- gtk_box_pack_start(GTK_BOX(hbox), ok_button, TRUE, TRUE, 8);
+ gtkut_stock_button_set_create(&confirm_area,
+ &ok_button, GTK_STOCK_OK,
+ &cancel_button, GTK_STOCK_CANCEL,
+ NULL, NULL);
+
+ gtk_box_pack_end(GTK_BOX(GTK_DIALOG(dialog)->action_area),
+ confirm_area, FALSE, FALSE, 0);
+ gtk_container_set_border_width(GTK_CONTAINER(confirm_area), 5);
+
g_signal_connect(G_OBJECT(ok_button), "clicked",
G_CALLBACK(replace_with_supplied_word_cb),
gtkaspell);
G_CALLBACK(gtk_widget_destroy),
G_OBJECT(dialog));
- cancel_button = gtk_button_new_with_label(_("Cancel"));
- gtk_box_pack_start(GTK_BOX(hbox), cancel_button, TRUE, TRUE, 8);
g_signal_connect_swapped(G_OBJECT(cancel_button), "clicked",
G_CALLBACK(gtk_widget_destroy),
G_OBJECT(dialog));
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), hbox);
-
gtk_widget_grab_focus(entry);
gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
void gtkaspell_uncheck_all(GtkAspell * gtkaspell)
{
- gint origpos;
- gchar *text;
- gfloat adj_value;
GtkTextView *gtktext;
GtkTextBuffer *buffer;
GtkTextIter startiter, enditer;
list = NULL;
config = new_aspell_config();
-#if 0
- aspell_config_replace(config, "rem-all-word-list-path", "");
- if (aspell_config_error_number(config) != 0) {
- gtkaspellcheckers->error_message = g_strdup(
- aspell_config_error_message(config));
- gtkaspellcheckers->dictionary_list =
- create_empty_dictionary_list();
- return gtkaspellcheckers->dictionary_list;
- }
-#endif
aspell_config_replace(config, "dict-dir", aspell_path);
if (aspell_config_error_number(config) != 0) {
gtkaspellcheckers->error_message = g_strdup(
entry->name);
dict->dictname = dict->fullname + strlen(aspell_path);
dict->encoding = g_strdup(entry->code);
- debug_print("Aspell: found dictionary %s %s\n", dict->fullname,
- dict->dictname);
+
+ if (g_slist_find_custom(list, dict,
+ (GCompareFunc) compare_dict) != NULL) {
+ dictionary_delete(dict);
+ continue;
+ }
+
+ debug_print("Aspell: found dictionary %s %s %s\n", dict->fullname,
+ dict->dictname, dict->encoding);
list = g_slist_insert_sorted(list, dict,
(GCompareFunc) compare_dict);
}
populate_submenu(gtkaspell, gtkaspell->config_menu);
}
+static void destroy_menu(GtkWidget *widget,
+ gpointer user_data) {
+
+ GtkAspell *gtkaspell = (GtkAspell *)user_data;
+
+ if (gtkaspell->accel_group) {
+ gtk_window_remove_accel_group(GTK_WINDOW(gtkaspell->parent_window),
+ gtkaspell->accel_group);
+ gtkaspell->accel_group = NULL;
+ }
+}
+
static void popup_menu(GtkAspell *gtkaspell, GdkEventButton *eb)
{
GtkTextView * gtktext;
+ GtkMenu *menu = NULL;
gtktext = gtkaspell->gtktext;
set_textview_buffer_offset(gtktext, gtkaspell->orig_pos);
if (misspelled_suggest(gtkaspell, gtkaspell->theword)) {
- gtk_menu_popup(make_sug_menu(gtkaspell),
+ menu = make_sug_menu(gtkaspell);
+ gtk_menu_popup(menu,
NULL, NULL, NULL, NULL,
- eb->button, GDK_CURRENT_TIME);
+ eb->button, eb->time);
+ g_signal_connect(G_OBJECT(menu), "deactivate",
+ G_CALLBACK(destroy_menu),
+ gtkaspell);
return;
}
} else
set_textview_buffer_offset(gtktext, gtkaspell->orig_pos);
}
+ menu = make_config_menu(gtkaspell);
+ gtk_menu_popup(menu, NULL, NULL, NULL, NULL,
+ eb->button, eb->time);
- gtk_menu_popup(make_config_menu(gtkaspell), NULL, NULL, NULL, NULL,
- eb->button, GDK_CURRENT_TIME);
+ g_signal_connect(G_OBJECT(menu), "deactivate",
+ G_CALLBACK(destroy_menu),
+ gtkaspell);
+}
+
+static gboolean aspell_key_pressed(GtkWidget *widget,
+ GdkEventKey *event,
+ GtkAspell *gtkaspell)
+{
+ if (event && (isascii(event->keyval) || event->keyval == GDK_Return)) {
+ gtk_accel_groups_activate(
+ G_OBJECT(gtkaspell->parent_window),
+ event->keyval, event->state);
+ } else if (event && event->keyval == GDK_Escape) {
+ destroy_menu(NULL, gtkaspell);
+ }
+ return FALSE;
}
/* make_sug_menu() - Add menus to accept this word for this session
if (gtkaspell->sug_menu)
gtk_widget_destroy(gtkaspell->sug_menu);
+ if (gtkaspell->accel_group) {
+ gtk_window_remove_accel_group(GTK_WINDOW(gtkaspell->parent_window),
+ gtkaspell->accel_group);
+ gtkaspell->accel_group = NULL;
+ }
+
gtkaspell->sug_menu = menu;
g_signal_connect(G_OBJECT(menu), "cancel",
G_CALLBACK(cancel_menu_cb), gtkaspell);
+ utf8buf = conv_codeset_strdup((unsigned char*)l->data,
+ conv_get_locale_charset_str(),
+ CS_UTF_8);
caption = g_strdup_printf(_("\"%s\" unknown in %s"),
- (unsigned char*) l->data,
+ utf8buf,
gtkaspell->gtkaspeller->dictionary->dictname);
item = gtk_menu_item_new_with_label(caption);
+ g_free(utf8buf);
gtk_widget_show(item);
gtk_menu_append(GTK_MENU(menu), item);
gtk_misc_set_alignment(GTK_MISC(GTK_BIN(item)->child), 0.5, 0.5);
G_CALLBACK(add_word_to_session_cb),
gtkaspell);
gtk_widget_add_accelerator(item, "activate", accel, GDK_space,
- GDK_MOD1_MASK,
+ GDK_CONTROL_MASK,
GTK_ACCEL_LOCKED | GTK_ACCEL_VISIBLE);
item = gtk_menu_item_new_with_label(_("Add to personal dictionary"));
G_CALLBACK(add_word_to_personal_cb),
gtkaspell);
gtk_widget_add_accelerator(item, "activate", accel, GDK_Return,
- GDK_MOD1_MASK,
+ GDK_CONTROL_MASK,
GTK_ACCEL_LOCKED | GTK_ACCEL_VISIBLE);
item = gtk_menu_item_new_with_label(_("Replace with..."));
gtkaspell);
gtk_widget_add_accelerator(item, "activate", accel, GDK_R, 0,
GTK_ACCEL_LOCKED | GTK_ACCEL_VISIBLE);
+ gtk_widget_add_accelerator(item, "activate", accel, GDK_R,
+ GDK_CONTROL_MASK,
+ GTK_ACCEL_LOCKED);
if (gtkaspell->use_alternate && gtkaspell->alternate_speller) {
caption = g_strdup_printf(_("Check with %s"),
gtkaspell);
gtk_widget_add_accelerator(item, "activate", accel, GDK_X, 0,
GTK_ACCEL_LOCKED | GTK_ACCEL_VISIBLE);
+ gtk_widget_add_accelerator(item, "activate", accel, GDK_X,
+ GDK_CONTROL_MASK,
+ GTK_ACCEL_LOCKED);
}
item = gtk_menu_item_new();
}
utf8buf = conv_codeset_strdup((unsigned char*)l->data,
- conv_get_current_charset_str(),
+ conv_get_locale_charset_str(),
CS_UTF_8);
item = gtk_menu_item_new_with_label(utf8buf);
+ g_free(utf8buf);
gtk_widget_show(item);
gtk_menu_append(GTK_MENU(curmenu), item);
g_signal_connect(G_OBJECT(item), "activate",
gtk_widget_add_accelerator(item, "activate",
accel,
GDK_A + count,
- GDK_MOD1_MASK,
+ GDK_CONTROL_MASK,
GTK_ACCEL_LOCKED);
}
} while ((l = l->next) != NULL);
}
-#ifndef _MSC_VER
-#warning GTK2 set accelerators for speller popup
-#endif
-/* XXX:GTK2 */
-#if 0
- gtk_accel_group_attach(accel, G_OBJECT(menu));
- gtk_accel_group_unref(accel);
-#endif
+ gtk_window_add_accel_group
+ (GTK_WINDOW(gtkaspell->parent_window),
+ accel);
+ gtkaspell->accel_group = accel;
+
+ g_signal_connect(G_OBJECT(menu),
+ "key_press_event",
+ G_CALLBACK(aspell_key_pressed), gtkaspell);
return GTK_MENU(menu);
}
dict == gtkaspell->alternate_speller->dictionary) {
use_alternate_dict(gtkaspell);
dictionary_delete(dict);
+ gtkaspell->alternate_speller->dictionary = NULL;
return TRUE;
}
message = g_strdup_printf(_("The spell checker could not change dictionary.\n%s"),
gtkaspellcheckers->error_message);
- gtkaspell_alert_dialog(message);
+ alertpanel_warning(message);
g_free(message);
} else {
if (gtkaspell->use_alternate) {
list = list->next)
g_free(list->data);
- g_list_free(list);
+ g_list_free(gtkaspell->suggestions_list);
gtkaspell->max_sug = -1;
gtkaspell->suggestions_list = NULL;
return 1;
}
-
-static void gtkaspell_alert_dialog(gchar *message)
-{
- GtkWidget *dialog;
- GtkWidget *hbox;
- GtkWidget *label;
- GtkWidget *ok_button;
-
- dialog = gtk_dialog_new();
- gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
- gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE);
- g_signal_connect_swapped(G_OBJECT(dialog), "destroy",
- G_CALLBACK(gtk_widget_destroy),
- G_OBJECT(dialog));
-
- label = gtk_label_new(message);
- gtk_misc_set_padding(GTK_MISC(label), 8, 8);
-
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label);
-
- hbox = gtk_hbox_new(FALSE, 0);
-
- ok_button = gtk_button_new_with_label(_("OK"));
- GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
- gtk_box_pack_start(GTK_BOX(hbox), ok_button, TRUE, TRUE, 8);
-
- g_signal_connect_swapped(G_OBJECT(ok_button), "clicked",
- G_CALLBACK(gtk_widget_destroy),
- G_OBJECT(dialog));
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), hbox);
-
- gtk_widget_grab_default(ok_button);
- gtk_widget_grab_focus(ok_button);
- gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-
- gtk_widget_show_all(dialog);
-}
#endif