| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 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 | 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 "views/controls/menu/submenu_view.h" | 5 #include "views/controls/menu/submenu_view.h" | 
| 6 | 6 | 
| 7 #include "gfx/canvas.h" | 7 #include "gfx/canvas.h" | 
|  | 8 #include "views/accessibility/view_accessibility.h" | 
| 8 #include "views/controls/menu/menu_config.h" | 9 #include "views/controls/menu/menu_config.h" | 
| 9 #include "views/controls/menu/menu_controller.h" | 10 #include "views/controls/menu/menu_controller.h" | 
| 10 #include "views/controls/menu/menu_host.h" | 11 #include "views/controls/menu/menu_host.h" | 
| 11 #include "views/controls/menu/menu_scroll_view_container.h" | 12 #include "views/controls/menu/menu_scroll_view_container.h" | 
| 12 #include "views/widget/root_view.h" | 13 #include "views/widget/root_view.h" | 
| 13 | 14 | 
| 14 // Height of the drop indicator. This should be an even number. | 15 // Height of the drop indicator. This should be an even number. | 
| 15 static const int kDropIndicatorHeight = 2; | 16 static const int kDropIndicatorHeight = 2; | 
| 16 | 17 | 
| 17 // Color of the drop indicator. | 18 // Color of the drop indicator. | 
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 226     host_->ShowMenuHost(do_capture); | 227     host_->ShowMenuHost(do_capture); | 
| 227     return; | 228     return; | 
| 228   } | 229   } | 
| 229 | 230 | 
| 230   host_ = MenuHost::Create(this); | 231   host_ = MenuHost::Create(this); | 
| 231   // Force construction of the scroll view container. | 232   // Force construction of the scroll view container. | 
| 232   GetScrollViewContainer(); | 233   GetScrollViewContainer(); | 
| 233   // Make sure the first row is visible. | 234   // Make sure the first row is visible. | 
| 234   ScrollRectToVisible(gfx::Rect(gfx::Point(), gfx::Size(1, 1))); | 235   ScrollRectToVisible(gfx::Rect(gfx::Point(), gfx::Size(1, 1))); | 
| 235   host_->Init(parent, bounds, scroll_view_container_, do_capture); | 236   host_->Init(parent, bounds, scroll_view_container_, do_capture); | 
|  | 237 | 
|  | 238   GetScrollViewContainer()->NotifyAccessibilityEvent( | 
|  | 239         AccessibilityTypes::EVENT_MENUPOPUPSTART); | 
| 236 } | 240 } | 
| 237 | 241 | 
| 238 void SubmenuView::Reposition(const gfx::Rect& bounds) { | 242 void SubmenuView::Reposition(const gfx::Rect& bounds) { | 
| 239   if (host_) | 243   if (host_) | 
| 240     host_->SetMenuHostBounds(bounds); | 244     host_->SetMenuHostBounds(bounds); | 
| 241 } | 245 } | 
| 242 | 246 | 
| 243 void SubmenuView::Close() { | 247 void SubmenuView::Close() { | 
| 244   if (host_) { | 248   if (host_) { | 
|  | 249     GetScrollViewContainer()->NotifyAccessibilityEvent( | 
|  | 250         AccessibilityTypes::EVENT_MENUPOPUPEND); | 
|  | 251 | 
| 245     host_->DestroyMenuHost(); | 252     host_->DestroyMenuHost(); | 
| 246     host_ = NULL; | 253     host_ = NULL; | 
| 247   } | 254   } | 
| 248 } | 255 } | 
| 249 | 256 | 
| 250 void SubmenuView::Hide() { | 257 void SubmenuView::Hide() { | 
| 251   if (host_) | 258   if (host_) | 
| 252     host_->HideMenuHost(); | 259     host_->HideMenuHost(); | 
| 253 } | 260 } | 
| 254 | 261 | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 278   // selection if the drop is on the passed in item and the drop position is | 285   // selection if the drop is on the passed in item and the drop position is | 
| 279   // ON. | 286   // ON. | 
| 280   return (drop_item_ == item && drop_position_ == MenuDelegate::DROP_ON); | 287   return (drop_item_ == item && drop_position_ == MenuDelegate::DROP_ON); | 
| 281 } | 288 } | 
| 282 | 289 | 
| 283 MenuScrollViewContainer* SubmenuView::GetScrollViewContainer() { | 290 MenuScrollViewContainer* SubmenuView::GetScrollViewContainer() { | 
| 284   if (!scroll_view_container_) { | 291   if (!scroll_view_container_) { | 
| 285     scroll_view_container_ = new MenuScrollViewContainer(this); | 292     scroll_view_container_ = new MenuScrollViewContainer(this); | 
| 286     // Otherwise MenuHost would delete us. | 293     // Otherwise MenuHost would delete us. | 
| 287     scroll_view_container_->set_parent_owned(false); | 294     scroll_view_container_->set_parent_owned(false); | 
|  | 295 | 
|  | 296     // Use the parent menu item accessible name for the menu view. | 
|  | 297     std::wstring accessible_name; | 
|  | 298     GetMenuItem()->GetAccessibleName(&accessible_name); | 
|  | 299     scroll_view_container_->SetAccessibleName(accessible_name); | 
| 288   } | 300   } | 
| 289   return scroll_view_container_; | 301   return scroll_view_container_; | 
| 290 } | 302 } | 
| 291 | 303 | 
| 292 gfx::NativeWindow SubmenuView::native_window() const { | 304 gfx::NativeWindow SubmenuView::native_window() const { | 
| 293   return host_ ? host_->GetMenuHostWindow() : NULL; | 305   return host_ ? host_->GetMenuHostWindow() : NULL; | 
| 294 } | 306 } | 
| 295 | 307 | 
| 296 void SubmenuView::MenuHostDestroyed() { | 308 void SubmenuView::MenuHostDestroyed() { | 
| 297   host_ = NULL; | 309   host_ = NULL; | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 338       item_bounds.set_height(kDropIndicatorHeight); | 350       item_bounds.set_height(kDropIndicatorHeight); | 
| 339       return item_bounds; | 351       return item_bounds; | 
| 340 | 352 | 
| 341     default: | 353     default: | 
| 342       // Don't render anything for on. | 354       // Don't render anything for on. | 
| 343       return gfx::Rect(); | 355       return gfx::Rect(); | 
| 344   } | 356   } | 
| 345 } | 357 } | 
| 346 | 358 | 
| 347 }  // namespace views | 359 }  // namespace views | 
| OLD | NEW | 
|---|