Commit 6d7b2f0d authored by kov@webkit.org's avatar kov@webkit.org

2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>

        Reviewed by Gustavo Noronha.

        https://bugs.webkit.org/show_bug.cgi?id=15616
        [GTK] Add spell checking

        Add enchant support for spell-checking-languages property to work
        properly.

        * GNUmakefile.am:
        * configure.ac:

WebKit/gtk

2009-04-24  Diego Escalante Urrelo  <diegoe@gnome.org>

        Reviewed by Gustavo Noronha.

        https://bugs.webkit.org/show_bug.cgi?id=15616
        [GTK] Add spell checking

        Add spell-checking-languages property to WebKitWebSettings.

        * webkit/webkitprivate.h:
        * webkit/webkitwebsettings.cpp:
        (_WebKitWebSettingsPrivate::):
        (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
        (_WebKitWebSettingsPrivate::webkit_web_settings_init):
        (_WebKitWebSettingsPrivate::webkit_web_settings_finalize):
        (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
        (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
        (_WebKitWebSettingsPrivate::webkit_web_settings_copy):
        (_WebKitWebSettingsPrivate::webkit_web_settings_get_spell_languages):

git-svn-id: svn://svn.chromium.org/blink/trunk@42818 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 1bf7a34e
2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
Reviewed by Gustavo Noronha.
https://bugs.webkit.org/show_bug.cgi?id=15616
[GTK] Add spell checking
Add enchant support for spell-checking-languages property to work
properly.
* GNUmakefile.am:
* configure.ac:
2009-04-24 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Ariya Hidayat.
......
......@@ -188,6 +188,7 @@ libWebCore_la_CFLAGS = \
$(LIBXSLT_CFLAGS) \
$(COVERAGE_CFLAGS) \
$(HILDON_CFLAGS) \
$(ENCHANT_CFLAGS) \
$(GEOCLUE_CFLAGS)
libWebCore_la_CPPFLAGS = \
......@@ -257,6 +258,7 @@ libwebkit_1_0_la_LDFLAGS = \
libwebkit_1_0_la_LIBADD = \
libWebCore.la \
$(ENCHANT_LIBS) \
$(GNOMEKEYRING_LIBS)
#
......
2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
Reviewed by Gustavo Noronha.
https://bugs.webkit.org/show_bug.cgi?id=15616
[GTK] Add spell checking
Add spell-checking-languages property to WebKitWebSettings.
* webkit/webkitprivate.h:
* webkit/webkitwebsettings.cpp:
(_WebKitWebSettingsPrivate::):
(_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
(_WebKitWebSettingsPrivate::webkit_web_settings_init):
(_WebKitWebSettingsPrivate::webkit_web_settings_finalize):
(_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
(_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
(_WebKitWebSettingsPrivate::webkit_web_settings_copy):
(_WebKitWebSettingsPrivate::webkit_web_settings_get_spell_languages):
2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
Reviewed by Gustavo Noronha.
......
......@@ -38,6 +38,7 @@
#include <webkit/webkitwebbackforwardlist.h>
#include "BackForwardList.h"
#include <enchant.h>
#include "HistoryItem.h"
#include "Settings.h"
#include "Page.h"
......@@ -70,6 +71,11 @@ namespace WebKit {
WebCore::NavigationType core(WebKitWebNavigationReason reason);
}
typedef struct {
EnchantBroker* config;
EnchantDict* speller;
} SpellLanguage;
extern "C" {
void webkit_init();
......@@ -193,6 +199,9 @@ extern "C" {
WEBKIT_API void
webkit_web_settings_add_extra_plugin_directory (WebKitWebView *web_view, const gchar* directory);
GSList*
webkit_web_settings_get_spell_languages(WebKitWebView* web_view);
}
#endif
......@@ -77,6 +77,8 @@ struct _WebKitWebSettingsPrivate {
gboolean enable_developer_extras;
gboolean enable_private_browsing;
gboolean enable_spell_checking;
gchar* spell_checking_languages;
GSList* spell_checking_languages_list;
};
#define WEBKIT_WEB_SETTINGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate))
......@@ -106,7 +108,8 @@ enum {
PROP_ZOOM_STEP,
PROP_ENABLE_DEVELOPER_EXTRAS,
PROP_ENABLE_PRIVATE_BROWSING,
PROP_ENABLE_SPELL_CHECKING
PROP_ENABLE_SPELL_CHECKING,
PROP_SPELL_CHECKING_LANGUAGES
};
static void webkit_web_settings_finalize(GObject* object);
......@@ -377,6 +380,30 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
FALSE,
flags));
/**
* WebKitWebSettings:spell-checking-languages:
*
* The languages to be used for spell checking, separated by commas.
*
* The locale string typically is in the form lang_COUNTRY, where lang
* is an ISO-639 language code, and COUNTRY is an ISO-3166 country code.
* For instance, sv_FI for Swedish as written in Finland or pt_BR
* for Portuguese as written in Brazil.
*
* If no value is specified then the value returned by
* pango_language_get_default will be used.
*
* Since 1.1.6
*/
g_object_class_install_property(gobject_class,
PROP_SPELL_CHECKING_LANGUAGES,
g_param_spec_string(
"spell-checking-languages",
_("Languages to use for spell checking"),
_("Comma separated list of languages to use for spell checking"),
0,
flags));
g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate));
}
......@@ -398,6 +425,9 @@ static void webkit_web_settings_finalize(GObject* object)
g_free(priv->sans_serif_font_family);
g_free(priv->serif_font_family);
g_free(priv->user_stylesheet_uri);
g_free(priv->spell_checking_languages);
g_slist_free(priv->spell_checking_languages_list);
G_OBJECT_CLASS(webkit_web_settings_parent_class)->finalize(object);
}
......@@ -406,6 +436,8 @@ static void webkit_web_settings_set_property(GObject* object, guint prop_id, con
{
WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
WebKitWebSettingsPrivate* priv = web_settings->priv;
SpellLanguage* lang;
GSList* spellLanguages = NULL;
switch(prop_id) {
case PROP_DEFAULT_ENCODING:
......@@ -485,6 +517,32 @@ static void webkit_web_settings_set_property(GObject* object, guint prop_id, con
case PROP_ENABLE_SPELL_CHECKING:
priv->enable_spell_checking = g_value_get_boolean(value);
break;
case PROP_SPELL_CHECKING_LANGUAGES:
priv->spell_checking_languages = g_strdup(g_value_get_string(value));
if (priv->spell_checking_languages) {
char** langs = g_strsplit(priv->spell_checking_languages, ",", -1);
for (int i = 0; langs[i]; i++) {
lang = g_slice_new0(SpellLanguage);
lang->config = enchant_broker_init();
lang->speller = enchant_broker_request_dict(lang->config, langs[i]);
spellLanguages = g_slist_append(spellLanguages, lang);
}
g_strfreev(langs);
} else {
const char* language = pango_language_to_string(gtk_get_default_language());
lang = g_slice_new0(SpellLanguage);
lang->config = enchant_broker_init();
lang->speller = enchant_broker_request_dict(lang->config, language);
spellLanguages = g_slist_append(spellLanguages, lang);
}
g_slist_free(priv->spell_checking_languages_list);
priv->spell_checking_languages_list = spellLanguages;
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
......@@ -566,6 +624,9 @@ static void webkit_web_settings_get_property(GObject* object, guint prop_id, GVa
case PROP_ENABLE_SPELL_CHECKING:
g_value_set_boolean(value, priv->enable_spell_checking);
break;
case PROP_SPELL_CHECKING_LANGUAGES:
g_value_set_string(value, priv->spell_checking_languages);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
......@@ -619,6 +680,8 @@ WebKitWebSettings* webkit_web_settings_copy(WebKitWebSettings* web_settings)
"enable-developer-extras", priv->enable_developer_extras,
"enable-private-browsing", priv->enable_private_browsing,
"enable-spell-checking", priv->enable_spell_checking,
"spell-checking-languages", priv->spell_checking_languages,
"spell-checking-languages-list", priv->spell_checking_languages_list,
NULL));
return copy;
......@@ -640,4 +703,24 @@ void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* webView, cons
PluginDatabase::installedPlugins()->addExtraPluginDirectory(filenameToString(directory));
}
/**
* webkit_web_settings_get_spell_languages:
* @web_view: a #WebKitWebView
*
* Internal use only. Retrieves a GSList of SpellLanguages from the
* #WebKitWebSettings of @web_view.
*
* Since: 1.1.6
*/
GSList* webkit_web_settings_get_spell_languages(WebKitWebView *web_view)
{
g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(web_view), 0);
WebKitWebSettings* settings = webkit_web_view_get_settings(web_view);
WebKitWebSettingsPrivate* priv = settings->priv;
GSList* list = priv->spell_checking_languages_list;
return list;
}
}
......@@ -191,6 +191,7 @@ LIBXSLT_REQUIRED_VERSION=1.1.7
SQLITE_REQUIRED_VERSION=3.0
GSTREAMER_REQUIRED_VERSION=0.10
GNOME_KEYRING_REQUIRED_VERSION=2.26.0
ENCHANT_REQUIRED_VERSION=0.22
# Available modules
#
......@@ -223,6 +224,7 @@ if test "$with_target" = "directfb"; then
else
PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_REQUIRED_VERSION)
PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $GTK_REQUIRED_VERSION)
PKG_CHECK_MODULES(ENCHANT, enchant >= $ENCHANT_REQUIRED_VERSION)
if test "$with_target" = "x11" && test "$os_win32" = "no"; then
# check for XT
......@@ -249,6 +251,8 @@ AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
AC_SUBST(CAIRO_CFLAGS)
AC_SUBST(CAIRO_LIBS)
AC_SUBST(ENCHANT_CFLAGS)
AC_SUBST(ENCHANT_LIBS)
# check whether to build with debugging enabled
AC_MSG_CHECKING([whether to do a debug build])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment