| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2010 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 "chrome/renderer/external_popup_menu.h" |
| 6 |
| 7 #include "chrome/common/render_messages.h" |
| 8 #include "chrome/common/render_messages_params.h" |
| 9 #include "chrome/renderer/render_view.h" |
| 10 #include "third_party/WebKit/WebKit/chromium/public/WebExternalPopupMenuClient.h
" |
| 11 #include "third_party/WebKit/WebKit/chromium/public/WebRect.h" |
| 12 |
| 13 ExternalPopupMenu::ExternalPopupMenu( |
| 14 RenderView* render_view, |
| 15 const WebKit::WebPopupMenuInfo& popup_menu_info, |
| 16 WebKit::WebExternalPopupMenuClient* popup_menu_client) |
| 17 : render_view_(render_view), |
| 18 popup_menu_info_(popup_menu_info), |
| 19 popup_menu_client_(popup_menu_client) { |
| 20 } |
| 21 |
| 22 void ExternalPopupMenu::show(const WebKit::WebRect& bounds) { |
| 23 ViewHostMsg_ShowPopup_Params popup_params; |
| 24 popup_params.bounds = bounds; |
| 25 popup_params.item_height = popup_menu_info_.itemHeight; |
| 26 popup_params.item_font_size = popup_menu_info_.itemFontSize; |
| 27 popup_params.selected_item = popup_menu_info_.selectedIndex; |
| 28 for (size_t i = 0; i < popup_menu_info_.items.size(); ++i) |
| 29 popup_params.popup_items.push_back(WebMenuItem(popup_menu_info_.items[i])); |
| 30 popup_params.right_aligned = popup_menu_info_.rightAligned; |
| 31 render_view_->Send( |
| 32 new ViewHostMsg_ShowPopup(render_view_->routing_id(), popup_params)); |
| 33 } |
| 34 |
| 35 void ExternalPopupMenu::close() { |
| 36 popup_menu_client_ = NULL; |
| 37 render_view_ = NULL; |
| 38 } |
| 39 |
| 40 void ExternalPopupMenu::DidSelectItem(int index) { |
| 41 if (!popup_menu_client_) |
| 42 return; |
| 43 if (index == -1) |
| 44 popup_menu_client_->didCancel(); |
| 45 else |
| 46 popup_menu_client_->didAcceptIndex(index); |
| 47 } |
| OLD | NEW |