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

Side by Side Diff: ui/views/controls/combobox/native_combobox_views.cc

Issue 16979002: Add ContextMenuSourceType to views::ContextMenuController::ShowContextMenuForView. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/views/controls/combobox/native_combobox_views.h" 5 #include "ui/views/controls/combobox/native_combobox_views.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "grit/ui_resources.h" 9 #include "grit/ui_resources.h"
10 #include "ui/base/events/event.h" 10 #include "ui/base/events/event.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 NativeComboboxViews::~NativeComboboxViews() { 92 NativeComboboxViews::~NativeComboboxViews() {
93 } 93 }
94 94
95 //////////////////////////////////////////////////////////////////////////////// 95 ////////////////////////////////////////////////////////////////////////////////
96 // NativeComboboxViews, View overrides: 96 // NativeComboboxViews, View overrides:
97 97
98 bool NativeComboboxViews::OnMousePressed(const ui::MouseEvent& mouse_event) { 98 bool NativeComboboxViews::OnMousePressed(const ui::MouseEvent& mouse_event) {
99 combobox_->RequestFocus(); 99 combobox_->RequestFocus();
100 if (mouse_event.IsLeftMouseButton()) { 100 if (mouse_event.IsLeftMouseButton()) {
101 UpdateFromModel(); 101 UpdateFromModel();
102 ShowDropDownMenu(); 102 ShowDropDownMenu(ui::MENU_SOURCE_MOUSE);
103 } 103 }
104 104
105 return true; 105 return true;
106 } 106 }
107 107
108 bool NativeComboboxViews::OnMouseDragged(const ui::MouseEvent& mouse_event) { 108 bool NativeComboboxViews::OnMouseDragged(const ui::MouseEvent& mouse_event) {
109 return true; 109 return true;
110 } 110 }
111 111
112 bool NativeComboboxViews::OnKeyPressed(const ui::KeyEvent& key_event) { 112 bool NativeComboboxViews::OnKeyPressed(const ui::KeyEvent& key_event) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 void NativeComboboxViews::OnBlur() { 174 void NativeComboboxViews::OnBlur() {
175 NOTREACHED(); 175 NOTREACHED();
176 } 176 }
177 177
178 ///////////////////////////////////////////////////////////////// 178 /////////////////////////////////////////////////////////////////
179 // NativeComboboxViews, ui::EventHandler overrides: 179 // NativeComboboxViews, ui::EventHandler overrides:
180 180
181 void NativeComboboxViews::OnGestureEvent(ui::GestureEvent* gesture) { 181 void NativeComboboxViews::OnGestureEvent(ui::GestureEvent* gesture) {
182 if (gesture->type() == ui::ET_GESTURE_TAP) { 182 if (gesture->type() == ui::ET_GESTURE_TAP) {
183 UpdateFromModel(); 183 UpdateFromModel();
184 ShowDropDownMenu(); 184 ShowDropDownMenu(ui::MENU_SOURCE_TOUCH);
185 gesture->StopPropagation(); 185 gesture->StopPropagation();
186 return; 186 return;
187 } 187 }
188 View::OnGestureEvent(gesture); 188 View::OnGestureEvent(gesture);
189 } 189 }
190 190
191 ///////////////////////////////////////////////////////////////// 191 /////////////////////////////////////////////////////////////////
192 // NativeComboboxViews, NativeComboboxWrapper overrides: 192 // NativeComboboxViews, NativeComboboxWrapper overrides:
193 193
194 void NativeComboboxViews::UpdateFromModel() { 194 void NativeComboboxViews::UpdateFromModel() {
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 SkPaint paint; 361 SkPaint paint;
362 // This makes the arrow subtractive. 362 // This makes the arrow subtractive.
363 if (combobox_->invalid()) 363 if (combobox_->invalid())
364 paint.setXfermodeMode(SkXfermode::kDstOut_Mode); 364 paint.setXfermodeMode(SkXfermode::kDstOut_Mode);
365 canvas->DrawImageInt(*disclosure_arrow_, arrow_bounds.x(), arrow_bounds.y(), 365 canvas->DrawImageInt(*disclosure_arrow_, arrow_bounds.x(), arrow_bounds.y(),
366 paint); 366 paint);
367 367
368 canvas->Restore(); 368 canvas->Restore();
369 } 369 }
370 370
371 void NativeComboboxViews::ShowDropDownMenu() { 371 void NativeComboboxViews::ShowDropDownMenu(ui::MenuSourceType source_type) {
372 372
373 if (!dropdown_list_menu_runner_.get()) 373 if (!dropdown_list_menu_runner_.get())
374 UpdateFromModel(); 374 UpdateFromModel();
375 375
376 // Extend the menu to the width of the combobox. 376 // Extend the menu to the width of the combobox.
377 MenuItemView* menu = dropdown_list_menu_runner_->GetMenu(); 377 MenuItemView* menu = dropdown_list_menu_runner_->GetMenu();
378 SubmenuView* submenu = menu->CreateSubmenu(); 378 SubmenuView* submenu = menu->CreateSubmenu();
379 submenu->set_minimum_preferred_width(size().width() - 379 submenu->set_minimum_preferred_width(size().width() -
380 (kMenuBorderWidthLeft + kMenuBorderWidthRight)); 380 (kMenuBorderWidthLeft + kMenuBorderWidthRight));
381 381
382 gfx::Rect lb = GetLocalBounds(); 382 gfx::Rect lb = GetLocalBounds();
383 gfx::Point menu_position(lb.origin()); 383 gfx::Point menu_position(lb.origin());
384 384
385 // Inset the menu's requested position so the border of the menu lines up 385 // Inset the menu's requested position so the border of the menu lines up
386 // with the border of the combobox. 386 // with the border of the combobox.
387 menu_position.set_x(menu_position.x() + kMenuBorderWidthLeft); 387 menu_position.set_x(menu_position.x() + kMenuBorderWidthLeft);
388 menu_position.set_y(menu_position.y() + kMenuBorderWidthTop); 388 menu_position.set_y(menu_position.y() + kMenuBorderWidthTop);
389 lb.set_width(lb.width() - (kMenuBorderWidthLeft + kMenuBorderWidthRight)); 389 lb.set_width(lb.width() - (kMenuBorderWidthLeft + kMenuBorderWidthRight));
390 390
391 View::ConvertPointToScreen(this, &menu_position); 391 View::ConvertPointToScreen(this, &menu_position);
392 if (menu_position.x() < 0) 392 if (menu_position.x() < 0)
393 menu_position.set_x(0); 393 menu_position.set_x(0);
394 394
395 gfx::Rect bounds(menu_position, lb.size()); 395 gfx::Rect bounds(menu_position, lb.size());
396 396
397 dropdown_open_ = true; 397 dropdown_open_ = true;
398 if (dropdown_list_menu_runner_->RunMenuAt( 398 if (dropdown_list_menu_runner_->RunMenuAt(
399 GetWidget(), NULL, bounds, MenuItemView::TOPLEFT, 399 GetWidget(), NULL, bounds, MenuItemView::TOPLEFT,
400 MenuRunner::HAS_MNEMONICS) == MenuRunner::MENU_DELETED) 400 source_type, MenuRunner::HAS_MNEMONICS) ==
401 MenuRunner::MENU_DELETED)
401 return; 402 return;
402 dropdown_open_ = false; 403 dropdown_open_ = false;
403 404
404 // Need to explicitly clear mouse handler so that events get sent 405 // Need to explicitly clear mouse handler so that events get sent
405 // properly after the menu finishes running. If we don't do this, then 406 // properly after the menu finishes running. If we don't do this, then
406 // the first click to other parts of the UI is eaten. 407 // the first click to other parts of the UI is eaten.
407 SetMouseHandler(NULL); 408 SetMouseHandler(NULL);
408 } 409 }
409 410
410 //////////////////////////////////////////////////////////////////////////////// 411 ////////////////////////////////////////////////////////////////////////////////
411 // NativeComboboxWrapper, public: 412 // NativeComboboxWrapper, public:
412 413
413 #if defined(USE_AURA) 414 #if defined(USE_AURA)
414 // static 415 // static
415 NativeComboboxWrapper* NativeComboboxWrapper::CreateWrapper( 416 NativeComboboxWrapper* NativeComboboxWrapper::CreateWrapper(
416 Combobox* combobox) { 417 Combobox* combobox) {
417 return new NativeComboboxViews(combobox); 418 return new NativeComboboxViews(combobox);
418 } 419 }
419 #endif 420 #endif
420 421
421 } // namespace views 422 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/combobox/native_combobox_views.h ('k') | ui/views/controls/menu/menu_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698