Changeset 18338 in webkit


Ignore:
Timestamp:
Dec 19, 2006 11:18:26 PM (17 years ago)
Author:
adele
Message:

LayoutTests:

Reviewed by Anders.

Test for <rdar://problem/3824247> Select All works even if -khtml-user-select:none; style is set

  • editing/selection/select-all-user-select-none-expected.txt: Added.
  • editing/selection/select-all-user-select-none.html: Added.

WebCore:

Reviewed by Anders.

  • Fix for <rdar://problem/3824247> Select All works even if -khtml-user-select:none; style is set

Also made user-select:none work on new list boxes, and cleaned up the list box defaultEventHandler.

Test: editing/selection/select-all-user-select-none.html

  • editing/SelectionController.cpp: (WebCore::SelectionController::selectAll): Make sure canSelect is true on the root renderer.
  • html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::canSelectAll): Check canSelect here. (WebCore::HTMLSelectElement::selectAll): Added nil check for renderer. (WebCore::HTMLSelectElement::defaultEventHandler): Return early if the event has been handled. (WebCore::HTMLSelectElement::listBoxDefaultEventHandler): Check canSelect here.
  • html/HTMLSelectElement.h:
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r18336 r18338  
     12006-12-19  Adele Peterson  <adele@apple.com>
     2
     3        Reviewed by Anders.
     4
     5        Test for <rdar://problem/3824247> Select All works even if -khtml-user-select:none; style is set
     6
     7        * editing/selection/select-all-user-select-none-expected.txt: Added.
     8        * editing/selection/select-all-user-select-none.html: Added.
     9
    1102006-12-19  Anders Carlsson  <acarlsson@apple.com>
    211
  • trunk/WebCore/ChangeLog

    r18336 r18338  
     12006-12-19  Adele Peterson  <adele@apple.com>
     2
     3        Reviewed by Anders.
     4
     5        - Fix for <rdar://problem/3824247> Select All works even if -khtml-user-select:none; style is set
     6
     7        Also made user-select:none work on new list boxes, and cleaned up the list box defaultEventHandler.
     8
     9        Test: editing/selection/select-all-user-select-none.html
     10
     11        * editing/SelectionController.cpp: (WebCore::SelectionController::selectAll): Make sure canSelect is true on the root renderer.
     12        * html/HTMLSelectElement.cpp:
     13        (WebCore::HTMLSelectElement::canSelectAll): Check canSelect here.
     14        (WebCore::HTMLSelectElement::selectAll): Added nil check for renderer.
     15        (WebCore::HTMLSelectElement::defaultEventHandler): Return early if the event has been handled.
     16        (WebCore::HTMLSelectElement::listBoxDefaultEventHandler): Check canSelect here.
     17        * html/HTMLSelectElement.h:
     18
    1192006-12-19  Anders Carlsson  <acarlsson@apple.com>
    220
  • trunk/WebCore/editing/SelectionController.cpp

    r18332 r18338  
    10921092   
    10931093    Node* root = isContentEditable() ? highestEditableRoot(m_sel.start()) : document->documentElement();
     1094    if (!root->renderer() || !root->renderer()->canSelect())
     1095        return;
    10941096    Selection newSelection(Selection::selectionFromContentsOfNode(root));
    10951097    if (m_frame->shouldChangeSelection(newSelection))
  • trunk/WebCore/html/HTMLSelectElement.cpp

    r18261 r18338  
    356356}
    357357
     358bool HTMLSelectElement::canSelectAll() const
     359{
     360    return !usesMenuList() && renderer() && renderer()->canSelect();
     361}
     362
    358363void HTMLSelectElement::selectAll()
    359364{
    360365    ASSERT(!usesMenuList());
    361     if (!multiple())
     366    if (!renderer() || !multiple())
    362367        return;
    363368   
     
    552557    else
    553558        listBoxDefaultEventHandler(evt);
     559   
     560    if (evt->defaultHandled())
     561        return;
    554562
    555563    if (!evt->defaultHandled() && evt->type() == keypressEvent && evt->isKeyboardEvent()) {
     
    560568            typeAheadFind(static_cast<KeyboardEvent*>(evt));
    561569            evt->setDefaultHandled();
     570            return;
    562571        }
    563572    }
     
    630639void HTMLSelectElement::listBoxDefaultEventHandler(Event* evt)
    631640{
    632     if (!renderer())
     641    if (!renderer() || !renderer()->canSelect())
    633642        return;
    634643
     
    683692            updateListBoxSelection(!multiSelect);
    684693            renderer()->repaint();
     694            evt->setDefaultHandled();
    685695        }
    686696    } else if (evt->type() == mouseupEvent && document()->frame()->eventHandler()->autoscrollRenderer() != renderer())
     
    721731
    722732            static_cast<RenderListBox*>(renderer())->scrollToRevealElementAtListIndex(endIndex);
     733            updateListBoxSelection(deselectOthers);
     734            renderer()->repaint();           
     735            listBoxOnChange();
    723736            evt->setDefaultHandled();
    724             updateListBoxSelection(deselectOthers);
    725             renderer()->repaint();
    726            
    727             listBoxOnChange();
    728737        }
    729738    }
  • trunk/WebCore/html/HTMLSelectElement.h

    r18261 r18338  
    5252    virtual bool isKeyboardFocusable(KeyboardEvent*) const;
    5353    virtual bool isMouseFocusable() const;
    54     virtual bool canSelectAll() const { return !usesMenuList(); }
     54    virtual bool canSelectAll() const;
    5555    virtual void selectAll();
    5656
Note: See TracChangeset for help on using the changeset viewer.