WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
proposed patch V
bug_44114.patch (text/plain), 20.08 KB, created by
Dawit A.
on 2011-08-05 11:18:42 PDT
(
hide
)
Description:
proposed patch V
Filename:
MIME Type:
Creator:
Dawit A.
Created:
2011-08-05 11:18:42 PDT
Size:
20.08 KB
patch
obsolete
>diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index ff78d94..b5dca77 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,16 @@ >+2011-08-05 Lindsay Mathieson <lindsay.mathieson@gmail.com> and Dawit Alemayehu <adawit@kde.org> >+ >+ [Qt] Missing spell check support >+ https://bugs.webkit.org/show_bug.cgi?id=44114 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Implement spell check support in QtWebKit. >+ >+ * platform/graphics/qt/GraphicsContextQt.cpp: >+ (WebCore::drawErrorUnderline): >+ (WebCore::GraphicsContext::drawLineForTextChecking): >+ > 2011-08-03 Sailesh Agrawal <sail@chromium.org> > > Chromium Mac: Make ScrollbarOverlayUtilitiesChromiumMac.h c++ compatible >diff --git a/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp >index 10de967..d0fa4ce 100644 >--- a/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp >+++ b/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp >@@ -900,12 +900,106 @@ void GraphicsContext::drawLineForText(const FloatPoint& origin, float width, boo > drawLine(IntPoint(startPoint.x(), startPoint.y()), IntPoint(endPoint.x(), endPoint.y())); > } > >-void GraphicsContext::drawLineForTextChecking(const FloatPoint&, float, TextCheckingLineStyle) >+ >+/* >+ * NOTE: This code is completely based upon the one from >+ * Source/WebCore/platform/graphics/cairo/DrawErrorUnderline.{h|cpp} >+ * >+ * Draws an error underline that looks like one of: >+ * >+ * H E H >+ * /\ /\ /\ /\ /\ - >+ * A/ \ / \ / \ A/ \ / \ | >+ * \ \ / \ / /D \ \ / \ | >+ * \ \/ C \/ / \ \/ C \ | height = heightSquares * square >+ * \ /\ F / \ F /\ \ | >+ * \ / \ / \ / \ \G | >+ * \ / \ / \ / \ / | >+ * \/ \/ \/ \/ - >+ * B B >+ * |---| >+ * unitWidth = (heightSquares - 1) * square >+ * >+ * The x, y, width, height passed in give the desired bounding box; >+ * x/width are adjusted to make the underline a integer number of units wide. >+*/ >+static void drawErrorUnderline(QPainter *painter, qreal x, qreal y, qreal width, qreal height) >+{ >+ const qreal heightSquares = 2.5; >+ >+ qreal square = height / heightSquares; >+ qreal halfSquare = 0.5 * square; >+ >+ qreal unitWidth = (heightSquares - 1.0) * square; >+ int widthUnits = static_cast<int>((width + 0.5 * unitWidth) / unitWidth); >+ >+ x += 0.5 * (width - widthUnits * unitWidth); >+ width = widthUnits * unitWidth; >+ >+ qreal bottom = y + height; >+ qreal top = y; >+ >+ QPainterPath path; >+ // Bottom of squiggle >+ path.moveTo(x - halfSquare, top + halfSquare); // A >+ >+ int i = 0; >+ for (i = 0; i < widthUnits; i += 2) { >+ qreal middle = x + (i + 1) * unitWidth; >+ qreal right = x + (i + 2) * unitWidth; >+ >+ path.lineTo(middle, bottom); // B >+ >+ if (i + 2 == widthUnits) >+ path.lineTo(right + halfSquare, top + halfSquare); // D >+ else if (i + 1 != widthUnits) >+ path.lineTo(right, top + square); // C >+ } >+ >+ // Top of squiggle >+ for (i -= 2; i >= 0; i -= 2) { >+ qreal left = x + i * unitWidth; >+ qreal middle = x + (i + 1) * unitWidth; >+ qreal right = x + (i + 2) * unitWidth; >+ >+ if (i + 1 == widthUnits) >+ path.lineTo(middle + halfSquare, bottom - halfSquare); // G >+ else { >+ if (i + 2 == widthUnits) >+ path.lineTo(right, top); // E >+ >+ path.lineTo(middle, bottom - halfSquare); // F >+ } >+ >+ path.lineTo(left, top); // H >+ } >+ >+ painter->drawPath(path); >+} >+ >+ >+void GraphicsContext::drawLineForTextChecking(const FloatPoint& origin, float width, TextCheckingLineStyle style) > { > if (paintingDisabled()) > return; > >- notImplemented(); >+ QPainter* painter = platformContext(); >+ const QPen originalPen = painter->pen(); >+ >+ switch (style) { >+ case TextCheckingSpellingLineStyle: >+ painter->setPen(Qt::red); >+ break; >+ case TextCheckingGrammarLineStyle: >+ painter->setPen(Qt::green); >+ break; >+ default: >+ painter->setPen(originalPen); >+ return; >+ } >+ >+ drawErrorUnderline(painter, origin.x(), origin.y(), width, cMisspellingLineThickness); >+ painter->setPen(originalPen); > } > > FloatRect GraphicsContext::roundToDevicePixels(const FloatRect& frect, RoundingMode) >diff --git a/Source/WebKit/qt/Api/qwebkitplatformplugin.h b/Source/WebKit/qt/Api/qwebkitplatformplugin.h >index 1f62804..2861c0b 100644 >--- a/Source/WebKit/qt/Api/qwebkitplatformplugin.h >+++ b/Source/WebKit/qt/Api/qwebkitplatformplugin.h >@@ -21,6 +21,8 @@ > #ifndef QWEBKITPLATFORMPLUGIN_H > #define QWEBKITPLATFORMPLUGIN_H > >+#include "qwebkitglobal.h" >+ > /* > * Warning: The contents of this file is not part of the public QtWebKit API > * and may be changed from version to version or even be completely removed. >@@ -134,6 +136,21 @@ public Q_SLOTS: > }; > #endif > >+class QWEBKIT_EXPORT QWebSpellChecker : public QObject { >+ Q_OBJECT >+public: >+ virtual ~QWebSpellChecker() { } >+ >+ virtual bool isContinousSpellCheckingEnabled() const = 0; >+ virtual void toggleContinousSpellChecking() = 0; >+ >+ virtual void learnWord(const QString& word) = 0; >+ virtual void ignoreWordInSpellDocument(const QString& word) = 0; >+ virtual void checkSpellingOfString(const QString& word, int* misspellingLocation, int* misspellingLength) = 0; >+ virtual QString autoCorrectSuggestionForMisspelledWord(const QString& word) = 0; >+ virtual void guessesForWord(const QString& word, const QString& context, QStringList& guesses) = 0; >+}; >+ > class QWebKitPlatformPlugin { > public: > virtual ~QWebKitPlatformPlugin() {} >@@ -143,7 +160,8 @@ public: > Notifications, > Haptics, > TouchInteraction, >- FullScreenVideoPlayer >+ FullScreenVideoPlayer, >+ SpellChecker > }; > > virtual bool supportsExtension(Extension) const = 0; >diff --git a/Source/WebKit/qt/ChangeLog b/Source/WebKit/qt/ChangeLog >index dbab857..3a8b67d 100644 >--- a/Source/WebKit/qt/ChangeLog >+++ b/Source/WebKit/qt/ChangeLog >@@ -1,3 +1,23 @@ >+2011-08-05 Lindsay Mathieson <lindsay.mathieson@gmail.com> and Dawit Alemayehu <adawit@kde.org> >+ >+ [Qt] Missing spell check support >+ https://bugs.webkit.org/show_bug.cgi?id=44114 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Implement spell check support in QtWebKit. >+ >+ * Api/qwebkitplatformplugin.h: >+ * QtWebKit.pro: >+ * WebCoreSupport/EditorClientQt.cpp: >+ (WebCore::EditorClientQt::isContinuousSpellCheckingEnabled): >+ (WebCore::EditorClientQt::toggleContinuousSpellChecking): >+ * WebCoreSupport/EditorClientQt.h: >+ (WebCore::EditorClientQt::textChecker): >+ * WebCoreSupport/QtPlatformPlugin.cpp: >+ (WebCore::QtPlatformPlugin::createSpellChecker): >+ * WebCoreSupport/QtPlatformPlugin.h: >+ > 2011-08-03 Pavel Feldman <pfeldman@google.com> > > Web Inspector: [Timeline] Hover on paint events and see rect outline around that area. >diff --git a/Source/WebKit/qt/QtWebKit.pro b/Source/WebKit/qt/QtWebKit.pro >index 3c58089..313670b 100644 >--- a/Source/WebKit/qt/QtWebKit.pro >+++ b/Source/WebKit/qt/QtWebKit.pro >@@ -194,6 +194,7 @@ SOURCES += \ > $$PWD/WebCoreSupport/PopupMenuQt.cpp \ > $$PWD/WebCoreSupport/QtPlatformPlugin.cpp \ > $$PWD/WebCoreSupport/SearchPopupMenuQt.cpp \ >+ $$PWD/WebCoreSupport/TextCheckerClientQt.cpp \ > $$PWD/WebCoreSupport/WebPlatformStrategies.cpp > > HEADERS += \ >diff --git a/Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp >index 73210f0..5b0ac9a 100644 >--- a/Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp >+++ b/Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp >@@ -56,7 +56,6 @@ > #include <stdio.h> > #include <wtf/OwnPtr.h> > >-#define methodDebug() qDebug("EditorClientQt: %s", __FUNCTION__); > > static QString dumpPath(WebCore::Node *node) > { >@@ -109,7 +108,7 @@ bool EditorClientQt::shouldShowDeleteInterface(HTMLElement* element) > > bool EditorClientQt::isContinuousSpellCheckingEnabled() > { >- return false; >+ return m_textCheckerClient.isContinousSpellCheckingEnabled(); > } > > bool EditorClientQt::isGrammarCheckingEnabled() >@@ -344,7 +343,7 @@ bool EditorClientQt::isSelectTrailingWhitespaceEnabled() > > void EditorClientQt::toggleContinuousSpellChecking() > { >- notImplemented(); >+ return m_textCheckerClient.toggleContinousSpellChecking(); > } > > void EditorClientQt::toggleGrammarChecking() >@@ -567,32 +566,6 @@ void EditorClientQt::textDidChangeInTextArea(Element*) > { > } > >-void EditorClientQt::ignoreWordInSpellDocument(const String&) >-{ >- notImplemented(); >-} >- >-void EditorClientQt::learnWord(const String&) >-{ >- notImplemented(); >-} >- >-void EditorClientQt::checkSpellingOfString(const UChar*, int, int*, int*) >-{ >- notImplemented(); >-} >- >-String EditorClientQt::getAutoCorrectSuggestionForMisspelledWord(const String&) >-{ >- notImplemented(); >- return String(); >-} >- >-void EditorClientQt::checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) >-{ >- notImplemented(); >-} >- > void EditorClientQt::updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) > { > notImplemented(); >@@ -614,11 +587,6 @@ bool EditorClientQt::spellingUIIsShowing() > return false; > } > >-void EditorClientQt::getGuessesForWord(const String& word, const String& context, Vector<String>& guesses) >-{ >- notImplemented(); >-} >- > bool EditorClientQt::isEditing() const > { > return m_editing; >diff --git a/Source/WebKit/qt/WebCoreSupport/EditorClientQt.h b/Source/WebKit/qt/WebCoreSupport/EditorClientQt.h >index eccb75d..d9658bb 100644 >--- a/Source/WebKit/qt/WebCoreSupport/EditorClientQt.h >+++ b/Source/WebKit/qt/WebCoreSupport/EditorClientQt.h >@@ -31,16 +31,15 @@ > #define EditorClientQt_h > > #include "EditorClient.h" >-#include "TextCheckerClient.h" > #include "RefCounted.h" >- >+#include "TextCheckerClientQt.h" > #include <wtf/Forward.h> > > class QWebPage; > > namespace WebCore { > >-class EditorClientQt : public EditorClient, public TextCheckerClient { >+class EditorClientQt : public EditorClient { > public: > EditorClientQt(QWebPage* page); > >@@ -97,20 +96,13 @@ public: > virtual void textWillBeDeletedInTextField(Element*); > virtual void textDidChangeInTextArea(Element*); > >- virtual void ignoreWordInSpellDocument(const String&); >- virtual void learnWord(const String&); >- virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength); >- virtual String getAutoCorrectSuggestionForMisspelledWord(const String& misspelledWord); >- virtual void checkGrammarOfString(const UChar*, int length, Vector<GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength); > virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&); > virtual void updateSpellingUIWithMisspelledWord(const String&); > virtual void showSpellingUI(bool show); > virtual bool spellingUIIsShowing(); >- virtual void getGuessesForWord(const String& word, const String& context, Vector<String>& guesses); > virtual void willSetInputMethodState(); > virtual void setInputMethodState(bool enabled); >- virtual void requestCheckingOfString(SpellChecker*, int, WebCore::TextCheckingTypeMask, const String&) {} >- virtual TextCheckerClient* textChecker() { return this; } >+ virtual TextCheckerClient* textChecker() { return &m_textCheckerClient; } > > bool isEditing() const; > >@@ -118,6 +110,7 @@ public: > static bool acceptsEditing; > > private: >+ TextCheckerClientQt m_textCheckerClient; > QWebPage* m_page; > bool m_editing; > bool m_inUndoRedo; // our undo stack works differently - don't re-enter! >diff --git a/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.cpp b/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.cpp >index 2e44c66..ab65b36 100644 >--- a/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.cpp >+++ b/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.cpp >@@ -134,4 +134,10 @@ PassOwnPtr<QWebFullScreenVideoHandler> QtPlatformPlugin::createFullScreenVideoHa > } > #endif > >+QWebSpellChecker* QtPlatformPlugin::createSpellChecker() >+{ >+ QWebKitPlatformPlugin* p = plugin(); >+ return p ? static_cast<QWebSpellChecker*>(p->createExtension(QWebKitPlatformPlugin::SpellChecker)) : 0; >+} >+ > } >diff --git a/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.h b/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.h >index 316b8e8..8479361 100644 >--- a/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.h >+++ b/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.h >@@ -33,6 +33,7 @@ class QWebTouchModifier; > #if ENABLE(VIDEO) && USE(QT_MULTIMEDIA) > class QWebFullScreenVideoHandler; > #endif >+class QWebSpellChecker; > > namespace WebCore { > >@@ -53,6 +54,7 @@ public: > #if ENABLE(VIDEO) && USE(QT_MULTIMEDIA) > PassOwnPtr<QWebFullScreenVideoHandler> createFullScreenVideoHandler(); > #endif >+ QWebSpellChecker* createSpellChecker(); > > QWebKitPlatformPlugin* plugin(); > >diff --git a/Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.cpp >new file mode 100644 >index 0000000..d898fae >--- /dev/null >+++ b/Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.cpp >@@ -0,0 +1,123 @@ >+/* >+ * Copyright (C) 2011 Lindsay Mathieson <lindsay.mathieson@gmail.com> >+ * Copyright (C) 2011 Dawit Alemayehu <adawit@kde.org> >+ * >+ * All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY >+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR >+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "TextCheckerClientQt.h" >+ >+#include "NotImplemented.h" >+#include "QtPlatformPlugin.h" >+#include "qwebkitplatformplugin.h" >+ >+#include <QStringList> >+#include <wtf/OwnPtr.h> >+#include <wtf/PassOwnPtr.h> >+#include <wtf/text/WTFString.h> >+ >+ >+namespace WebCore { >+ >+TextCheckerClientQt::~TextCheckerClientQt() >+{ >+ m_spellChecker = nullptr; >+} >+ >+void TextCheckerClientQt::ignoreWordInSpellDocument(const String& word) >+{ >+ if (!loadSpellChecker()) >+ return; >+ >+ m_spellChecker->ignoreWordInSpellDocument(word); >+} >+ >+void TextCheckerClientQt::learnWord(const String& word) >+{ >+ if (!loadSpellChecker()) >+ return; >+ >+ m_spellChecker->learnWord(word); >+} >+ >+void TextCheckerClientQt::checkSpellingOfString(const UChar* buffer, int length, int* misspellingLocation, int* misspellingLength) >+{ >+ if (!loadSpellChecker()) >+ return; >+ >+ const QString text = QString::fromRawData(reinterpret_cast<const QChar*>(buffer), length); >+ m_spellChecker->checkSpellingOfString(text, misspellingLocation, misspellingLength); >+} >+ >+String TextCheckerClientQt::getAutoCorrectSuggestionForMisspelledWord(const String& misspelledWord) >+{ >+ notImplemented(); >+ return String(); >+} >+ >+void TextCheckerClientQt::checkGrammarOfString(const UChar*, int length, Vector<GrammarDetail>&, int*, int*) >+{ >+ notImplemented(); >+} >+ >+void TextCheckerClientQt::getGuessesForWord(const String& word, const String& context, Vector<String>& guesses) >+{ >+ if (!loadSpellChecker()) >+ return; >+ >+ QStringList guessesList; >+ m_spellChecker->guessesForWord(word, context, guessesList); >+ for (int i = 0, count = guessesList.count(); i < count; ++i) >+ guesses.append(guessesList.at(i)); >+} >+ >+bool TextCheckerClientQt::isContinousSpellCheckingEnabled() >+{ >+ if (!loadSpellChecker()) >+ return false; >+ >+ return m_spellChecker->isContinousSpellCheckingEnabled(); >+} >+ >+void TextCheckerClientQt::toggleContinousSpellChecking() >+{ >+ if (!loadSpellChecker()) >+ return; >+ >+ m_spellChecker->toggleContinousSpellChecking(); >+} >+ >+bool TextCheckerClientQt::loadSpellChecker() >+{ >+ if (m_spellChecker) >+ return true; >+ >+ QtPlatformPlugin platformPlugin; >+ m_spellChecker = adoptPtr(platformPlugin.createSpellChecker()); >+ >+ return (m_spellChecker ? true : false); >+} >+ >+} >diff --git a/Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.h b/Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.h >new file mode 100644 >index 0000000..c7452be >--- /dev/null >+++ b/Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.h >@@ -0,0 +1,66 @@ >+/* >+ * Copyright (C) 2011 Lindsay Mathieson <lindsay.mathieson@gmail.com> >+ * Copyright (C) 2011 Dawit Alemayehu <adawit@kde.org> >+ * >+ * All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY >+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR >+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#ifndef TextCheckerClientQt_h >+#define TextCheckerClientQt_h >+ >+#include "TextCheckerClient.h" >+#include "qwebkitplatformplugin.h" >+ >+#include <wtf/Forward.h> >+ >+class QWebSpellChecker; >+ >+namespace WebCore { >+ >+class TextCheckerClientQt : public TextCheckerClient { >+public: >+ virtual ~TextCheckerClientQt(); >+ >+ virtual void ignoreWordInSpellDocument(const String&); >+ virtual void learnWord(const String&); >+ virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength); >+ virtual String getAutoCorrectSuggestionForMisspelledWord(const String& misspelledWord); >+ virtual void checkGrammarOfString(const UChar*, int length, Vector<GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength); >+ virtual void getGuessesForWord(const String& word, const String& context, Vector<String>& guesses); >+ virtual void requestCheckingOfString(SpellChecker*, int, TextCheckingTypeMask, const String&) { } >+ >+ virtual bool isContinousSpellCheckingEnabled(); >+ virtual void toggleContinousSpellChecking(); >+ >+private: >+ bool loadSpellChecker(); >+ >+private: >+ OwnPtr<QWebSpellChecker> m_spellChecker; >+}; >+ >+ >+} >+ >+#endif
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
benjamin
:
review-
benjamin
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 44114
:
102872
|
102875
|
103074
|
103075
| 103087 |
103765
|
103840
|
103842
|
103905
|
103995
|
104623