OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/views/bookmark_menu_controller_views.h" | 5 #include "chrome/browser/views/bookmark_menu_controller_views.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/os_exchange_data.h" | 8 #include "app/os_exchange_data.h" |
9 #include "app/resource_bundle.h" | 9 #include "app/resource_bundle.h" |
10 #include "chrome/browser/bookmarks/bookmark_drag_data.h" | 10 #include "chrome/browser/bookmarks/bookmark_drag_data.h" |
11 #include "chrome/browser/bookmarks/bookmark_utils.h" | 11 #include "chrome/browser/bookmarks/bookmark_utils.h" |
12 #include "chrome/browser/metrics/user_metrics.h" | 12 #include "chrome/browser/metrics/user_metrics.h" |
13 #include "chrome/browser/profile.h" | 13 #include "chrome/browser/profile.h" |
14 #include "chrome/browser/tab_contents/page_navigator.h" | 14 #include "chrome/browser/tab_contents/page_navigator.h" |
15 #include "chrome/browser/views/event_utils.h" | 15 #include "chrome/browser/views/event_utils.h" |
16 #include "chrome/common/page_transition_types.h" | 16 #include "chrome/common/page_transition_types.h" |
17 #include "grit/app_resources.h" | 17 #include "grit/app_resources.h" |
18 #include "grit/generated_resources.h" | 18 #include "grit/generated_resources.h" |
19 #include "grit/theme_resources.h" | 19 #include "grit/theme_resources.h" |
20 | 20 |
21 BookmarkMenuController::BookmarkMenuController(Browser* browser, | 21 BookmarkMenuController::BookmarkMenuController(Browser* browser, |
22 Profile* profile, | 22 Profile* profile, |
23 PageNavigator* navigator, | 23 PageNavigator* navigator, |
24 gfx::NativeWindow parent, | 24 gfx::NativeView parent, |
25 BookmarkNode* node, | 25 BookmarkNode* node, |
26 int start_child_index, | 26 int start_child_index, |
27 bool show_other_folder) | 27 bool show_other_folder) |
28 : browser_(browser), | 28 : browser_(browser), |
29 profile_(profile), | 29 profile_(profile), |
30 page_navigator_(navigator), | 30 page_navigator_(navigator), |
31 parent_(parent), | 31 parent_(parent), |
32 node_(node), | 32 node_(node), |
33 observer_(NULL), | 33 observer_(NULL), |
34 for_drop_(false), | 34 for_drop_(false), |
35 show_other_folder_(show_other_folder) { | 35 show_other_folder_(show_other_folder) { |
36 menu_.reset(new views::MenuItemView(this)); | 36 menu_.reset(new views::MenuItemView(this)); |
37 int next_menu_id = 1; | 37 int next_menu_id = 1; |
38 menu_id_to_node_map_[menu_->GetCommand()] = node; | 38 menu_id_to_node_map_[menu_->GetCommand()] = node; |
39 menu_->set_has_icons(true); | 39 menu_->set_has_icons(true); |
40 BuildMenu(node, start_child_index, menu_.get(), &next_menu_id); | 40 BuildMenu(node, start_child_index, menu_.get(), &next_menu_id); |
41 if (show_other_folder) | 41 if (show_other_folder) |
42 BuildOtherFolderMenu(&next_menu_id); | 42 BuildOtherFolderMenu(&next_menu_id); |
43 } | 43 } |
44 | 44 |
45 void BookmarkMenuController::RunMenuAt( | 45 void BookmarkMenuController::RunMenuAt( |
46 const gfx::Rect& bounds, | 46 const gfx::Rect& bounds, |
47 views::MenuItemView::AnchorPosition position, | 47 views::MenuItemView::AnchorPosition position, |
48 bool for_drop) { | 48 bool for_drop) { |
49 for_drop_ = for_drop; | 49 for_drop_ = for_drop; |
50 profile_->GetBookmarkModel()->AddObserver(this); | 50 profile_->GetBookmarkModel()->AddObserver(this); |
51 #if defined(OS_WIN) | |
52 gfx::NativeView widget = parent_; | |
53 #else | |
54 gfx::NativeView widget = GTK_WIDGET(parent_); | |
55 #endif | |
56 if (for_drop) { | 51 if (for_drop) { |
57 menu_->RunMenuForDropAt(widget, bounds, position); | 52 menu_->RunMenuForDropAt(parent_, bounds, position); |
58 } else { | 53 } else { |
59 menu_->RunMenuAt(widget, bounds, position, false); | 54 menu_->RunMenuAt(parent_, bounds, position, false); |
60 delete this; | 55 delete this; |
61 } | 56 } |
62 } | 57 } |
63 | 58 |
64 void BookmarkMenuController::Cancel() { | 59 void BookmarkMenuController::Cancel() { |
65 menu_->Cancel(); | 60 menu_->Cancel(); |
66 } | 61 } |
67 | 62 |
68 bool BookmarkMenuController::IsTriggerableEvent(const views::MouseEvent& e) { | 63 bool BookmarkMenuController::IsTriggerableEvent(const views::MouseEvent& e) { |
69 return event_utils::IsPossibleDispositionEvent(e); | 64 return event_utils::IsPossibleDispositionEvent(e); |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 } | 248 } |
254 menu_id_to_node_map_[id] = node; | 249 menu_id_to_node_map_[id] = node; |
255 } | 250 } |
256 } | 251 } |
257 | 252 |
258 BookmarkMenuController::~BookmarkMenuController() { | 253 BookmarkMenuController::~BookmarkMenuController() { |
259 profile_->GetBookmarkModel()->RemoveObserver(this); | 254 profile_->GetBookmarkModel()->RemoveObserver(this); |
260 if (observer_) | 255 if (observer_) |
261 observer_->BookmarkMenuDeleted(this); | 256 observer_->BookmarkMenuDeleted(this); |
262 } | 257 } |
OLD | NEW |