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

Side by Side Diff: ui/gfx/native_theme_linux.cc

Issue 6490014: Make the size of menulists on Linux the same size as on Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: handle border radius Created 9 years, 10 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
« no previous file with comments | « ui/gfx/native_theme_linux.h ('k') | webkit/glue/webthemeengine_impl_linux.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/native_theme_linux.h" 5 #include "ui/gfx/native_theme_linux.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "grit/gfx_resources.h" 10 #include "grit/gfx_resources.h"
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 SkColor light_color(BrightenColor(base_hsl, SkColorGetA(base_color), 0.105)); 468 SkColor light_color(BrightenColor(base_hsl, SkColorGetA(base_color), 0.105));
469 469
470 // If the button is too small, fallback to drawing a single, solid color 470 // If the button is too small, fallback to drawing a single, solid color
471 if (rect.width() < 5 || rect.height() < 5) { 471 if (rect.width() < 5 || rect.height() < 5) {
472 paint.setColor(base_color); 472 paint.setColor(base_color);
473 skrect.set(rect.x(), rect.y(), kRight, kBottom); 473 skrect.set(rect.x(), rect.y(), kRight, kBottom);
474 canvas->drawRect(skrect, paint); 474 canvas->drawRect(skrect, paint);
475 return; 475 return;
476 } 476 }
477 477
478 const int kBorderAlpha = state == kHovered ? 0x80 : 0x55; 478 if (button.has_border) {
479 paint.setARGB(kBorderAlpha, 0, 0, 0); 479 const int kBorderAlpha = state == kHovered ? 0x80 : 0x55;
480 canvas->drawLine(rect.x() + 1, rect.y(), kRight - 1, rect.y(), paint); 480 paint.setARGB(kBorderAlpha, 0, 0, 0);
481 canvas->drawLine(kRight - 1, rect.y() + 1, kRight - 1, kBottom - 1, paint); 481 canvas->drawLine(rect.x() + 1, rect.y(), kRight - 1, rect.y(), paint);
482 canvas->drawLine(rect.x() + 1, kBottom - 1, kRight - 1, kBottom - 1, paint); 482 canvas->drawLine(kRight - 1, rect.y() + 1, kRight - 1, kBottom - 1, paint);
483 canvas->drawLine(rect.x(), rect.y() + 1, rect.x(), kBottom - 1, paint); 483 canvas->drawLine(rect.x() + 1, kBottom - 1, kRight - 1, kBottom - 1, paint);
484 canvas->drawLine(rect.x(), rect.y() + 1, rect.x(), kBottom - 1, paint);
485 }
484 486
485 paint.setColor(SK_ColorBLACK); 487 paint.setColor(SK_ColorBLACK);
486 const int kLightEnd = state == kPressed ? 1 : 0; 488 const int kLightEnd = state == kPressed ? 1 : 0;
487 const int kDarkEnd = !kLightEnd; 489 const int kDarkEnd = !kLightEnd;
488 SkPoint gradient_bounds[2]; 490 SkPoint gradient_bounds[2];
489 gradient_bounds[kLightEnd].set(SkIntToScalar(rect.x()), 491 gradient_bounds[kLightEnd].set(SkIntToScalar(rect.x()),
490 SkIntToScalar(rect.y())); 492 SkIntToScalar(rect.y()));
491 gradient_bounds[kDarkEnd].set(SkIntToScalar(rect.x()), 493 gradient_bounds[kDarkEnd].set(SkIntToScalar(rect.x()),
492 SkIntToScalar(kBottom - 1)); 494 SkIntToScalar(kBottom - 1));
493 SkColor colors[2]; 495 SkColor colors[2];
494 colors[0] = light_color; 496 colors[0] = light_color;
495 colors[1] = base_color; 497 colors[1] = base_color;
496 498
497 SkShader* shader = SkGradientShader::CreateLinear( 499 SkShader* shader = SkGradientShader::CreateLinear(
498 gradient_bounds, colors, NULL, 2, SkShader::kClamp_TileMode, NULL); 500 gradient_bounds, colors, NULL, 2, SkShader::kClamp_TileMode, NULL);
499 paint.setStyle(SkPaint::kFill_Style); 501 paint.setStyle(SkPaint::kFill_Style);
500 paint.setShader(shader); 502 paint.setShader(shader);
501 shader->unref(); 503 shader->unref();
502 504
503 skrect.set(rect.x() + 1, rect.y() + 1, kRight - 1, kBottom - 1); 505 if (button.has_border) {
506 skrect.set(rect.x() + 1, rect.y() + 1, kRight - 1, kBottom - 1);
507 } else {
508 skrect.set(rect.x(), rect.y(), kRight, kBottom);
509 }
504 canvas->drawRect(skrect, paint); 510 canvas->drawRect(skrect, paint);
511 paint.setShader(NULL);
505 512
506 paint.setShader(NULL); 513 if (button.has_border) {
507 paint.setColor(BrightenColor(base_hsl, SkColorGetA(base_color), -0.0588)); 514 paint.setColor(BrightenColor(base_hsl, SkColorGetA(base_color), -0.0588));
508 canvas->drawPoint(rect.x() + 1, rect.y() + 1, paint); 515 canvas->drawPoint(rect.x() + 1, rect.y() + 1, paint);
509 canvas->drawPoint(kRight - 2, rect.y() + 1, paint); 516 canvas->drawPoint(kRight - 2, rect.y() + 1, paint);
510 canvas->drawPoint(rect.x() + 1, kBottom - 2, paint); 517 canvas->drawPoint(rect.x() + 1, kBottom - 2, paint);
511 canvas->drawPoint(kRight - 2, kBottom - 2, paint); 518 canvas->drawPoint(kRight - 2, kBottom - 2, paint);
519 }
512 } 520 }
513 521
514 void NativeThemeLinux::PaintTextField(skia::PlatformCanvas* canvas, 522 void NativeThemeLinux::PaintTextField(skia::PlatformCanvas* canvas,
515 State state, 523 State state,
516 const gfx::Rect& rect, 524 const gfx::Rect& rect,
517 const TextFieldExtraParams& text) { 525 const TextFieldExtraParams& text) {
518 // The following drawing code simulates the user-agent css border for 526 // The following drawing code simulates the user-agent css border for
519 // text area and text input so that we do not break layout tests. Once we 527 // text area and text input so that we do not break layout tests. Once we
520 // have decided the desired looks, we should update the code here and 528 // have decided the desired looks, we should update the code here and
521 // the layout test expectations. 529 // the layout test expectations.
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 path.lineTo(SkIntToScalar(right), SkIntToScalar(bottom)); 606 path.lineTo(SkIntToScalar(right), SkIntToScalar(bottom));
599 path.lineTo(SkIntToScalar(right), SkIntToScalar(top)); 607 path.lineTo(SkIntToScalar(right), SkIntToScalar(top));
600 canvas->drawPath(path, light_paint); 608 canvas->drawPath(path, light_paint);
601 } 609 }
602 } 610 }
603 611
604 void NativeThemeLinux::PaintMenuList(skia::PlatformCanvas* canvas, 612 void NativeThemeLinux::PaintMenuList(skia::PlatformCanvas* canvas,
605 State state, 613 State state,
606 const gfx::Rect& rect, 614 const gfx::Rect& rect,
607 const MenuListExtraParams& menu_list) { 615 const MenuListExtraParams& menu_list) {
608 ButtonExtraParams button = { 0 }; 616 // If a border radius is specified, we let the WebCore paint the background
609 button.background_color = menu_list.background_color; 617 // and the border of the control.
610 PaintButton(canvas, state, rect, button); 618 if (!menu_list.has_border_radius) {
619 ButtonExtraParams button = { 0 };
620 button.background_color = menu_list.background_color;
621 button.has_border = menu_list.has_border;
622 PaintButton(canvas, state, rect, button);
623 }
611 624
612 SkPaint paint; 625 SkPaint paint;
613 paint.setColor(SK_ColorBLACK); 626 paint.setColor(SK_ColorBLACK);
614 paint.setAntiAlias(true); 627 paint.setAntiAlias(true);
615 paint.setStyle(SkPaint::kFill_Style); 628 paint.setStyle(SkPaint::kFill_Style);
616 629
617 SkPath path; 630 SkPath path;
618 path.moveTo(menu_list.arrow_x, menu_list.arrow_y - 3); 631 path.moveTo(menu_list.arrow_x, menu_list.arrow_y - 3);
619 path.rLineTo(6, 0); 632 path.rLineTo(6, 0);
620 path.rLineTo(-3, 6); 633 path.rLineTo(-3, 6);
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 945
933 void NativeThemeLinux::SetScrollbarColors(unsigned inactive_color, 946 void NativeThemeLinux::SetScrollbarColors(unsigned inactive_color,
934 unsigned active_color, 947 unsigned active_color,
935 unsigned track_color) const { 948 unsigned track_color) const {
936 thumb_inactive_color_ = inactive_color; 949 thumb_inactive_color_ = inactive_color;
937 thumb_active_color_ = active_color; 950 thumb_active_color_ = active_color;
938 track_color_ = track_color; 951 track_color_ = track_color;
939 } 952 }
940 953
941 } // namespace gfx 954 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/native_theme_linux.h ('k') | webkit/glue/webthemeengine_impl_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698