OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/ui/views/toolbar/toolbar_button.h" | 5 #include "chrome/browser/ui/views/toolbar/toolbar_button.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 ToolbarButton::CreateDefaultBorder() const { | 166 ToolbarButton::CreateDefaultBorder() const { |
167 scoped_ptr<views::LabelButtonBorder> border = | 167 scoped_ptr<views::LabelButtonBorder> border = |
168 views::LabelButton::CreateDefaultBorder(); | 168 views::LabelButton::CreateDefaultBorder(); |
169 | 169 |
170 if (ThemeServiceFactory::GetForProfile(profile_)->UsingSystemTheme()) | 170 if (ThemeServiceFactory::GetForProfile(profile_)->UsingSystemTheme()) |
171 border->set_insets(GetLayoutInsets(TOOLBAR_BUTTON)); | 171 border->set_insets(GetLayoutInsets(TOOLBAR_BUTTON)); |
172 | 172 |
173 return border.Pass(); | 173 return border.Pass(); |
174 } | 174 } |
175 | 175 |
176 void ToolbarButton::ShowContextMenuForView(View* source, | |
177 const gfx::Point& point, | |
178 ui::MenuSourceType source_type) { | |
179 if (!enabled()) | |
180 return; | |
181 | |
182 show_menu_factory_.InvalidateWeakPtrs(); | |
183 ShowDropDownMenu(source_type); | |
184 } | |
185 | |
186 void ToolbarButton::AddInkDropLayer(ui::Layer* ink_drop_layer) { | 176 void ToolbarButton::AddInkDropLayer(ui::Layer* ink_drop_layer) { |
187 SetPaintToLayer(true); | 177 SetPaintToLayer(true); |
188 SetFillsBoundsOpaquely(false); | 178 SetFillsBoundsOpaquely(false); |
189 image()->SetPaintToLayer(true); | 179 image()->SetPaintToLayer(true); |
190 image()->SetFillsBoundsOpaquely(false); | 180 image()->SetFillsBoundsOpaquely(false); |
191 | 181 |
192 layer()->Add(ink_drop_layer); | 182 layer()->Add(ink_drop_layer); |
193 layer()->StackAtBottom(ink_drop_layer); | 183 layer()->StackAtBottom(ink_drop_layer); |
194 | 184 |
195 // Invalidates the contents of the parent's layer which may contain | 185 // Invalidates the contents of the parent's layer which may contain |
196 // a stale close/reload icon that should not remain visible. | 186 // a stale close/reload icon that should not remain visible. |
197 parent()->SchedulePaint(); | 187 parent()->SchedulePaint(); |
198 } | 188 } |
199 | 189 |
200 void ToolbarButton::RemoveInkDropLayer(ui::Layer* ink_drop_layer) { | 190 void ToolbarButton::RemoveInkDropLayer(ui::Layer* ink_drop_layer) { |
201 layer()->Remove(ink_drop_layer); | 191 layer()->Remove(ink_drop_layer); |
202 | 192 |
203 image()->SetFillsBoundsOpaquely(true); | 193 image()->SetFillsBoundsOpaquely(true); |
204 image()->SetPaintToLayer(false); | 194 image()->SetPaintToLayer(false); |
205 SetPaintToLayer(false); | 195 SetPaintToLayer(false); |
206 } | 196 } |
207 | 197 |
| 198 void ToolbarButton::ShowContextMenuForView(View* source, |
| 199 const gfx::Point& point, |
| 200 ui::MenuSourceType source_type) { |
| 201 if (!enabled()) |
| 202 return; |
| 203 |
| 204 show_menu_factory_.InvalidateWeakPtrs(); |
| 205 ShowDropDownMenu(source_type); |
| 206 } |
| 207 |
208 bool ToolbarButton::ShouldEnterPushedState(const ui::Event& event) { | 208 bool ToolbarButton::ShouldEnterPushedState(const ui::Event& event) { |
209 // Enter PUSHED state on press with Left or Right mouse button or on taps. | 209 // Enter PUSHED state on press with Left or Right mouse button or on taps. |
210 // Remain in this state while the context menu is open. | 210 // Remain in this state while the context menu is open. |
211 return event.type() == ui::ET_GESTURE_TAP || | 211 return event.type() == ui::ET_GESTURE_TAP || |
212 event.type() == ui::ET_GESTURE_TAP_DOWN || | 212 event.type() == ui::ET_GESTURE_TAP_DOWN || |
213 (event.IsMouseEvent() && ((ui::EF_LEFT_MOUSE_BUTTON | | 213 (event.IsMouseEvent() && ((ui::EF_LEFT_MOUSE_BUTTON | |
214 ui::EF_RIGHT_MOUSE_BUTTON) & event.flags()) != 0); | 214 ui::EF_RIGHT_MOUSE_BUTTON) & event.flags()) != 0); |
215 } | 215 } |
216 | 216 |
217 bool ToolbarButton::ShouldShowMenu() { | 217 bool ToolbarButton::ShouldShowMenu() { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 SetMouseHandler(nullptr); | 294 SetMouseHandler(nullptr); |
295 | 295 |
296 // Set the state back to normal after the drop down menu is closed. | 296 // Set the state back to normal after the drop down menu is closed. |
297 if (state_ != STATE_DISABLED) | 297 if (state_ != STATE_DISABLED) |
298 SetState(STATE_NORMAL); | 298 SetState(STATE_NORMAL); |
299 } | 299 } |
300 | 300 |
301 const char* ToolbarButton::GetClassName() const { | 301 const char* ToolbarButton::GetClassName() const { |
302 return "ToolbarButton"; | 302 return "ToolbarButton"; |
303 } | 303 } |
304 | |
305 gfx::Point ToolbarButton::CalculateInkDropCenter() const { | |
306 return GetLocalBounds().CenterPoint(); | |
307 } | |
OLD | NEW |