Changeset 75093 in webkit


Ignore:
Timestamp:
Jan 5, 2011 12:19:04 PM (13 years ago)
Author:
andersca@apple.com
Message:

2011-01-05 Anders Carlsson <andersca@apple.com>

Reviewed by Adele Peterson.

Implement word transformation
https://bugs.webkit.org/show_bug.cgi?id=51943

Export Editor functions needed by WebKit2.

  • WebCore.exp.in:

2011-01-05 Anders Carlsson <andersca@apple.com>

Reviewed by Adele Peterson.

Implement word transformation
https://bugs.webkit.org/show_bug.cgi?id=51943

  • UIProcess/API/mac/WKView.mm: (-[WKView validateUserInterfaceItem:]): Handle the word transformation selectors.

(-[WKView uppercaseWord:]):
(-[WKView lowercaseWord:]):
(-[WKView capitalizeWord:]):
Call down to the WebPageProxy.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::uppercaseWord): (WebKit::WebPageProxy::lowercaseWord): (WebKit::WebPageProxy::capitalizeWord): Send messages to the WebPage.
  • WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm: (WebKit::changeWordCase): Add helper function.

(WebKit::WebEditorClient::uppercaseWord):
(WebKit::WebEditorClient::lowercaseWord):
(WebKit::WebEditorClient::capitalizeWord):
Call helper function.

  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::changeSpellingToWord): Call replaceSelectionWithText.

(WebKit::WebPage::uppercaseWord):
(WebKit::WebPage::lowercaseWord):
(WebKit::WebPage::capitalizeWord):
Call the editor functions.

(WebKit::WebPage::replaceSelectionWithText):
New helper function that replaces the selected string with another string.

  • WebProcess/WebPage/WebPage.messages.in: Add new messages.
Location:
trunk/WebKit2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit2/ChangeLog

    r75089 r75093  
     12011-01-05  Anders Carlsson  <andersca@apple.com>
     2
     3        Reviewed by Adele Peterson.
     4
     5        Implement word transformation
     6        https://bugs.webkit.org/show_bug.cgi?id=51943
     7
     8        * UIProcess/API/mac/WKView.mm:
     9        (-[WKView validateUserInterfaceItem:]):
     10        Handle the word transformation selectors.
     11
     12        (-[WKView uppercaseWord:]):
     13        (-[WKView lowercaseWord:]):
     14        (-[WKView capitalizeWord:]):
     15        Call down to the WebPageProxy.
     16
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::uppercaseWord):
     19        (WebKit::WebPageProxy::lowercaseWord):
     20        (WebKit::WebPageProxy::capitalizeWord):
     21        Send messages to the WebPage.
     22
     23        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
     24        (WebKit::changeWordCase):
     25        Add helper function.
     26
     27        (WebKit::WebEditorClient::uppercaseWord):
     28        (WebKit::WebEditorClient::lowercaseWord):
     29        (WebKit::WebEditorClient::capitalizeWord):
     30        Call helper function.
     31
     32        * WebProcess/WebPage/WebPage.cpp:
     33        (WebKit::WebPage::changeSpellingToWord):
     34        Call replaceSelectionWithText.
     35
     36        (WebKit::WebPage::uppercaseWord):
     37        (WebKit::WebPage::lowercaseWord):
     38        (WebKit::WebPage::capitalizeWord):
     39        Call the editor functions.
     40
     41        (WebKit::WebPage::replaceSelectionWithText):
     42        New helper function that replaces the selected string with another string.
     43
     44        * WebProcess/WebPage/WebPage.messages.in:
     45        Add new messages.
     46
    1472011-01-05  Alexey Proskuryakov  <ap@apple.com>
    248
  • trunk/WebKit2/UIProcess/API/mac/WKView.mm

    r75086 r75093  
    412412    }
    413413
     414    if (action == @selector(uppercaseWord:) || action == @selector(lowercaseWord:) || action == @selector(capitalizeWord:))
     415        return _data->_page->selectionState().selectedRangeLength && _data->_page->selectionState().isContentEditable;
     416   
    414417    if (action == @selector(stopSpeaking:))
    415418        return [NSApp isSpeaking];
     
    612615    TextChecker::setAutomaticTextReplacementEnabled(!TextChecker::state().isAutomaticTextReplacementEnabled);
    613616    _data->_page->process()->updateTextCheckerState();
     617}
     618
     619- (void)uppercaseWord:(id)sender
     620{
     621    _data->_page->uppercaseWord();
     622}
     623
     624- (void)lowercaseWord:(id)sender
     625{
     626    _data->_page->lowercaseWord();
     627}
     628
     629- (void)capitalizeWord:(id)sender
     630{
     631    _data->_page->capitalizeWord();
    614632}
    615633
  • trunk/WebKit2/UIProcess/WebPageProxy.cpp

    r75086 r75093  
    17831783}
    17841784
     1785#if PLATFORM(MAC)
     1786void WebPageProxy::uppercaseWord()
     1787{
     1788    process()->send(Messages::WebPage::UppercaseWord(), m_pageID);
     1789}
     1790
     1791void WebPageProxy::lowercaseWord()
     1792{
     1793    process()->send(Messages::WebPage::LowercaseWord(), m_pageID);
     1794}
     1795
     1796void WebPageProxy::capitalizeWord()
     1797{
     1798    process()->send(Messages::WebPage::CapitalizeWord(), m_pageID);
     1799}
     1800#endif
     1801
    17851802void WebPageProxy::registerEditCommand(PassRefPtr<WebEditCommandProxy> commandProxy, UndoOrRedo undoOrRedo)
    17861803{
  • trunk/WebKit2/UIProcess/WebPageProxy.h

    r75086 r75093  
    304304    void unmarkAllMisspellings();
    305305    void unmarkAllBadGrammar();
     306#if PLATFORM(MAC)
     307    void uppercaseWord();
     308    void lowercaseWord();
     309    void capitalizeWord();
     310#endif
    306311
    307312private:
  • trunk/WebKit2/WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm

    r75086 r75093  
    131131#endif
    132132
    133 #if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
     133static void changeWordCase(WebPage* page, SEL selector)
     134{
     135    Frame* frame = page->corePage()->focusController()->focusedOrMainFrame();
     136    if (!frame->editor()->canEdit())
     137        return;
     138
     139    frame->editor()->command("selectWord").execute();
     140
     141    NSString *selectedString = frame->displayStringModifiedByEncoding(frame->editor()->selectedText());
     142    page->replaceSelectionWithText(frame, [selectedString performSelector:selector]);
     143}
     144
    134145void WebEditorClient::uppercaseWord()
    135146{
    136     notImplemented();
     147    changeWordCase(m_page, @selector(uppercaseString));
    137148}
    138149
    139150void WebEditorClient::lowercaseWord()
    140151{
    141     notImplemented();
     152    changeWordCase(m_page, @selector(lowercaseString));
    142153}
    143154
    144155void WebEditorClient::capitalizeWord()
    145156{
    146     notImplemented();
     157    changeWordCase(m_page, @selector(capitalizedString));
    147158}
    148159
     
    222233    m_page->sendSync(Messages::WebPageProxy::CheckTextOfParagraph(String(text, length), checkingTypes), Messages::WebPageProxy::CheckTextOfParagraph::Reply(results));
    223234}
    224 #endif
    225235
    226236#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
  • trunk/WebKit2/WebProcess/WebPage/WebPage.cpp

    r75086 r75093  
    12681268void WebPage::changeSpellingToWord(const String& word)
    12691269{
    1270     Frame* frame = m_page->focusController()->focusedOrMainFrame();
    1271     if (frame->selection()->isNone())
    1272         return;
    1273 
    1274     RefPtr<DocumentFragment> textFragment = createFragmentFromText(frame->selection()->toNormalizedRange().get(), word);
    1275     applyCommand(ReplaceSelectionCommand::create(frame->document(), textFragment.release(), true, false, true));
    1276     frame->selection()->revealSelection(ScrollAlignment::alignToEdgeIfNeeded);
     1270    replaceSelectionWithText(m_page->focusController()->focusedOrMainFrame(), word);
    12771271}
    12781272
     
    12931287}
    12941288
     1289void WebPage::uppercaseWord()
     1290{
     1291    m_page->focusController()->focusedOrMainFrame()->editor()->uppercaseWord();
     1292}
     1293
     1294void WebPage::lowercaseWord()
     1295{
     1296    m_page->focusController()->focusedOrMainFrame()->editor()->lowercaseWord();
     1297}
     1298
     1299void WebPage::capitalizeWord()
     1300{
     1301    m_page->focusController()->focusedOrMainFrame()->editor()->capitalizeWord();
     1302}
     1303   
    12951304void WebPage::setTextForActivePopupMenu(int32_t index)
    12961305{
     
    13061315    m_contextMenu->itemSelected(item);
    13071316    m_contextMenu = 0;
     1317}
     1318
     1319void WebPage::replaceSelectionWithText(Frame* frame, const String& text)
     1320{
     1321    if (frame->selection()->isNone())
     1322        return;
     1323   
     1324    RefPtr<DocumentFragment> textFragment = createFragmentFromText(frame->selection()->toNormalizedRange().get(), text);
     1325    applyCommand(ReplaceSelectionCommand::create(frame->document(), textFragment.release(), true, false, true));
     1326    frame->selection()->revealSelection(ScrollAlignment::alignToEdgeIfNeeded);
    13081327}
    13091328
  • trunk/WebKit2/WebProcess/WebPage/WebPage.h

    r75086 r75093  
    289289#endif
    290290
     291    void replaceSelectionWithText(WebCore::Frame*, const String&);
     292
    291293private:
    292294    WebPage(uint64_t pageID, const WebPageCreationParameters&);
     
    379381    void unmarkAllMisspellings();
    380382    void unmarkAllBadGrammar();
     383#if PLATFORM(MAC)
     384    void uppercaseWord();
     385    void lowercaseWord();
     386    void capitalizeWord();
     387#endif
    381388
    382389#if ENABLE(CONTEXT_MENUS)
  • trunk/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r75086 r75093  
    106106    UnmarkAllMisspellings()
    107107    UnmarkAllBadGrammar()
     108#if PLATFORM(MAC)
     109    UppercaseWord();
     110    LowercaseWord();
     111    CapitalizeWord();
     112#endif
    108113
    109114    SetWindowResizerSize(WebCore::IntSize intersectsView)
Note: See TracChangeset for help on using the changeset viewer.