Changeset 35537 in webkit


Ignore:
Timestamp:
Aug 4, 2008 9:02:19 AM (16 years ago)
Author:
Simon Hausmann
Message:

2008-08-04 Erik Bunce <elbunce@thehive.com>

Reviewed by Simon.

https://bugs.webkit.org/show_bug.cgi?id=20221

Add updateAction() support to ToggleBold, ToggleItalic, and ToggleUnderline.
Add lookup table for mapping web actions to editor commands.

Location:
trunk/WebKit/qt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/qt/Api/qwebpage.cpp

    r35535 r35537  
    9292using namespace WebCore;
    9393
     94// Lookup table mapping QWebPage::WebActions to the associated Editor commands
     95static const char* editorCommandWebActions[] =
     96{
     97    0, // OpenLink,
     98
     99    0, // OpenLinkInNewWindow,
     100    0, // OpenFrameInNewWindow,
     101   
     102    0, // DownloadLinkToDisk,
     103    0, // CopyLinkToClipboard,
     104   
     105    0, // OpenImageInNewWindow,
     106    0, // DownloadImageToDisk,
     107    0, // CopyImageToClipboard,
     108   
     109    0, // Back,
     110    0, // Forward,
     111    0, // Stop,
     112    0, // Reload,
     113   
     114    "Cut", // Cut,
     115    "Copy", // Copy,
     116    "Paste", // Paste,
     117   
     118    "Undo", // Undo,
     119    "Redo", // Redo,
     120    "MoveForward", // MoveToNextChar,
     121    "MoveBackward", // MoveToPreviousChar,
     122    "MoveWordForward", // MoveToNextWord,
     123    "MoveWordBackward", // MoveToPreviousWord,
     124    "MoveDown", // MoveToNextLine,
     125    "MoveUp", // MoveToPreviousLine,
     126    "MoveToBeginningOfLine", // MoveToStartOfLine,
     127    "MoveToEndOfLine", // MoveToEndOfLine,
     128    "MoveToBeginningOfParagraph", // MoveToStartOfBlock,
     129    "MoveToEndOfParagraph", // MoveToEndOfBlock,
     130    "MoveToBeginningOfDocument", // MoveToStartOfDocument,
     131    "MoveToEndOfDocument", // MoveToEndOfDocument,
     132    "MoveForwardAndModifySelection", // SelectNextChar,
     133    "MoveBackwardAndModifySelection", // SelectPreviousChar,
     134    "MoveWordForwardAndModifySelection", // SelectNextWord,
     135    "MoveWordBackwardAndModifySelection", // SelectPreviousWord,
     136    "MoveDownAndModifySelection", // SelectNextLine,
     137    "MoveUpAndModifySelection", // SelectPreviousLine,
     138    "MoveToBeginningOfLineAndModifySelection", // SelectStartOfLine,
     139    "MoveToEndOfLineAndModifySelection", // SelectEndOfLine,
     140    "MoveToBeginningOfParagraphAndModifySelection", // SelectStartOfBlock,
     141    "MoveToEndOfParagraphAndModifySelection", // SelectEndOfBlock,
     142    "MoveToBeginningOfDocumentAndModifySelection", //SelectStartOfDocument,
     143    "MoveToEndOfDocumentAndModifySelection", // SelectEndOfDocument,
     144    "DeleteWordBackward", // DeleteStartOfWord,
     145    "DeleteWordForward", // DeleteEndOfWord,
     146   
     147    0, // SetTextDirectionDefault,
     148    0, // SetTextDirectionLeftToRight,
     149    0, // SetTextDirectionRightToLeft,
     150   
     151    "ToggleBold", // ToggleBold,
     152    "ToggleItalic", // ToggleItalic,
     153    "ToggleUnderline", // ToggleUnderline,
     154   
     155    0, // InspectElement,
     156
     157    0 // WebActionCount
     158};
     159
     160// Lookup the appropriate editor command to use for WebAction \a action
     161static const char* editorCommandForWebActions(QWebPage::WebAction action)
     162{
     163    if ((action > QWebPage::NoWebAction) && (action < int(sizeof(editorCommandWebActions) / sizeof(const char*))))
     164        return editorCommandWebActions[action];
     165   
     166    return 0;
     167}
     168
    94169#ifndef QT_NO_CURSOR
    95170SetCursorEvent::SetCursorEvent(const QCursor& cursor)
     
    326401
    327402    bool enabled = a->isEnabled();
     403    bool checked = a->isChecked();
    328404
    329405    switch (action) {
     
    353429            // those two are handled by QUndoStack
    354430            break;
     431        case QWebPage::ToggleBold:
     432        case QWebPage::ToggleItalic:
     433        case QWebPage::ToggleUnderline:
     434            enabled = editor->canEditRichly();
     435            if (enabled)
     436                checked = editor->command(editorCommandForWebActions(action)).state() != FalseTriState;
     437            else
     438                checked = false;
     439            break;
    355440        default: break;
    356441    }
    357442
    358443    a->setEnabled(enabled);
     444
     445    if (a->isCheckable())
     446        a->setChecked(checked);
    359447}
    360448
     
    372460    updateAction(QWebPage::Copy);
    373461    updateAction(QWebPage::Paste);
     462    updateAction(QWebPage::ToggleBold);
     463    updateAction(QWebPage::ToggleItalic);
     464    updateAction(QWebPage::ToggleUnderline);
    374465}
    375466
     
    12701361            mainFrame()->d->frame->loader()->reload();
    12711362            break;
    1272         case Cut:
    1273             command = "Cut";
    1274             break;
    1275         case Copy:
    1276             command = "Copy";
    1277             break;
    1278         case Paste:
    1279             command = "Paste";
    1280             break;
    1281 
    1282         case Undo:
    1283             command = "Undo";
    1284             break;
    1285         case Redo:
    1286             command = "Redo";
    1287             break;
    1288 
    1289         case MoveToNextChar:
    1290             command = "MoveForward";
    1291             break;
    1292         case MoveToPreviousChar:
    1293             command = "MoveBackward";
    1294             break;
    1295         case MoveToNextWord:
    1296             command = "MoveWordForward";
    1297             break;
    1298         case MoveToPreviousWord:
    1299             command = "MoveWordBackward";
    1300             break;
    1301         case MoveToNextLine:
    1302             command = "MoveDown";
    1303             break;
    1304         case MoveToPreviousLine:
    1305             command = "MoveUp";
    1306             break;
    1307         case MoveToStartOfLine:
    1308             command = "MoveToBeginningOfLine";
    1309             break;
    1310         case MoveToEndOfLine:
    1311             command = "MoveToEndOfLine";
    1312             break;
    1313         case MoveToStartOfBlock:
    1314             command = "MoveToBeginningOfParagraph";
    1315             break;
    1316         case MoveToEndOfBlock:
    1317             command = "MoveToEndOfParagraph";
    1318             break;
    1319         case MoveToStartOfDocument:
    1320             command = "MoveToBeginningOfDocument";
    1321             break;
    1322         case MoveToEndOfDocument:
    1323             command = "MoveToEndOfDocument";
    1324             break;
    1325         case SelectNextChar:
    1326             command = "MoveForwardAndModifySelection";
    1327             break;
    1328         case SelectPreviousChar:
    1329             command = "MoveBackwardAndModifySelection";
    1330             break;
    1331         case SelectNextWord:
    1332             command = "MoveWordForwardAndModifySelection";
    1333             break;
    1334         case SelectPreviousWord:
    1335             command = "MoveWordBackwardAndModifySelection";
    1336             break;
    1337         case SelectNextLine:
    1338             command = "MoveDownAndModifySelection";
    1339             break;
    1340         case SelectPreviousLine:
    1341             command = "MoveUpAndModifySelection";
    1342             break;
    1343         case SelectStartOfLine:
    1344             command = "MoveToBeginningOfLineAndModifySelection";
    1345             break;
    1346         case SelectEndOfLine:
    1347             command = "MoveToEndOfLineAndModifySelection";
    1348             break;
    1349         case SelectStartOfBlock:
    1350             command = "MoveToBeginningOfParagraphAndModifySelection";
    1351             break;
    1352         case SelectEndOfBlock:
    1353             command = "MoveToEndOfParagraphAndModifySelection";
    1354             break;
    1355         case SelectStartOfDocument:
    1356             command = "MoveToBeginningOfDocumentAndModifySelection";
    1357             break;
    1358         case SelectEndOfDocument:
    1359             command = "MoveToEndOfDocumentAndModifySelection";
    1360             break;
    1361         case DeleteStartOfWord:
    1362             command = "DeleteWordBackward";
    1363             break;
    1364         case DeleteEndOfWord:
    1365             command = "DeleteWordForward";
    1366             break;
    1367 
    13681363        case SetTextDirectionDefault:
    13691364            editor->setBaseWritingDirection(NaturalWritingDirection);
     
    13751370            editor->setBaseWritingDirection(RightToLeftWritingDirection);
    13761371            break;
    1377 
    1378         case ToggleBold:
    1379             command = "ToggleBold";
    1380             break;
    1381         case ToggleItalic:
    1382             command = "ToggleItalic";
    1383             break;
    1384         case ToggleUnderline:
    1385             editor->toggleUnderline();
    1386             break;
    1387 
    13881372        case InspectElement:
    13891373            d->page->inspectorController()->inspect(d->hitTestResult.d->innerNonSharedNode.get());
    13901374            break;
    1391 
    1392         default: break;
     1375        default:
     1376            command = editorCommandForWebActions(action);
     1377            break;
    13931378    }
    13941379
     
    17801765            }
    17811766        }
     1767
     1768        d->updateEditorActions();
    17821769    }
    17831770}
  • trunk/WebKit/qt/ChangeLog

    r35536 r35537  
     12008-08-04  Erik Bunce  <elbunce@thehive.com>
     2
     3        Reviewed by Simon.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=20221
     6
     7        Add updateAction() support to ToggleBold, ToggleItalic, and ToggleUnderline.
     8        Add lookup table for mapping web actions to editor commands.
     9
     10        * Api/qwebpage.cpp:
     11        (editorCommandForWebActions):
     12        (QWebPagePrivate::updateAction):
     13        (QWebPagePrivate::updateEditorActions):
     14        (QWebPage::triggerAction):
     15        (QWebPage::setEditable):
     16
    1172008-08-03  Ariya Hidayat  <ariya.hidayat@trolltech.com>
    218
Note: See TracChangeset for help on using the changeset viewer.