Changeset 19049 in webkit


Ignore:
Timestamp:
Jan 23, 2007, 11:37:35 AM (18 years ago)
Author:
adele
Message:

WebCore:

Reviewed by Darin.


WebCore part of fix for <rdar://problem/4946753>REGRESSION: Inserting tabs is broken in Mail

In addition to this fix, I also reorganized some event handling code for keyPress events to
prepare for another fix. There's also just a little bit of unrelated cleanup.


  • dom/EventTargetNode.cpp: (WebCore::EventTargetNode::defaultEventHandler): Move tab focus behavior into new defaultKeyboardEventHandler method.


  • bridge/EditorClient.h: Added handleKeyPress.
  • editing/Editor.cpp: (WebCore::Editor::handleKeyPress): Added. Calls over to the client method. (WebCore::Editor::deleteRange): Removed unnecessary propogateDOMException.
  • editing/Editor.h: Added handleKeyPress. (WebCore::Editor::addToKillRing): Formatting cleanup.
  • editing/mac/EditorMac.mm: Removed unnecessary propogateDOMException.


  • page/EventHandler.cpp: (WebCore::EventHandler::defaultKeyboardEventHandler): Added. Checks the tabKeyCyclesThroughElements setting before advancing focus for tab key events. Calls handleKeyPress.
  • page/EventHandler.h: Added defaultKeyboardEventHandler.


  • page/Page.cpp: (WebCore::Page::Page): Initialize m_tabKeyCyclesThroughElements to true.
  • page/Page.h: Added m_tabKeyCyclesThroughElements. (WebCore::Page::setTabKeyCyclesThroughElements): Added. (WebCore::Page::tabKeyCyclesThroughElements): Added.


  • platform/PlatformKeyboardEvent.h: Added ability to get NSEvent from PlatformKeyboardEvent.
  • platform/mac/KeyEventMac.mm: (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent): Initialize m_macEvent to the NSEvent.


  • platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyEditorClient::handleKeyPress): Added.

WebKit:

Reviewed by Darin.

WebKit part of fix for <rdar://problem/4946753>REGRESSION: Inserting tabs is broken in Mail


In addition to this fix, I also reorganized some event handling code for keyPress events to
prepare for another fix.

  • WebCoreSupport/WebEditorClient.h: Added handleKeyPress method.
  • WebCoreSupport/WebEditorClient.mm: (WebEditorClient::handleKeyPress): Added. Code moved from WebHTMLView keyDown method. This is called from the defaultEventHandler so that in the future, we can make the right decision about which selection the keyPress should apply to.
  • WebView/WebHTMLView.mm: (-[WebHTMLView keyDown:]): Moved _interceptEditingKeyEvent call to handleKeyPress. (-[WebHTMLView _interceptEditingKeyEvent:]): Prevents intercepting keys for cmd-modified events. Removed tabCycling checks since this is now handled in WebCore.
  • WebView/WebHTMLViewInternal.h: Made _interceptEditingKeyEvent SPI.
  • WebView/WebView.mm: Use new tabKeyCyclesThroughElements methods on the page. (-[WebViewPrivate init]): ditto. (-[WebView setTabKeyCyclesThroughElements:]): ditto. (-[WebView tabKeyCyclesThroughElements]): ditto. (-[WebView setEditable:]): ditto
Location:
trunk
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r19047 r19049  
     12007-01-23  Adele Peterson  <adele@apple.com>
     2
     3        Reviewed by Darin.
     4       
     5        WebCore part of fix for <rdar://problem/4946753>REGRESSION: Inserting tabs is broken in Mail
     6
     7        In addition to this fix, I also reorganized some event handling code for keyPress events to
     8        prepare for another fix.  There's also just a little bit of unrelated cleanup.
     9       
     10        * dom/EventTargetNode.cpp: (WebCore::EventTargetNode::defaultEventHandler):
     11          Move tab focus behavior into new defaultKeyboardEventHandler method.
     12       
     13        * bridge/EditorClient.h: Added handleKeyPress.
     14        * editing/Editor.cpp:
     15        (WebCore::Editor::handleKeyPress): Added. Calls over to the client method.
     16        (WebCore::Editor::deleteRange): Removed unnecessary propogateDOMException.
     17        * editing/Editor.h: Added handleKeyPress.
     18        (WebCore::Editor::addToKillRing): Formatting cleanup.
     19        * editing/mac/EditorMac.mm: Removed unnecessary propogateDOMException.
     20       
     21        * page/EventHandler.cpp: (WebCore::EventHandler::defaultKeyboardEventHandler): Added. Checks
     22          the tabKeyCyclesThroughElements setting before advancing focus for tab key events.  Calls handleKeyPress.
     23        * page/EventHandler.h: Added defaultKeyboardEventHandler.
     24       
     25        * page/Page.cpp: (WebCore::Page::Page): Initialize m_tabKeyCyclesThroughElements to true.
     26        * page/Page.h: Added m_tabKeyCyclesThroughElements.
     27        (WebCore::Page::setTabKeyCyclesThroughElements): Added.
     28        (WebCore::Page::tabKeyCyclesThroughElements): Added.
     29       
     30        * platform/PlatformKeyboardEvent.h: Added ability to get NSEvent from PlatformKeyboardEvent.
     31        * platform/mac/KeyEventMac.mm: (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
     32          Initialize m_macEvent to the NSEvent.
     33       
     34        * platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyEditorClient::handleKeyPress): Added.
     35
    1362007-01-23  George Staikos  <staikos@kde.org>
    237
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r19042 r19049  
    1108911089                        isa = PBXProject;
    1109011090                        buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
    11091                         compatibilityVersion = "Xcode 2.4";
    1109211091                        hasScannedForEncodings = 1;
    1109311092                        knownRegions = (
     
    1110411103                        projectDirPath = "";
    1110511104                        projectRoot = "";
    11106                         shouldCheckCompatibility = 1;
    1110711105                        targets = (
    1110811106                                93F198A508245E59001E9ABC /* WebCore */,
  • trunk/WebCore/bridge/EditorClient.h

    r18931 r19049  
    4040class CSSStyleDeclaration;
    4141class EditCommand;
     42class EventTargetNode;
    4243class Frame;
    4344class HTMLElement;
     45class KeyboardEvent;
    4446class Node;
    4547class Range;
     
    9294    virtual void redo() = 0;
    9395
     96    virtual void handleKeyPress(EventTargetNode*, KeyboardEvent*) = 0;
     97
    9498#if PLATFORM(MAC)
    9599    // FIXME: This should become SelectionController::toWebArchive()
  • trunk/WebCore/dom/EventTargetNode.cpp

    r18610 r19049  
    561561{
    562562    const AtomicString& eventType = event->type();
    563     if (eventType == keypressEvent && event->isKeyboardEvent()) {
    564         KeyboardEvent* keyEvent = static_cast<KeyboardEvent*>(event);
    565         if (keyEvent->keyIdentifier() == "U+000009") {
    566             if (Page* page = document()->page())
    567                 if (page->focusController()->advanceFocus(keyEvent))
    568                     event->setDefaultHandled();
    569         }
     563    if (eventType == keypressEvent) {
     564        if (event->isKeyboardEvent())
     565            if (Frame* frame = document()->frame())
     566                frame->eventHandler()->defaultKeyboardEventHandler(this, static_cast<KeyboardEvent*>(event));
    570567    } else if (eventType == clickEvent) {
    571568        int detail = event->isUIEvent() ? static_cast<UIEvent*>(event)->detail() : 0;
  • trunk/WebCore/editing/Editor.cpp

    r19039 r19049  
    7373}
    7474
     75void Editor::handleKeyPress(EventTargetNode* target, KeyboardEvent* event)
     76{
     77    if (EditorClient* c = client())
     78        c->handleKeyPress(target, event);
     79}
     80
    7581bool Editor::canEdit() const
    7682{
     
    163169}
    164170
    165 void Editor::deleteRange(Range *range, bool killRing, bool prepend, bool smartDeleteOK, EditorDeleteAction deletionAction, TextGranularity granularity)
     171void Editor::deleteRange(Range* range, bool killRing, bool prepend, bool smartDeleteOK, EditorDeleteAction deletionAction, TextGranularity granularity)
    166172{
    167173    if (killRing)
    168174        addToKillRing(range, prepend);
    169175
     176    ExceptionCode ec = 0;
     177
    170178    SelectionController* selectionController = m_frame->selectionController();
    171     bool smartDelete = smartDeleteOK ? canSmartCopyOrDelete() : false;
    172     ExceptionCode ec = 0;
     179    bool smartDelete = smartDeleteOK && canSmartCopyOrDelete();
    173180    switch (deletionAction) {
    174         case deleteSelectionAction:             
     181        case deleteSelectionAction:
    175182            selectionController->setSelectedRange(range, DOWNSTREAM, true, ec);
    176             propogateDOMException(ec);
     183            if (ec)
     184                return;
    177185            deleteSelectionWithSmartDelete(smartDelete);
    178186            break;
    179187        case deleteKeyAction:
    180188            selectionController->setSelectedRange(range, DOWNSTREAM, (granularity != CharacterGranularity), ec);
    181             propogateDOMException(ec);
     189            if (ec)
     190                return;
    182191            if (m_frame->document()) {
    183192                TypingCommand::deleteKeyPressed(m_frame->document(), smartDelete, granularity);
     
    187196        case forwardDeleteKeyAction:
    188197            selectionController->setSelectedRange(range, DOWNSTREAM, (granularity != CharacterGranularity), ec);
    189             propogateDOMException(ec);
     198            if (ec)
     199                return;
    190200            if (m_frame->document()) {
    191201                TypingCommand::forwardDeleteKeyPressed(m_frame->document(), smartDelete, granularity);
  • trunk/WebCore/editing/Editor.h

    r19039 r19049  
    4848class EditCommand;
    4949class EditorClient;
     50class EventTargetNode;
    5051class FontData;
    5152class Frame;
     
    6566    DeleteButtonController* deleteButtonController() const { return m_deleteButtonController.get(); }
    6667    EditCommand* lastEditCommand() { return m_lastEditCommand.get(); }
    67    
     68
     69    void handleKeyPress(EventTargetNode*, KeyboardEvent*);
     70
    6871    bool canEdit() const;
    6972    bool canEditRichly() const;
     
    115118    void deleteSelectionWithSmartDelete(bool smartDelete);
    116119    void deleteSelectionWithSmartDelete();
    117     bool dispatchCPPEvent(const AtomicString &, ClipboardAccessPolicy);
     120    bool dispatchCPPEvent(const AtomicString&, ClipboardAccessPolicy);
    118121   
    119122    Node* removedAnchor() const { return m_removedAnchor.get(); }
     
    198201
    199202#if PLATFORM(MAC)
    200     // propogate DOM exception as an ObjC exception
    201     void propogateDOMException(ExceptionCode);
    202 
    203203    void addToKillRing(Range*, bool prepend);
    204204    bool m_startNewKillRingSequence;
    205205#else
    206     void propogateDOMException(ExceptionCode){}
    207     void addToKillRing(Range*, bool){}
     206    void addToKillRing(Range*, bool) { }
    208207#endif
    209208
  • trunk/WebCore/editing/mac/EditorMac.mm

    r18564 r19049  
    6969        return client()->userVisibleString(nsURL);
    7070    return nil;
    71 }
    72 
    73 void Editor::propogateDOMException(ExceptionCode ec)
    74 {
    75     if (ec) raiseDOMException(ec);
    7671}
    7772
     
    650645    [[NSApplication sharedApplication] orderFrontColorPanel:nil];
    651646}
    652    
     647
    653648} // namespace WebCore
  • trunk/WebCore/page/EventHandler.cpp

    r19029 r19049  
    11/*
    2  * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
     2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
    33 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
    44 *
     
    3333#include "Editor.h"
    3434#include "EventNames.h"
     35#include "FocusController.h"
    3536#include "Frame.h"
    3637#include "FrameTree.h"
     
    4647#include "MouseEvent.h"
    4748#include "MouseEventWithHitTestResults.h"
     49#include "Page.h"
    4850#include "PlatformScrollBar.h"
    4951#include "PlatformWheelEvent.h"
     
    11741176}
    11751177
    1176 }
     1178void EventHandler::defaultKeyboardEventHandler(EventTargetNode* target, KeyboardEvent* event)
     1179{
     1180    if (target == event->target() && event->type() == keypressEvent) {
     1181        if (Page* page = target->document()->page())
     1182            if (page->tabKeyCyclesThroughElements() && event->keyIdentifier() == "U+000009")
     1183                if (page->focusController()->advanceFocus(event)) {
     1184                    event->setDefaultHandled();
     1185                    return;
     1186                }
     1187        m_frame->editor()->handleKeyPress(target, event);
     1188    }
     1189}
     1190
     1191}
  • trunk/WebCore/page/EventHandler.h

    r18989 r19049  
    126126    void setMouseDownMayStartAutoscroll() { m_mouseDownMayStartAutoscroll = true; }
    127127
     128    void defaultKeyboardEventHandler(EventTargetNode*, KeyboardEvent*);
     129
    128130#if PLATFORM(MAC)
    129131    PassRefPtr<KeyboardEvent> currentKeyboardEvent() const;
  • trunk/WebCore/page/Page.cpp

    r19039 r19049  
    6262    , m_editorClient(editorClient)
    6363    , m_frameCount(0)
     64    , m_tabKeyCyclesThroughElements(true)
    6465    , m_defersLoading(false)
    6566{
  • trunk/WebCore/page/Page.h

    r19039 r19049  
    9191        ProgressTracker* progress() const { return m_progress.get(); }
    9292       
     93        void setTabKeyCyclesThroughElements(bool b) { m_tabKeyCyclesThroughElements = b; }
     94        bool tabKeyCyclesThroughElements() const { return m_tabKeyCyclesThroughElements; }
     95       
    9396        void setDefersLoading(bool);
    9497        bool defersLoading() const { return m_defersLoading; }
     
    116119        String m_groupName;
    117120
     121        bool m_tabKeyCyclesThroughElements;
    118122        bool m_defersLoading;
    119123
  • trunk/WebCore/platform/PlatformKeyboardEvent.h

    r18068 r19049  
    3131
    3232#if PLATFORM(MAC)
     33#include "RetainPtr.h"
    3334#ifdef __OBJC__
    3435@class NSEvent;
     
    7172#if PLATFORM(MAC)
    7273        PlatformKeyboardEvent(NSEvent*, bool forceAutoRepeat = false);
     74        NSEvent* macEvent() const { return m_macEvent.get(); }
    7375#endif
    7476
     
    9799        bool m_altKey;
    98100        bool m_metaKey;
     101
     102#if PLATFORM(MAC)
     103        RetainPtr<NSEvent> m_macEvent;
     104#endif
    99105    };
    100106
  • trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h

    r19042 r19049  
    304304    virtual void undo() { }
    305305    virtual void redo() { }
    306    
     306
     307    virtual void handleKeyPress(EventTargetNode*, KeyboardEvent*) { }
     308
    307309#if PLATFORM(MAC)
    308310    // FIXME: This should become SelectionController::toWebArchive()
  • trunk/WebCore/platform/mac/KeyEventMac.mm

    r17700 r19049  
    706706
    707707PlatformKeyboardEvent::PlatformKeyboardEvent(NSEvent *event, bool forceAutoRepeat)
    708     : m_text([event characters]),
    709       m_unmodifiedText([event charactersIgnoringModifiers]),
    710       m_keyIdentifier(keyIdentifierForKeyEvent(event)),
    711       m_isKeyUp([event type] == NSKeyUp),
    712       m_autoRepeat(forceAutoRepeat || [event isARepeat]),
    713       m_WindowsKeyCode(WindowsKeyCodeForKeyEvent(event)),
    714       m_isKeypad(isKeypadEvent(event)),
    715       m_shiftKey([event modifierFlags] & NSShiftKeyMask),
    716       m_ctrlKey([event modifierFlags] & NSControlKeyMask),
    717       m_altKey([event modifierFlags] & NSAlternateKeyMask),
    718       m_metaKey([event modifierFlags] & NSCommandKeyMask)
     708    : m_text([event characters])
     709    , m_unmodifiedText([event charactersIgnoringModifiers])
     710    , m_keyIdentifier(keyIdentifierForKeyEvent(event))
     711    , m_isKeyUp([event type] == NSKeyUp)
     712    , m_autoRepeat(forceAutoRepeat || [event isARepeat])
     713    , m_WindowsKeyCode(WindowsKeyCodeForKeyEvent(event))
     714    , m_isKeypad(isKeypadEvent(event))
     715    , m_shiftKey([event modifierFlags] & NSShiftKeyMask)
     716    , m_ctrlKey([event modifierFlags] & NSControlKeyMask)
     717    , m_altKey([event modifierFlags] & NSAlternateKeyMask)
     718    , m_metaKey([event modifierFlags] & NSCommandKeyMask)
     719    , m_macEvent(event)
    719720{
    720721    // Turn 0x7F into 8, because backspace needs to always be 8.
  • trunk/WebKit/ChangeLog

    r19042 r19049  
     12007-01-23  Adele Peterson  <adele@apple.com>
     2
     3        Reviewed by Darin.
     4
     5        WebKit part of fix for <rdar://problem/4946753>REGRESSION: Inserting tabs is broken in Mail
     6       
     7        In addition to this fix, I also reorganized some event handling code for keyPress events to
     8        prepare for another fix.
     9
     10        * WebCoreSupport/WebEditorClient.h: Added handleKeyPress method.
     11        * WebCoreSupport/WebEditorClient.mm:
     12        (WebEditorClient::handleKeyPress): Added.  Code moved from WebHTMLView keyDown method.
     13         This is called from the defaultEventHandler so that in the future, we can make the right
     14         decision about which selection the keyPress should apply to.
     15        * WebView/WebHTMLView.mm:
     16        (-[WebHTMLView keyDown:]): Moved _interceptEditingKeyEvent call to handleKeyPress.
     17        (-[WebHTMLView _interceptEditingKeyEvent:]): Prevents intercepting keys for cmd-modified events. Removed tabCycling checks
     18         since this is now handled in WebCore.
     19        * WebView/WebHTMLViewInternal.h: Made _interceptEditingKeyEvent SPI.
     20        * WebView/WebView.mm: Use new tabKeyCyclesThroughElements methods on the page.
     21        (-[WebViewPrivate init]): ditto.
     22        (-[WebView setTabKeyCyclesThroughElements:]): ditto.
     23        (-[WebView tabKeyCyclesThroughElements]): ditto.
     24        (-[WebView setEditable:]): ditto
     25
    1262007-01-23  Lars Knoll <lars@trolltech.com>
    227
  • trunk/WebKit/WebCoreSupport/WebEditorClient.h

    r18931 r19049  
    8282    virtual void undo();
    8383    virtual void redo();
     84
     85    virtual void handleKeyPress(WebCore::EventTargetNode*, WebCore::KeyboardEvent*);
     86
    8487private:
    8588    void registerCommandForUndoOrRedo(PassRefPtr<WebCore::EditCommand>, bool isRedo);
  • trunk/WebKit/WebCoreSupport/WebEditorClient.mm

    r18931 r19049  
    4444#import <WebCore/EditAction.h>
    4545#import <WebCore/EditCommand.h>
     46#import <WebCore/KeyboardEvent.h>
     47#import <WebCore/PlatformKeyboardEvent.h>
    4648
    4749using namespace WebCore;
     
    386388}
    387389
     390void WebEditorClient::handleKeyPress(EventTargetNode* node, KeyboardEvent* event)
     391{
     392    WebHTMLView *webHTMLView = [[[m_webView mainFrame] frameView] documentView];
     393    if (const PlatformKeyboardEvent* platformEvent = event->keyEvent())
     394        if ([webHTMLView _canEdit] && [webHTMLView _interceptEditingKeyEvent:platformEvent->macEvent()])
     395            event->setDefaultHandled();
     396}
     397
    388398/*
    389399bool WebEditorClient::shouldChangeSelectedRange(Range *currentRange, Range *toProposedRange, NSSelectionAffinity selectionAffinity, bool stillSelecting) { return false; }
  • trunk/WebKit/WebKit.xcodeproj/project.pbxproj

    r19040 r19049  
    12811281                        isa = PBXProject;
    12821282                        buildConfigurationList = 149C283208902B0F008A9EFC /* Build configuration list for PBXProject "WebKit" */;
    1283                         compatibilityVersion = "Xcode 2.4";
    12841283                        hasScannedForEncodings = 1;
    12851284                        knownRegions = (
     
    12961295                        projectDirPath = "";
    12971296                        projectRoot = "";
    1298                         shouldCheckCompatibility = 1;
    12991297                        targets = (
    13001298                                9398100A0824BF01008DF038 /* WebKit */,
  • trunk/WebKit/WebView/WebHTMLView.mm

    r19040 r19049  
    33203320}
    33213321
    3322 - (BOOL)_interceptEditingKeyEvent:(NSEvent *)event
    3323 {   
    3324     // Use WebView's tabKeyCyclesThroughElements state to determine whether or not
    3325     // to process tab key events. The idea here is that tabKeyCyclesThroughElements
    3326     // will be YES when this WebView is being used in a browser, and we desire the
    3327     // behavior where tab moves to the next element in tab order. If tabKeyCyclesThroughElements
    3328     // is NO, it is likely that the WebView is being embedded as the whole view, as in Mail,
    3329     // and tabs should input tabs as expected in a text editor. Using Option-Tab always cycles
    3330     // through elements.
    3331 
    3332     if ([[self _webView] tabKeyCyclesThroughElements] && [event _web_isTabKeyEvent])
    3333         return NO;
    3334 
    3335     if (![[self _webView] tabKeyCyclesThroughElements] && [event _web_isOptionTabKeyEvent])
    3336         return NO;
    3337 
    3338     // Now process the key normally
    3339     [self interpretKeyEvents:[NSArray arrayWithObject:event]];
    3340     return YES;
    3341 }
    3342 
    33433322- (void)keyDown:(NSEvent *)event
    33443323{
     
    33583337        // Consumed by complete: popup window
    33593338    } else {
    3360         // We're going to process a key event, bail on any outstanding complete: UI
    33613339        [_private->compController endRevertingChange:YES moveLeft:NO];
    3362         BOOL handledKey = [self _canEdit] && [self _interceptEditingKeyEvent:event];
    3363         if (!handledKey)
    3364             callSuper = YES;
     3340        callSuper = YES;
    33653341    }
    33663342    if (callSuper)
     
    52595235{
    52605236    [self _updateMouseoverWithFakeEvent];
     5237}
     5238
     5239- (BOOL)_interceptEditingKeyEvent:(NSEvent *)event
     5240{
     5241    // If the cmd-key is down, then we shouldn't intercept the key since this will
     5242    // be handled correctly in performKeyEquivalent
     5243    if ([event modifierFlags] & NSCommandKeyMask)
     5244        return NO;
     5245
     5246    // Now process the key normally
     5247    [self interpretKeyEvents:[NSArray arrayWithObject:event]];
     5248    return YES;
    52615249}
    52625250
  • trunk/WebKit/WebView/WebHTMLViewInternal.h

    r19040 r19049  
    113113- (void)_lookUpInDictionaryFromMenu:(id)sender;
    114114- (void)_hoverFeedbackSuspendedChanged;
     115- (BOOL)_interceptEditingKeyEvent:(NSEvent *)event;
    115116- (DOMDocumentFragment*)_documentFragmentFromPasteboard:(NSPasteboard *)pasteboard;
    116117#if !BUILDING_ON_TIGER
  • trunk/WebKit/WebView/WebView.mm

    r19040 r19049  
    287287    BOOL drawsBackground;
    288288    BOOL editable;
    289     BOOL tabKeyCyclesThroughElements;
    290289    BOOL tabKeyCyclesThroughElementsChanged;
    291290    BOOL becomingFirstResponder;
     
    397396    textSizeMultiplier = 1;
    398397    dashboardBehaviorAllowWheelScrolling = YES;
    399     tabKeyCyclesThroughElements = YES;
    400398    shouldCloseWithWindow = objc_collecting_enabled();
    401399    continuousSpellCheckingEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:WebContinuousSpellCheckingEnabled];
     
    26782676{
    26792677    _private->tabKeyCyclesThroughElementsChanged = YES;
    2680     _private->tabKeyCyclesThroughElements = cyclesElements;
     2678    _private->page->setTabKeyCyclesThroughElements(cyclesElements);
    26812679}
    26822680
    26832681- (BOOL)tabKeyCyclesThroughElements
    26842682{
    2685     return _private->tabKeyCyclesThroughElements;
     2683    return _private->page->tabKeyCyclesThroughElements();
    26862684}
    26872685
     
    29772975        _private->editable = flag;
    29782976        if (!_private->tabKeyCyclesThroughElementsChanged)
    2979             _private->tabKeyCyclesThroughElements = !flag;
     2977            _private->page->setTabKeyCyclesThroughElements(!flag);
    29802978        FrameMac* mainFrame = [[[self mainFrame] _bridge] _frame];
    29812979        if (mainFrame) {
Note: See TracChangeset for help on using the changeset viewer.