| Index: views/examples/native_theme_button_example.cc
|
| ===================================================================
|
| --- views/examples/native_theme_button_example.cc (revision 90205)
|
| +++ views/examples/native_theme_button_example.cc (working copy)
|
| @@ -137,13 +137,17 @@
|
| }
|
|
|
| gfx::Rect ExampleNativeThemeButton::GetThemePaintRect() const {
|
| - return GetLocalBounds();
|
| + gfx::NativeTheme::ExtraParams extra;
|
| + gfx::NativeTheme::State state = GetThemeState(&extra);
|
| + gfx::Size size(gfx::NativeTheme::instance()->GetPartSize(GetThemePart(),
|
| + state,
|
| + extra));
|
| + gfx::Rect rect(size);
|
| + rect.set_x(GetMirroredXForRect(rect));
|
| + return rect;
|
| }
|
|
|
| -gfx::NativeTheme::State ExampleNativeThemeButton::GetThemeState(
|
| - gfx::NativeTheme::ExtraParams* params) const {
|
| - GetExtraParams(params);
|
| -
|
| +gfx::NativeTheme::State ExampleNativeThemeButton::GetInternalState() const {
|
| int selected = cb_state_->selected_item();
|
| if (selected > 3) {
|
| switch(state()) {
|
| @@ -175,6 +179,12 @@
|
| return gfx::NativeTheme::kNormal;
|
| }
|
|
|
| +gfx::NativeTheme::State ExampleNativeThemeButton::GetThemeState(
|
| + gfx::NativeTheme::ExtraParams* params) const {
|
| + GetExtraParams(params);
|
| + return GetInternalState();
|
| +}
|
| +
|
| void ExampleNativeThemeButton::GetExtraParams(
|
| gfx::NativeTheme::ExtraParams* params) const {
|
|
|
| @@ -184,6 +194,39 @@
|
| params->button.has_border = false;
|
| params->button.classic_state = 0;
|
| params->button.background_color = SkColorSetARGB(0, 0, 0, 0);
|
| +
|
| +#if defined(OS_WIN)
|
| + gfx::NativeTheme::Part part = GetThemePart();
|
| + switch(part) {
|
| + case gfx::NativeTheme::kPushButton:
|
| + params->button.classic_state = DFCS_BUTTONPUSH;
|
| + break;
|
| + case gfx::NativeTheme::kRadio:
|
| + params->button.classic_state = DFCS_BUTTONRADIO;
|
| + params->button.classic_state |= is_checked_ ? DFCS_CHECKED : 0;
|
| + break;
|
| + case gfx::NativeTheme::kCheckbox:
|
| + params->button.classic_state = DFCS_BUTTONCHECK;
|
| + params->button.classic_state |= is_checked_ ? DFCS_CHECKED : 0;
|
| + break;
|
| + }
|
| +
|
| + gfx::NativeTheme::State state = GetInternalState();
|
| + switch(state) {
|
| + case gfx::NativeTheme::kDisabled:
|
| + params->button.classic_state |= DFCS_INACTIVE;
|
| + break;
|
| + case gfx::NativeTheme::kNormal:
|
| + break;
|
| + case gfx::NativeTheme::kHovered:
|
| + break;
|
| + case gfx::NativeTheme::kPressed:
|
| + params->button.classic_state |= DFCS_PUSHED;
|
| + break;
|
| + default:
|
| + DCHECK(false);
|
| + }
|
| +#endif
|
| }
|
|
|
| const ui::Animation* ExampleNativeThemeButton::GetThemeAnimation() const {
|
| @@ -194,12 +237,18 @@
|
| gfx::NativeTheme::State ExampleNativeThemeButton::GetBackgroundThemeState(
|
| gfx::NativeTheme::ExtraParams* params) const {
|
| GetExtraParams(params);
|
| +#if defined(OS_WIN)
|
| + params->button.classic_state &= ~(DFCS_PUSHED | DFCS_INACTIVE);
|
| +#endif
|
| return gfx::NativeTheme::kNormal;
|
| }
|
|
|
| gfx::NativeTheme::State ExampleNativeThemeButton::GetForegroundThemeState(
|
| gfx::NativeTheme::ExtraParams* params) const {
|
| GetExtraParams(params);
|
| +#if defined(OS_WIN)
|
| + params->button.classic_state &= ~(DFCS_PUSHED | DFCS_INACTIVE);
|
| +#endif
|
| return gfx::NativeTheme::kHovered;
|
| }
|
|
|
|
|