rpms/gtkhtml3/devel gtkhtml-3.23.4-dictionaries-on-demand.patch, NONE, 1.1 gtkhtml3.spec, 1.124, 1.125

Matthew Barnes (mbarnes) fedora-extras-commits at redhat.com
Thu Jul 10 13:26:41 UTC 2008


Author: mbarnes

Update of /cvs/pkgs/rpms/gtkhtml3/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv13796

Modified Files:
	gtkhtml3.spec 
Added Files:
	gtkhtml-3.23.4-dictionaries-on-demand.patch 
Log Message:

* Thu Jul 10 2008 Matthew Barnes <mbarnes at redhat.com> - 3.23.4-2.fc10
- Add patch for GNOME bug #538703 (load dictionaries on-demand).


gtkhtml-3.23.4-dictionaries-on-demand.patch:

--- NEW FILE gtkhtml-3.23.4-dictionaries-on-demand.patch ---
diff -up gtkhtml-3.23.4/components/editor/gtkhtml-spell-checker.c.dictionaries-on-demand gtkhtml-3.23.4/components/editor/gtkhtml-spell-checker.c
--- gtkhtml-3.23.4/components/editor/gtkhtml-spell-checker.c.dictionaries-on-demand	2008-06-15 23:19:52.000000000 -0400
+++ gtkhtml-3.23.4/components/editor/gtkhtml-spell-checker.c	2008-07-10 09:17:53.000000000 -0400
@@ -80,6 +80,37 @@ spell_checker_is_digit (const gchar *tex
 	return TRUE;
 }
 
+static EnchantDict *
+spell_checker_request_dict (GtkhtmlSpellChecker *checker)
+{
+	GtkhtmlSpellCheckerPrivate *priv;
+	const gchar *code;
+
+	/* Loading a dictionary is time-consuming, so delay it until we
+	 * really need it.  The assumption being that the dictionary
+	 * for a particular GtkhtmlSpellChecker instance will only
+	 * occasionally be needed.  That way we can create as many
+	 * instances as we want without a huge performance penalty. */
+
+	priv = checker->priv;
+
+	if (priv->dict != NULL)
+		return priv->dict;
+
+	if (priv->language == NULL)
+		return NULL;
+
+	code = gtkhtml_spell_language_get_code (priv->language);
+	priv->dict = enchant_broker_request_dict (priv->broker, code);
+
+	if (priv->dict == NULL) {
+		priv->language = NULL;
+		g_warning ("Cannot load the dictionary for %s", code);
+	}
+
+	return priv->dict;
+}
+
 static GObject *
 spell_checker_constructor (GType type,
                            guint n_construct_properties,
@@ -266,7 +297,7 @@ gtkhtml_spell_checker_check_word (Gtkhtm
 	g_return_val_if_fail (GTKHTML_IS_SPELL_CHECKER (checker), FALSE);
 	g_return_val_if_fail (word != NULL, FALSE);
 
-	if ((dict = checker->priv->dict) == NULL)
+	if ((dict = spell_checker_request_dict (checker)) == NULL)
 		return FALSE;
 
 	if (length < 0)
@@ -297,7 +328,7 @@ gtkhtml_spell_checker_get_suggestions (G
 
 	g_return_val_if_fail (GTKHTML_IS_SPELL_CHECKER (checker), NULL);
 
-	if ((dict = checker->priv->dict) == NULL)
+	if ((dict = spell_checker_request_dict (checker)) == NULL)
 		return NULL;
 
 	suggestions = enchant_dict_suggest (
@@ -322,7 +353,7 @@ gtkhtml_spell_checker_store_replacement 
 
 	g_return_if_fail (GTKHTML_IS_SPELL_CHECKER (checker));
 
-	if ((dict = checker->priv->dict) != NULL)
+	if ((dict = spell_checker_request_dict (checker)) == NULL)
 		return;
 
 	enchant_dict_store_replacement (
@@ -338,7 +369,7 @@ gtkhtml_spell_checker_add_word (GtkhtmlS
 
 	g_return_if_fail (GTKHTML_IS_SPELL_CHECKER (checker));
 
-	if ((dict = checker->priv->dict) == NULL)
+	if ((dict = spell_checker_request_dict (checker)) == NULL)
 		return;
 
 	enchant_dict_add_to_pwl (dict, word, length);
@@ -354,7 +385,7 @@ gtkhtml_spell_checker_add_word_to_sessio
 
 	g_return_if_fail (GTKHTML_IS_SPELL_CHECKER (checker));
 
-	if ((dict = checker->priv->dict) == NULL)
+	if ((dict = spell_checker_request_dict (checker)) == NULL)
 		return;
 
 	enchant_dict_add_to_session (dict, word, length);
@@ -378,18 +409,6 @@ gtkhtml_spell_checker_clear_session (Gtk
 	if (priv->language == NULL)
 		priv->language = gtkhtml_spell_language_lookup (NULL);
 
-	if (priv->language != NULL) {
-		const gchar *code;
-
-		code = gtkhtml_spell_language_get_code (priv->language);
-		priv->dict = enchant_broker_request_dict (priv->broker, code);
-	}
-
-	if (priv->dict == NULL) {
-		priv->language = NULL;
-		g_warning ("Cannot load the dictionary");
-	}
-
 	g_signal_emit (G_OBJECT (checker), signals[SESSION_CLEARED], 0);
 }
 


Index: gtkhtml3.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gtkhtml3/devel/gtkhtml3.spec,v
retrieving revision 1.124
retrieving revision 1.125
diff -u -r1.124 -r1.125
--- gtkhtml3.spec	16 Jun 2008 17:41:46 -0000	1.124
+++ gtkhtml3.spec	10 Jul 2008 13:25:43 -0000	1.125
@@ -10,7 +10,7 @@
 
 Name: gtkhtml3
 Version: 3.23.4
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: LGPL/GPL
 Group: System Environment/Libraries
 Summary: gtkhtml library
@@ -22,6 +22,9 @@
 # Remove gnome-common macros from configure.in.
 Patch1: gtkhtml-3.13.1-no-gnome-common.patch
 
+# GNOME bug #538703
+Patch2: gtkhtml-3.23.4-dictionaries-on-demand.patch
+
 ### Dependencies ###
 
 Requires: gnome-icon-theme >= %{gnome_icon_theme_version}
@@ -59,6 +62,7 @@
 %prep
 %setup -q -n gtkhtml-%{version}
 %patch1 -p1 -b .no-gnome-common
+%patch2 -p1 -b .dictionaries-on-demand
 
 %build
 
@@ -122,6 +126,9 @@
 %{_libdir}/pkgconfig/*.pc
 
 %changelog
+* Thu Jul 10 2008 Matthew Barnes <mbarnes at redhat.com> - 3.23.4-2.fc10
+- Add patch for GNOME bug #538703 (load dictionaries on-demand).
+
 * Mon Jun 16 2008 Matthew Barnes <mbarnes at redhat.com> - 3.23.4-1.fc10
 - Update to 3.23.4
 




More information about the scm-commits mailing list