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

Side by Side Diff: Source/core/rendering/RenderMenuList.cpp

Issue 19697011: Change rendering code to use RenderObject::resolveColor (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 months 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 * This file is part of the select element renderer in WebCore. 2 * This file is part of the select element renderer 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 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 // Try to retrieve the style of an option element we know exists (index 0). 468 // Try to retrieve the style of an option element we know exists (index 0).
469 listIndex = 0; 469 listIndex = 0;
470 } 470 }
471 HTMLElement* element = listItems[listIndex]; 471 HTMLElement* element = listItems[listIndex];
472 472
473 Color itemBackgroundColor; 473 Color itemBackgroundColor;
474 bool itemHasCustomBackgroundColor; 474 bool itemHasCustomBackgroundColor;
475 getItemBackgroundColor(listIndex, itemBackgroundColor, itemHasCustomBackgrou ndColor); 475 getItemBackgroundColor(listIndex, itemBackgroundColor, itemHasCustomBackgrou ndColor);
476 476
477 RenderStyle* style = element->renderStyle() ? element->renderStyle() : eleme nt->computedStyle(); 477 RenderStyle* style = element->renderStyle() ? element->renderStyle() : eleme nt->computedStyle();
478 return style ? PopupMenuStyle(style->visitedDependentColor(CSSPropertyColor) , itemBackgroundColor, style->font(), style->visibility() == VISIBLE, 478 return style ? PopupMenuStyle(resolveColor(style, CSSPropertyColor), itemBac kgroundColor, style->font(), style->visibility() == VISIBLE,
479 style->display() == NONE, style->textIndent(), style->direction(), isOve rride(style->unicodeBidi()), 479 style->display() == NONE, style->textIndent(), style->direction(), isOve rride(style->unicodeBidi()),
480 itemHasCustomBackgroundColor ? PopupMenuStyle::CustomBackgroundColor : P opupMenuStyle::DefaultBackgroundColor) : menuStyle(); 480 itemHasCustomBackgroundColor ? PopupMenuStyle::CustomBackgroundColor : P opupMenuStyle::DefaultBackgroundColor) : menuStyle();
481 } 481 }
482 482
483 void RenderMenuList::getItemBackgroundColor(unsigned listIndex, Color& itemBackg roundColor, bool& itemHasCustomBackgroundColor) const 483 void RenderMenuList::getItemBackgroundColor(unsigned listIndex, Color& itemBackg roundColor, bool& itemHasCustomBackgroundColor) const
484 { 484 {
485 const Vector<HTMLElement*>& listItems = selectElement()->listItems(); 485 const Vector<HTMLElement*>& listItems = selectElement()->listItems();
486 if (listIndex >= listItems.size()) { 486 if (listIndex >= listItems.size()) {
487 itemBackgroundColor = style()->visitedDependentColor(CSSPropertyBackgrou ndColor); 487 itemBackgroundColor = resolveColor(CSSPropertyBackgroundColor);
488 itemHasCustomBackgroundColor = false; 488 itemHasCustomBackgroundColor = false;
489 return; 489 return;
490 } 490 }
491 HTMLElement* element = listItems[listIndex]; 491 HTMLElement* element = listItems[listIndex];
492 492
493 Color backgroundColor; 493 Color backgroundColor;
494 if (element->renderStyle()) 494 if (element->renderStyle())
495 backgroundColor = element->renderStyle()->visitedDependentColor(CSSPrope rtyBackgroundColor); 495 backgroundColor = resolveColor(element->renderStyle(), CSSPropertyBackgr oundColor);
496 itemHasCustomBackgroundColor = backgroundColor.isValid() && backgroundColor. alpha(); 496 itemHasCustomBackgroundColor = backgroundColor.isValid() && backgroundColor. alpha();
497 // If the item has an opaque background color, return that. 497 // If the item has an opaque background color, return that.
498 if (!backgroundColor.hasAlpha()) { 498 if (!backgroundColor.hasAlpha()) {
499 itemBackgroundColor = backgroundColor; 499 itemBackgroundColor = backgroundColor;
500 return; 500 return;
501 } 501 }
502 502
503 // Otherwise, the item's background is overlayed on top of the menu backgrou nd. 503 // Otherwise, the item's background is overlayed on top of the menu backgrou nd.
504 backgroundColor = style()->visitedDependentColor(CSSPropertyBackgroundColor) .blend(backgroundColor); 504 backgroundColor = resolveColor(CSSPropertyBackgroundColor).blend(backgroundC olor);
505 if (!backgroundColor.hasAlpha()) { 505 if (!backgroundColor.hasAlpha()) {
506 itemBackgroundColor = backgroundColor; 506 itemBackgroundColor = backgroundColor;
507 return; 507 return;
508 } 508 }
509 509
510 // If the menu background is not opaque, then add an opaque white background behind. 510 // If the menu background is not opaque, then add an opaque white background behind.
511 itemBackgroundColor = Color(Color::white).blend(backgroundColor); 511 itemBackgroundColor = Color(Color::white).blend(backgroundColor);
512 } 512 }
513 513
514 PopupMenuStyle RenderMenuList::menuStyle() const 514 PopupMenuStyle RenderMenuList::menuStyle() const
515 { 515 {
516 RenderStyle* s = m_innerBlock ? m_innerBlock->style() : style(); 516 const RenderObject* o = m_innerBlock ? m_innerBlock : this;
517 return PopupMenuStyle(s->visitedDependentColor(CSSPropertyColor), s->visited DependentColor(CSSPropertyBackgroundColor), s->font(), s->visibility() == VISIBL E, 517 const RenderStyle* s = o->style();
518 return PopupMenuStyle(o->resolveColor(CSSPropertyColor), o->resolveColor(CSS PropertyBackgroundColor), s->font(), s->visibility() == VISIBLE,
518 s->display() == NONE, s->textIndent(), style()->direction(), isOverride( style()->unicodeBidi())); 519 s->display() == NONE, s->textIndent(), style()->direction(), isOverride( style()->unicodeBidi()));
519 } 520 }
520 521
521 HostWindow* RenderMenuList::hostWindow() const 522 HostWindow* RenderMenuList::hostWindow() const
522 { 523 {
523 return document()->view()->hostWindow(); 524 return document()->view()->hostWindow();
524 } 525 }
525 526
526 PassRefPtr<Scrollbar> RenderMenuList::createScrollbar(ScrollableArea* scrollable Area, ScrollbarOrientation orientation, ScrollbarControlSize controlSize) 527 PassRefPtr<Scrollbar> RenderMenuList::createScrollbar(ScrollableArea* scrollable Area, ScrollbarOrientation orientation, ScrollbarControlSize controlSize)
527 { 528 {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 { 607 {
607 setTextFromOption(selectElement()->listToOptionIndex(listIndex)); 608 setTextFromOption(selectElement()->listToOptionIndex(listIndex));
608 } 609 }
609 610
610 FontSelector* RenderMenuList::fontSelector() const 611 FontSelector* RenderMenuList::fontSelector() const
611 { 612 {
612 return document()->styleResolver()->fontSelector(); 613 return document()->styleResolver()->fontSelector();
613 } 614 }
614 615
615 } 616 }
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderListMarker.cpp ('k') | Source/core/rendering/RenderMultiColumnSet.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698