Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Side by Side Diff: Source/core/html/HTMLSelectElement.cpp

Issue 782793002: Update Element API for CSSOM smooth scrolling to match the spec (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
4 * (C) 1999 Antti Koivisto (koivisto@kde.org) 4 * (C) 1999 Antti Koivisto (koivisto@kde.org)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved.
7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
8 * Copyright (C) 2010 Google Inc. All rights reserved. 8 * Copyright (C) 2010 Google Inc. All rights reserved.
9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
10 * 10 *
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 dispatchFormControlChangeEvent(); 729 dispatchFormControlChangeEvent();
730 } 730 }
731 } 731 }
732 732
733 void HTMLSelectElement::scrollToSelection() 733 void HTMLSelectElement::scrollToSelection()
734 { 734 {
735 if (!isFinishedParsingChildren()) 735 if (!isFinishedParsingChildren())
736 return; 736 return;
737 if (usesMenuList()) 737 if (usesMenuList())
738 return; 738 return;
739 scrollTo(activeSelectionEndListIndex()); 739 scrollToIndex(activeSelectionEndListIndex());
740 if (AXObjectCache* cache = document().existingAXObjectCache()) 740 if (AXObjectCache* cache = document().existingAXObjectCache())
741 cache->selectedChildrenChanged(this); 741 cache->selectedChildrenChanged(this);
742 } 742 }
743 743
744 void HTMLSelectElement::setOptionsChangedOnRenderer() 744 void HTMLSelectElement::setOptionsChangedOnRenderer()
745 { 745 {
746 if (RenderObject* renderer = this->renderer()) { 746 if (RenderObject* renderer = this->renderer()) {
747 if (usesMenuList()) 747 if (usesMenuList())
748 toRenderMenuList(renderer)->setOptionsChanged(true); 748 toRenderMenuList(renderer)->setOptionsChanged(true);
749 } 749 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 { 880 {
881 return m_suggestedIndex; 881 return m_suggestedIndex;
882 } 882 }
883 883
884 void HTMLSelectElement::setSuggestedIndex(int suggestedIndex) 884 void HTMLSelectElement::setSuggestedIndex(int suggestedIndex)
885 { 885 {
886 m_suggestedIndex = suggestedIndex; 886 m_suggestedIndex = suggestedIndex;
887 887
888 if (RenderObject* renderer = this->renderer()) { 888 if (RenderObject* renderer = this->renderer()) {
889 renderer->updateFromElement(); 889 renderer->updateFromElement();
890 scrollTo(suggestedIndex); 890 scrollToIndex(suggestedIndex);
891 } 891 }
892 } 892 }
893 893
894 void HTMLSelectElement::scrollTo(int listIndex) 894 void HTMLSelectElement::scrollToIndex(int listIndex)
895 { 895 {
896 if (listIndex < 0) 896 if (listIndex < 0)
897 return; 897 return;
898 if (usesMenuList()) 898 if (usesMenuList())
899 return; 899 return;
900 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& items = listItems() ; 900 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& items = listItems() ;
901 int listSize = static_cast<int>(items.size()); 901 int listSize = static_cast<int>(items.size());
902 if (listIndex >= listSize) 902 if (listIndex >= listSize)
903 return; 903 return;
904 document().updateLayoutIgnorePendingStylesheets(); 904 document().updateLayoutIgnorePendingStylesheets();
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after
1565 m_activeSelectionState = true; 1565 m_activeSelectionState = true;
1566 // If the anchor is unitialized, or if we're going to deselect all 1566 // If the anchor is unitialized, or if we're going to deselect all
1567 // other options, then set the anchor index equal to the end index. 1567 // other options, then set the anchor index equal to the end index.
1568 bool deselectOthers = !m_multiple || (!toKeyboardEvent(event)->shift Key() && selectNewItem); 1568 bool deselectOthers = !m_multiple || (!toKeyboardEvent(event)->shift Key() && selectNewItem);
1569 if (m_activeSelectionAnchorIndex < 0 || deselectOthers) { 1569 if (m_activeSelectionAnchorIndex < 0 || deselectOthers) {
1570 if (deselectOthers) 1570 if (deselectOthers)
1571 deselectItemsWithoutValidation(); 1571 deselectItemsWithoutValidation();
1572 setActiveSelectionAnchorIndex(m_activeSelectionEndIndex); 1572 setActiveSelectionAnchorIndex(m_activeSelectionEndIndex);
1573 } 1573 }
1574 1574
1575 scrollTo(endIndex); 1575 scrollToIndex(endIndex);
1576 if (selectNewItem) { 1576 if (selectNewItem) {
1577 updateListBoxSelection(deselectOthers); 1577 updateListBoxSelection(deselectOthers);
1578 listBoxOnChange(); 1578 listBoxOnChange();
1579 } else 1579 } else
1580 scrollToSelection(); 1580 scrollToSelection();
1581 1581
1582 event->setDefaultHandled(); 1582 event->setDefaultHandled();
1583 } 1583 }
1584 } else if (event->type() == EventTypeNames::keypress) { 1584 } else if (event->type() == EventTypeNames::keypress) {
1585 if (!event->isKeyboardEvent()) 1585 if (!event->isKeyboardEvent())
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
1774 int focusedIndex = activeSelectionEndListIndex(); 1774 int focusedIndex = activeSelectionEndListIndex();
1775 if (focusedIndex < 0) 1775 if (focusedIndex < 0)
1776 focusedIndex = firstSelectableListIndex(); 1776 focusedIndex = firstSelectableListIndex();
1777 if (focusedIndex < 0) 1777 if (focusedIndex < 0)
1778 return nullptr; 1778 return nullptr;
1779 HTMLElement* focused = listItems()[focusedIndex]; 1779 HTMLElement* focused = listItems()[focusedIndex];
1780 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr ; 1780 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr ;
1781 } 1781 }
1782 1782
1783 } // namespace 1783 } // namespace
OLDNEW
« Source/core/html/HTMLBodyElement.cpp ('K') | « Source/core/html/HTMLSelectElement.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698