OLD | NEW |
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 1496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1507 searchStartOffset = 0; | 1507 searchStartOffset = 0; |
1508 } | 1508 } |
1509 } | 1509 } |
1510 | 1510 |
1511 const Vector<HTMLElement*>& items = listItems(); | 1511 const Vector<HTMLElement*>& items = listItems(); |
1512 int itemCount = items.size(); | 1512 int itemCount = items.size(); |
1513 if (itemCount < 1) | 1513 if (itemCount < 1) |
1514 return; | 1514 return; |
1515 | 1515 |
1516 int selected = selectedIndex(); | 1516 int selected = selectedIndex(); |
1517 int index = (optionToListIndex(selected >= 0 ? selected : 0) + searchStartOf
fset) % itemCount; | 1517 int index = optionToListIndex(selected >= 0 ? selected : 0) + searchStartOff
set; |
1518 ASSERT(index >= 0); | 1518 if (index < 0) |
| 1519 return; |
| 1520 index %= itemCount; |
1519 | 1521 |
1520 // Compute a case-folded copy of the prefix string before beginning the sear
ch for | 1522 // Compute a case-folded copy of the prefix string before beginning the sear
ch for |
1521 // a matching element. This code uses foldCase to work around the fact that | 1523 // a matching element. This code uses foldCase to work around the fact that |
1522 // String::startWith does not fold non-ASCII characters. This code can be ch
anged | 1524 // String::startWith does not fold non-ASCII characters. This code can be ch
anged |
1523 // to use startWith once that is fixed. | 1525 // to use startWith once that is fixed. |
1524 String prefixWithCaseFolded(prefix.foldCase()); | 1526 String prefixWithCaseFolded(prefix.foldCase()); |
1525 for (int i = 0; i < itemCount; ++i, index = (index + 1) % itemCount) { | 1527 for (int i = 0; i < itemCount; ++i, index = (index + 1) % itemCount) { |
1526 HTMLElement* element = items[index]; | 1528 HTMLElement* element = items[index]; |
1527 if (!element->hasTagName(optionTag) || toHTMLOptionElement(element)->dis
abled()) | 1529 if (!element->hasTagName(optionTag) || toHTMLOptionElement(element)->dis
abled()) |
1528 continue; | 1530 continue; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1601 | 1603 |
1602 const HTMLSelectElement* toHTMLSelectElement(const Node* node) | 1604 const HTMLSelectElement* toHTMLSelectElement(const Node* node) |
1603 { | 1605 { |
1604 ASSERT(!node || node->hasTagName(selectTag)); | 1606 ASSERT(!node || node->hasTagName(selectTag)); |
1605 return static_cast<const HTMLSelectElement*>(node); | 1607 return static_cast<const HTMLSelectElement*>(node); |
1606 } | 1608 } |
1607 | 1609 |
1608 #endif | 1610 #endif |
1609 | 1611 |
1610 } // namespace | 1612 } // namespace |
OLD | NEW |