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

Side by Side Diff: ui/views/controls/menu/menu_host_root_view.cc

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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
« no previous file with comments | « ui/views/controls/menu/menu_host_root_view.h ('k') | ui/views/controls/menu/menu_image_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/views/controls/menu/menu_host_root_view.h"
6
7 #include "ui/views/controls/menu/menu_controller.h"
8 #include "ui/views/controls/menu/menu_item_view.h"
9 #include "ui/views/controls/menu/submenu_view.h"
10
11 namespace views {
12
13 MenuHostRootView::MenuHostRootView(Widget* widget,
14 SubmenuView* submenu)
15 : internal::RootView(widget),
16 submenu_(submenu),
17 forward_drag_to_menu_controller_(true) {
18 }
19
20 bool MenuHostRootView::OnMousePressed(const ui::MouseEvent& event) {
21 forward_drag_to_menu_controller_ =
22 !GetLocalBounds().Contains(event.location()) ||
23 !RootView::OnMousePressed(event) ||
24 DoesEventTargetEmptyMenuItem(event);
25
26 if (forward_drag_to_menu_controller_ && GetMenuController())
27 GetMenuController()->OnMousePressed(submenu_, event);
28 return true;
29 }
30
31 bool MenuHostRootView::OnMouseDragged(const ui::MouseEvent& event) {
32 if (forward_drag_to_menu_controller_ && GetMenuController()) {
33 GetMenuController()->OnMouseDragged(submenu_, event);
34 return true;
35 }
36 return RootView::OnMouseDragged(event);
37 }
38
39 void MenuHostRootView::OnMouseReleased(const ui::MouseEvent& event) {
40 RootView::OnMouseReleased(event);
41 if (forward_drag_to_menu_controller_ && GetMenuController()) {
42 forward_drag_to_menu_controller_ = false;
43 GetMenuController()->OnMouseReleased(submenu_, event);
44 }
45 }
46
47 void MenuHostRootView::OnMouseMoved(const ui::MouseEvent& event) {
48 RootView::OnMouseMoved(event);
49 if (GetMenuController())
50 GetMenuController()->OnMouseMoved(submenu_, event);
51 }
52
53 bool MenuHostRootView::OnMouseWheel(const ui::MouseWheelEvent& event) {
54 return GetMenuController() &&
55 GetMenuController()->OnMouseWheel(submenu_, event);
56 }
57
58 void MenuHostRootView::OnEventProcessingFinished(ui::Event* event) {
59 RootView::OnEventProcessingFinished(event);
60
61 // Forward unhandled gesture events to our menu controller.
62 // TODO(tdanderson): Investigate whether this should be moved into a
63 // post-target handler installed on |this| instead
64 // (invoked only if event->target() == this).
65 if (event->IsGestureEvent() && !event->handled() && GetMenuController())
66 GetMenuController()->OnGestureEvent(submenu_, event->AsGestureEvent());
67 }
68
69 MenuController* MenuHostRootView::GetMenuController() {
70 return submenu_ ? submenu_->GetMenuItem()->GetMenuController() : NULL;
71 }
72
73 bool MenuHostRootView::DoesEventTargetEmptyMenuItem(
74 const ui::MouseEvent& event) {
75 View* view = GetEventHandlerForPoint(event.location());
76 return view && view->id() == MenuItemView::kEmptyMenuItemViewID;
77 }
78
79 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/menu/menu_host_root_view.h ('k') | ui/views/controls/menu/menu_image_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698