| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "views/controls/menu/menu_item_view.h" | 5 #include "views/controls/menu/menu_item_view.h" |
| 6 | 6 |
| 7 #include <uxtheme.h> | 7 #include <uxtheme.h> |
| 8 #include <Vssym32.h> | 8 #include <Vssym32.h> |
| 9 | 9 |
| 10 #include "grit/ui_strings.h" | 10 #include "grit/ui_strings.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 control_state = NativeTheme::kDisabled; | 59 control_state = NativeTheme::kDisabled; |
| 60 } | 60 } |
| 61 | 61 |
| 62 // The gutter is rendered before the background. | 62 // The gutter is rendered before the background. |
| 63 if (config.render_gutter && mode == PB_NORMAL) { | 63 if (config.render_gutter && mode == PB_NORMAL) { |
| 64 gfx::Rect gutter_bounds(label_start_ - config.gutter_to_label - | 64 gfx::Rect gutter_bounds(label_start_ - config.gutter_to_label - |
| 65 config.gutter_width, 0, config.gutter_width, | 65 config.gutter_width, 0, config.gutter_width, |
| 66 height()); | 66 height()); |
| 67 AdjustBoundsForRTLUI(&gutter_bounds); | 67 AdjustBoundsForRTLUI(&gutter_bounds); |
| 68 NativeTheme::ExtraParams extra; | 68 NativeTheme::ExtraParams extra; |
| 69 NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), | 69 NativeTheme::instance()->Paint(canvas->GetSkCanvas(), |
| 70 NativeTheme::kMenuPopupGutter, | 70 NativeTheme::kMenuPopupGutter, |
| 71 NativeTheme::kNormal, | 71 NativeTheme::kNormal, |
| 72 gutter_bounds, | 72 gutter_bounds, |
| 73 extra); | 73 extra); |
| 74 } | 74 } |
| 75 | 75 |
| 76 // Render the background. | 76 // Render the background. |
| 77 if (mode == PB_NORMAL) { | 77 if (mode == PB_NORMAL) { |
| 78 gfx::Rect item_bounds(0, 0, width(), height()); | 78 gfx::Rect item_bounds(0, 0, width(), height()); |
| 79 NativeTheme::ExtraParams extra; | 79 NativeTheme::ExtraParams extra; |
| 80 extra.menu_item.is_selected = render_selection; | 80 extra.menu_item.is_selected = render_selection; |
| 81 AdjustBoundsForRTLUI(&item_bounds); | 81 AdjustBoundsForRTLUI(&item_bounds); |
| 82 NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), | 82 NativeTheme::instance()->Paint(canvas->GetSkCanvas(), |
| 83 NativeTheme::kMenuItemBackground, control_state, item_bounds, extra); | 83 NativeTheme::kMenuItemBackground, control_state, item_bounds, extra); |
| 84 } | 84 } |
| 85 | 85 |
| 86 int top_margin = GetTopMargin(); | 86 int top_margin = GetTopMargin(); |
| 87 int bottom_margin = GetBottomMargin(); | 87 int bottom_margin = GetBottomMargin(); |
| 88 | 88 |
| 89 if ((type_ == RADIO || type_ == CHECKBOX) && | 89 if ((type_ == RADIO || type_ == CHECKBOX) && |
| 90 GetDelegate()->IsItemChecked(GetCommand())) { | 90 GetDelegate()->IsItemChecked(GetCommand())) { |
| 91 PaintCheck(canvas, control_state, render_selection ? SELECTED : UNSELECTED, | 91 PaintCheck(canvas, control_state, render_selection ? SELECTED : UNSELECTED, |
| 92 config); | 92 config); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 config.label_to_arrow_padding, 0, | 137 config.label_to_arrow_padding, 0, |
| 138 config.arrow_width, height()); | 138 config.arrow_width, height()); |
| 139 AdjustBoundsForRTLUI(&arrow_bounds); | 139 AdjustBoundsForRTLUI(&arrow_bounds); |
| 140 | 140 |
| 141 // If our sub menus open from right to left (which is the case when the | 141 // If our sub menus open from right to left (which is the case when the |
| 142 // locale is RTL) then we should make sure the menu arrow points to the | 142 // locale is RTL) then we should make sure the menu arrow points to the |
| 143 // right direction. | 143 // right direction. |
| 144 gfx::NativeTheme::ExtraParams extra; | 144 gfx::NativeTheme::ExtraParams extra; |
| 145 extra.menu_arrow.pointing_right = !base::i18n::IsRTL(); | 145 extra.menu_arrow.pointing_right = !base::i18n::IsRTL(); |
| 146 extra.menu_arrow.is_selected = render_selection; | 146 extra.menu_arrow.is_selected = render_selection; |
| 147 gfx::NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), | 147 gfx::NativeTheme::instance()->Paint(canvas->GetSkCanvas(), |
| 148 gfx::NativeTheme::kMenuPopupArrow, control_state, arrow_bounds, extra); | 148 gfx::NativeTheme::kMenuPopupArrow, control_state, arrow_bounds, extra); |
| 149 } | 149 } |
| 150 } | 150 } |
| 151 | 151 |
| 152 void MenuItemView::PaintCheck(gfx::Canvas* canvas, | 152 void MenuItemView::PaintCheck(gfx::Canvas* canvas, |
| 153 NativeTheme::State state, | 153 NativeTheme::State state, |
| 154 SelectionState selection_state, | 154 SelectionState selection_state, |
| 155 const MenuConfig& config) { | 155 const MenuConfig& config) { |
| 156 int icon_width; | 156 int icon_width; |
| 157 int icon_height; | 157 int icon_height; |
| 158 if (type_ == RADIO) { | 158 if (type_ == RADIO) { |
| 159 icon_width = config.radio_width; | 159 icon_width = config.radio_width; |
| 160 icon_height = config.radio_height; | 160 icon_height = config.radio_height; |
| 161 } else { | 161 } else { |
| 162 icon_width = config.check_width; | 162 icon_width = config.check_width; |
| 163 icon_height = config.check_height; | 163 icon_height = config.check_height; |
| 164 } | 164 } |
| 165 | 165 |
| 166 int top_margin = GetTopMargin(); | 166 int top_margin = GetTopMargin(); |
| 167 int icon_x = MenuConfig::instance().item_left_margin; | 167 int icon_x = MenuConfig::instance().item_left_margin; |
| 168 int icon_y = top_margin + | 168 int icon_y = top_margin + |
| 169 (height() - top_margin - GetBottomMargin() - icon_height) / 2; | 169 (height() - top_margin - GetBottomMargin() - icon_height) / 2; |
| 170 NativeTheme::ExtraParams extra; | 170 NativeTheme::ExtraParams extra; |
| 171 extra.menu_check.is_radio = type_ == RADIO; | 171 extra.menu_check.is_radio = type_ == RADIO; |
| 172 extra.menu_check.is_selected = selection_state == SELECTED; | 172 extra.menu_check.is_selected = selection_state == SELECTED; |
| 173 | 173 |
| 174 // Draw the background. | 174 // Draw the background. |
| 175 gfx::Rect bg_bounds(0, 0, icon_x + icon_width, height()); | 175 gfx::Rect bg_bounds(0, 0, icon_x + icon_width, height()); |
| 176 AdjustBoundsForRTLUI(&bg_bounds); | 176 AdjustBoundsForRTLUI(&bg_bounds); |
| 177 NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), | 177 NativeTheme::instance()->Paint(canvas->GetSkCanvas(), |
| 178 NativeTheme::kMenuCheckBackground, state, bg_bounds, extra); | 178 NativeTheme::kMenuCheckBackground, state, bg_bounds, extra); |
| 179 | 179 |
| 180 // And the check. | 180 // And the check. |
| 181 gfx::Rect icon_bounds(icon_x / 2, icon_y, icon_width, icon_height); | 181 gfx::Rect icon_bounds(icon_x / 2, icon_y, icon_width, icon_height); |
| 182 AdjustBoundsForRTLUI(&icon_bounds); | 182 AdjustBoundsForRTLUI(&icon_bounds); |
| 183 NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), | 183 NativeTheme::instance()->Paint(canvas->GetSkCanvas(), |
| 184 NativeTheme::kMenuCheck, state, bg_bounds, extra); | 184 NativeTheme::kMenuCheck, state, bg_bounds, extra); |
| 185 } | 185 } |
| 186 | 186 |
| 187 } // namespace views | 187 } // namespace views |
| OLD | NEW |