| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of the select element layoutObject in WebCore. | 2 * This file is part of the select element layoutObject in WebCore. |
| 3 * | 3 * |
| 4 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). | 4 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
| 5 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. | 5 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. |
| 6 * 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 6 * 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 // We don't use absoluteBoundingBoxRect() because it can return an IntRect | 393 // We don't use absoluteBoundingBoxRect() because it can return an IntRect |
| 394 // larger the actual size by 1px. | 394 // larger the actual size by 1px. |
| 395 return selectElement()->document().view()->contentsToViewport(roundedIntRect
(absoluteBoundingBoxFloatRect())); | 395 return selectElement()->document().view()->contentsToViewport(roundedIntRect
(absoluteBoundingBoxFloatRect())); |
| 396 } | 396 } |
| 397 | 397 |
| 398 Element& LayoutMenuList::ownerElement() const | 398 Element& LayoutMenuList::ownerElement() const |
| 399 { | 399 { |
| 400 return *selectElement(); | 400 return *selectElement(); |
| 401 } | 401 } |
| 402 | 402 |
| 403 const ComputedStyle* LayoutMenuList::computedStyleForItem(Element& element) cons
t | |
| 404 { | |
| 405 return element.computedStyle() ? element.computedStyle() : element.ensureCom
putedStyle(); | |
| 406 } | |
| 407 | |
| 408 const ComputedStyle* LayoutMenuList::computedStyleForItem(unsigned listIndex) co
nst | 403 const ComputedStyle* LayoutMenuList::computedStyleForItem(unsigned listIndex) co
nst |
| 409 { | 404 { |
| 410 Element& element = *selectElement()->listItems()[listIndex]; | 405 Element& element = *selectElement()->listItems()[listIndex]; |
| 411 return element.computedStyle() ? element.computedStyle() : element.ensureCom
putedStyle(); | 406 return element.computedStyle() ? element.computedStyle() : element.ensureCom
putedStyle(); |
| 412 } | 407 } |
| 413 | 408 |
| 414 void LayoutMenuList::didSetSelectedIndex(int listIndex) | 409 void LayoutMenuList::didSetSelectedIndex(int listIndex) |
| 415 { | 410 { |
| 416 didUpdateActiveOption(selectElement()->listToOptionIndex(listIndex)); | 411 didUpdateActiveOption(selectElement()->listToOptionIndex(listIndex)); |
| 417 } | 412 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 433 // We skip sending accessiblity notifications for the very first option, oth
erwise | 428 // We skip sending accessiblity notifications for the very first option, oth
erwise |
| 434 // we get extra focus and select events that are undesired. | 429 // we get extra focus and select events that are undesired. |
| 435 if (!m_hasUpdatedActiveOption) { | 430 if (!m_hasUpdatedActiveOption) { |
| 436 m_hasUpdatedActiveOption = true; | 431 m_hasUpdatedActiveOption = true; |
| 437 return; | 432 return; |
| 438 } | 433 } |
| 439 | 434 |
| 440 document().existingAXObjectCache()->handleUpdateActiveMenuOption(this, optio
nIndex); | 435 document().existingAXObjectCache()->handleUpdateActiveMenuOption(this, optio
nIndex); |
| 441 } | 436 } |
| 442 | 437 |
| 438 Element& LayoutMenuList::itemElement(unsigned listIndex) const |
| 439 { |
| 440 return *selectElement()->listItems()[listIndex]; |
| 441 } |
| 442 |
| 443 String LayoutMenuList::itemText(unsigned listIndex) const | 443 String LayoutMenuList::itemText(unsigned listIndex) const |
| 444 { | 444 { |
| 445 HTMLSelectElement* select = selectElement(); | 445 HTMLSelectElement* select = selectElement(); |
| 446 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& listItems = select-
>listItems(); | 446 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& listItems = select-
>listItems(); |
| 447 if (listIndex >= listItems.size()) | 447 if (listIndex >= listItems.size()) |
| 448 return String(); | 448 return String(); |
| 449 | 449 |
| 450 String itemString; | 450 String itemString; |
| 451 Element* element = listItems[listIndex]; | 451 Element* element = listItems[listIndex]; |
| 452 if (isHTMLOptGroupElement(*element)) | 452 if (isHTMLOptGroupElement(*element)) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 return false; | 493 return false; |
| 494 | 494 |
| 495 return !element->isDisabledFormControl(); | 495 return !element->isDisabledFormControl(); |
| 496 } | 496 } |
| 497 | 497 |
| 498 bool LayoutMenuList::itemIsDisplayNone(unsigned listIndex) const | 498 bool LayoutMenuList::itemIsDisplayNone(unsigned listIndex) const |
| 499 { | 499 { |
| 500 Element& element = *selectElement()->listItems()[listIndex]; | 500 Element& element = *selectElement()->listItems()[listIndex]; |
| 501 if (isHTMLOptionElement(element)) | 501 if (isHTMLOptionElement(element)) |
| 502 return toHTMLOptionElement(element).isDisplayNone(); | 502 return toHTMLOptionElement(element).isDisplayNone(); |
| 503 if (const ComputedStyle* style = computedStyleForItem(element)) | 503 if (const ComputedStyle* style = computedStyleForItem(listIndex)) |
| 504 return style->display() == NONE; | 504 return style->display() == NONE; |
| 505 return false; | 505 return false; |
| 506 } | 506 } |
| 507 | 507 |
| 508 LayoutUnit LayoutMenuList::clientPaddingLeft() const | 508 LayoutUnit LayoutMenuList::clientPaddingLeft() const |
| 509 { | 509 { |
| 510 return paddingLeft() + m_innerBlock->paddingLeft(); | 510 return paddingLeft() + m_innerBlock->paddingLeft(); |
| 511 } | 511 } |
| 512 | 512 |
| 513 const int endOfLinePadding = 2; | 513 const int endOfLinePadding = 2; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 HTMLElement* element = listItems[listIndex]; | 570 HTMLElement* element = listItems[listIndex]; |
| 571 return isHTMLOptionElement(*element) && toHTMLOptionElement(*element).select
ed(); | 571 return isHTMLOptionElement(*element) && toHTMLOptionElement(*element).select
ed(); |
| 572 } | 572 } |
| 573 | 573 |
| 574 void LayoutMenuList::provisionalSelectionChanged(unsigned listIndex) | 574 void LayoutMenuList::provisionalSelectionChanged(unsigned listIndex) |
| 575 { | 575 { |
| 576 setIndexToSelectOnCancel(listIndex); | 576 setIndexToSelectOnCancel(listIndex); |
| 577 } | 577 } |
| 578 | 578 |
| 579 } // namespace blink | 579 } // namespace blink |
| OLD | NEW |