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

Unified Diff: views/examples/native_theme_button_example.cc

Issue 7196002: Fix checkbox in windows uninstaller. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fix trybot break in chromeos Created 9 years, 6 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 side-by-side diff with in-line comments
Download patch
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;
}
« views/controls/button/radio_button.cc ('K') | « views/examples/native_theme_button_example.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698