From e106c45fdb54f0a2f2e3a72cde88c464e565e9e3 Mon Sep 17 00:00:00 2001 From: mjwybrow Date: Tue, 7 Jul 2009 06:00:38 +0000 Subject: - Fix bug #396322: "Spell checker crashes the OS X package" - Include the aspell dictionary files in the app bundle. - Show an error if at least the en dictionary files are not available. - Replace the GtkOptionMenu (for selecting which dictionary to add extra words to) with a GtkComboBox since this one behaves correctly when it is insensitive. GtkOptionMenu is deprecated and the menu would appear when clicking on the insensitive widget and then could not be closed. (bzr r8224) --- packaging/macosx/Resources/bin/inkscape | 1 + packaging/macosx/osx-app.sh | 21 ++++++++++++++++--- src/dialogs/spellcheck.cpp | 36 ++++++++++++--------------------- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/packaging/macosx/Resources/bin/inkscape b/packaging/macosx/Resources/bin/inkscape index 480414c41..2aa2e723b 100755 --- a/packaging/macosx/Resources/bin/inkscape +++ b/packaging/macosx/Resources/bin/inkscape @@ -41,6 +41,7 @@ export GTK_EXE_PREFIX="$TOP" export GNOME_VFS_MODULE_CONFIG_PATH="$TOP/etc/gnome-vfs-2.0/modules" export GNOME_VFS_MODULE_PATH="$TOP/lib/gnome-vfs-2.0/modules" export XDG_DATA_DIRS="$TOP/share" +export ASPELL_CONF="prefix $TOP;" export INKSCAPE_SHAREDIR="$TOP" # TODO: move the share directory to a its own folder to make things a bit cleaner in the app bundle diff --git a/packaging/macosx/osx-app.sh b/packaging/macosx/osx-app.sh index 9c157b522..f28b9c4bf 100755 --- a/packaging/macosx/osx-app.sh +++ b/packaging/macosx/osx-app.sh @@ -126,6 +126,17 @@ if [ ! -e "$LIBPREFIX/share/themes/Clearlooks-Quicksilver" ]; then exit 1 fi +if [ ! -e "$LIBPREFIX/lib/gnome-vfs-2.0" ]; then + echo "Missing gnome-vfs -- please install gnome-vfs and try again." >&2 + exit 1 +fi + +if [ ! -e "$LIBPREFIX/lib/aspell-0.60/en.dat" ]; then + echo "Missing aspell en dictionary -- please install at least 'aspell-dict-en', but" >&2 + echo "preferably all dictionaries ('aspell-dict-*') and try again." >&2 + exit 1 +fi + if [ ! -f "$binary" ]; then echo "Need Inkscape binary" >&2 exit 1 @@ -224,16 +235,16 @@ cp -v "$binary" "$binpath" # TODO Add a "$verbose" variable and command line switch, which sets wether these commands are verbose or not # Share files -rsync -av "$binary_dir/../share/$binary_name"/* "$package/Contents/Resources/" +rsync -av "$binary_dir/../share/$binary_name"/* "$pkgresources/" cp "$plist" "$package/Contents/Info.plist" -rsync -av "$binary_dir/../share/locale"/* "$package/Contents/Resources/locale" +rsync -av "$binary_dir/../share/locale"/* "$pkgresources/locale" # Copy GTK shared mime information mkdir -p "$pkgresources/share" cp -rp "$LIBPREFIX/share/mime" "$pkgresources/share/" # Icons and the rest of the script framework -rsync -av --exclude ".svn" "$resdir"/Resources/* "$package"/Contents/Resources/ +rsync -av --exclude ".svn" "$resdir"/Resources/* "$pkgresources/" # Add python modules if requested if [ ${add_python} = "true" ]; then @@ -283,6 +294,10 @@ cp -r $LIBPREFIX/lib/gtk-2.0/$gtk_version/* $pkglib/gtk-2.0/$gtk_version/ mkdir -p $pkglib/gnome-vfs-2.0/modules cp $LIBPREFIX/lib/gnome-vfs-2.0/modules/*.so $pkglib/gnome-vfs-2.0/modules/ +# Copy aspell dictionary files: +cp -r "$LIBPREFIX/lib/aspell-0.60" "$pkglib/" +cp -r "$LIBPREFIX/share/aspell" "$pkgresources/share/" + # Find out libs we need from fink, darwinports, or from a custom install # (i.e. $LIBPREFIX), then loop until no changes. a=1 diff --git a/src/dialogs/spellcheck.cpp b/src/dialogs/spellcheck.cpp index a617aebf2..1645218c6 100644 --- a/src/dialogs/spellcheck.cpp +++ b/src/dialogs/spellcheck.cpp @@ -812,19 +812,18 @@ void sp_spellcheck_add (GObject */*obj*/, GObject */*dlg*/) { _adds++; - GtkMenu *m = - GTK_MENU(gtk_object_get_data (GTK_OBJECT (dlg), "addto_langs")); - GtkWidget *mi = gtk_menu_get_active (m); - unsigned int num = GPOINTER_TO_UINT(gtk_object_get_data (GTK_OBJECT (mi), "number")); + GtkComboBox *cbox = + GTK_COMBO_BOX(gtk_object_get_data (GTK_OBJECT (dlg), "addto_langs")); + gint num = gtk_combo_box_get_active(cbox); switch (num) { - case 1: + case 0: aspell_speller_add_to_personal(_speller, _word.c_str(), -1); break; - case 2: + case 1: if (_speller2) aspell_speller_add_to_personal(_speller2, _word.c_str(), -1); break; - case 3: + case 2: if (_speller3) aspell_speller_add_to_personal(_speller3, _word.c_str(), -1); break; @@ -978,27 +977,18 @@ sp_spellcheck_dialog (void) GtkWidget *hb = gtk_hbox_new (FALSE, 0); sp_spellcheck_new_button (dlg, hb, _("A_dd to dictionary:"), tt, _("Add this word to the chosen dictionary"), sp_spellcheck_add, "b_add"); - GtkWidget *cbox = gtk_menu_new (); - { - GtkWidget *mi = gtk_menu_item_new_with_label(_lang); - g_object_set_data (G_OBJECT (mi), "number", GUINT_TO_POINTER (1)); - gtk_menu_append (GTK_MENU (cbox), mi); - } + GtkComboBox *cbox = GTK_COMBO_BOX (gtk_combo_box_new_text()); + gtk_combo_box_append_text (cbox, _lang); if (_lang2) { - GtkWidget *mi = gtk_menu_item_new_with_label(_lang2); - g_object_set_data (G_OBJECT (mi), "number", GUINT_TO_POINTER (2)); - gtk_menu_append (GTK_MENU (cbox), mi); + gtk_combo_box_append_text (cbox, _lang2); } if (_lang3) { - GtkWidget *mi = gtk_menu_item_new_with_label(_lang3); - g_object_set_data (G_OBJECT (mi), "number", GUINT_TO_POINTER (3)); - gtk_menu_append (GTK_MENU (cbox), mi); + gtk_combo_box_append_text (cbox, _lang3); } - gtk_widget_show_all (cbox); - GtkWidget *mnu = gtk_option_menu_new(); - gtk_option_menu_set_menu(GTK_OPTION_MENU(mnu), cbox); + gtk_combo_box_set_active (cbox, 0); + gtk_widget_show_all (GTK_WIDGET(cbox)); g_object_set_data (G_OBJECT (dlg), "addto_langs", cbox); - gtk_box_pack_start (GTK_BOX (hb), mnu, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hb), GTK_WIDGET(cbox), TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); } -- cgit v1.2.3