OLD | NEW |
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 "chrome/browser/ui/views/frame/browser_frame_win.h" | 5 #include "chrome/browser/ui/views/frame/browser_frame_win.h" |
6 | 6 |
7 #include <dwmapi.h> | 7 #include <dwmapi.h> |
8 #include <shellapi.h> | 8 #include <shellapi.h> |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 } | 367 } |
368 | 368 |
369 void BrowserFrameWin::InitSystemContextMenu() { | 369 void BrowserFrameWin::InitSystemContextMenu() { |
370 system_menu_contents_.reset(new SystemMenuModel(system_menu_delegate_.get())); | 370 system_menu_contents_.reset(new SystemMenuModel(system_menu_delegate_.get())); |
371 // We add the menu items in reverse order so that insertion_index never needs | 371 // We add the menu items in reverse order so that insertion_index never needs |
372 // to change. | 372 // to change. |
373 if (browser_view_->IsBrowserTypeNormal()) | 373 if (browser_view_->IsBrowserTypeNormal()) |
374 BuildSystemMenuForBrowserWindow(); | 374 BuildSystemMenuForBrowserWindow(); |
375 else | 375 else |
376 BuildSystemMenuForAppOrPopupWindow(); | 376 BuildSystemMenuForAppOrPopupWindow(); |
| 377 AddFrameToggleItems(); |
377 system_menu_.reset( | 378 system_menu_.reset( |
378 new views::NativeMenuWin(system_menu_contents_.get(), GetNativeWindow())); | 379 new views::NativeMenuWin(system_menu_contents_.get(), GetNativeWindow())); |
379 system_menu_->Rebuild(); | 380 system_menu_->Rebuild(); |
380 } | 381 } |
381 | 382 |
382 int BrowserFrameWin::GetMinimizeButtonOffset() const { | 383 int BrowserFrameWin::GetMinimizeButtonOffset() const { |
383 return minimize_button_metrics_.GetMinimizeButtonOffsetX(); | 384 return minimize_button_metrics_.GetMinimizeButtonOffsetX(); |
384 } | 385 } |
385 | 386 |
386 void BrowserFrameWin::TabStripDisplayModeChanged() { | 387 void BrowserFrameWin::TabStripDisplayModeChanged() { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 gfx::Rect tabstrip_bounds( | 460 gfx::Rect tabstrip_bounds( |
460 browser_frame_->GetBoundsForTabStrip(browser_view_->tabstrip())); | 461 browser_frame_->GetBoundsForTabStrip(browser_view_->tabstrip())); |
461 margins.cyTopHeight = tabstrip_bounds.bottom() + kDWMFrameTopOffset; | 462 margins.cyTopHeight = tabstrip_bounds.bottom() + kDWMFrameTopOffset; |
462 } | 463 } |
463 } | 464 } |
464 | 465 |
465 DwmExtendFrameIntoClientArea(GetNativeView(), &margins); | 466 DwmExtendFrameIntoClientArea(GetNativeView(), &margins); |
466 } | 467 } |
467 | 468 |
468 void BrowserFrameWin::BuildSystemMenuForBrowserWindow() { | 469 void BrowserFrameWin::BuildSystemMenuForBrowserWindow() { |
469 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | 470 system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); |
470 | 471 system_menu_contents_->AddItemWithStringId(IDC_RESTORE_TAB, IDS_RESTORE_TAB); |
471 if (chrome::CanOpenTaskManager()) { | 472 if (chrome::CanOpenTaskManager()) { |
| 473 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
472 system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER, | 474 system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER, |
473 IDS_TASK_MANAGER); | 475 IDS_TASK_MANAGER); |
474 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | |
475 } | 476 } |
476 system_menu_contents_->AddItemWithStringId(IDC_RESTORE_TAB, IDS_RESTORE_TAB); | 477 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
477 system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); | |
478 AddFrameToggleItems(); | |
479 // If it's a regular browser window with tabs, we don't add any more items, | 478 // If it's a regular browser window with tabs, we don't add any more items, |
480 // since it already has menus (Page, Chrome). | 479 // since it already has menus (Page, Chrome). |
481 } | 480 } |
482 | 481 |
483 void BrowserFrameWin::BuildSystemMenuForAppOrPopupWindow() { | 482 void BrowserFrameWin::BuildSystemMenuForAppOrPopupWindow() { |
484 Browser* browser = browser_view()->browser(); | 483 Browser* browser = browser_view()->browser(); |
485 if (browser->is_app() && chrome::CanOpenTaskManager()) { | 484 system_menu_contents_->AddItemWithStringId(IDC_BACK, |
486 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | 485 IDS_CONTENT_CONTEXT_BACK); |
487 system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER, | 486 system_menu_contents_->AddItemWithStringId(IDC_FORWARD, |
488 IDS_TASK_MANAGER); | 487 IDS_CONTENT_CONTEXT_FORWARD); |
489 } | 488 system_menu_contents_->AddItemWithStringId(IDC_RELOAD, IDS_APP_MENU_RELOAD); |
490 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | |
491 encoding_menu_contents_.reset(new EncodingMenuModel(browser)); | |
492 system_menu_contents_->AddSubMenuWithStringId(IDC_ENCODING_MENU, | |
493 IDS_ENCODING_MENU, | |
494 encoding_menu_contents_.get()); | |
495 zoom_menu_contents_.reset(new ZoomMenuModel(system_menu_delegate_.get())); | |
496 system_menu_contents_->AddSubMenuWithStringId(IDC_ZOOM_MENU, IDS_ZOOM_MENU, | |
497 zoom_menu_contents_.get()); | |
498 system_menu_contents_->AddItemWithStringId(IDC_PRINT, IDS_PRINT); | |
499 system_menu_contents_->AddItemWithStringId(IDC_FIND, IDS_FIND); | |
500 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | |
501 system_menu_contents_->AddItemWithStringId(IDC_PASTE, IDS_PASTE); | |
502 system_menu_contents_->AddItemWithStringId(IDC_COPY, IDS_COPY); | |
503 system_menu_contents_->AddItemWithStringId(IDC_CUT, IDS_CUT); | |
504 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | 489 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
505 if (browser->is_app()) { | 490 if (browser->is_app()) { |
506 system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, | 491 system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, |
507 IDS_APP_MENU_NEW_WEB_PAGE); | 492 IDS_APP_MENU_NEW_WEB_PAGE); |
508 } else { | 493 } else { |
509 system_menu_contents_->AddItemWithStringId(IDC_SHOW_AS_TAB, | 494 system_menu_contents_->AddItemWithStringId(IDC_SHOW_AS_TAB, |
510 IDS_SHOW_AS_TAB); | 495 IDS_SHOW_AS_TAB); |
511 } | 496 } |
512 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | 497 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
513 system_menu_contents_->AddItemWithStringId(IDC_RELOAD, IDS_APP_MENU_RELOAD); | 498 system_menu_contents_->AddItemWithStringId(IDC_CUT, IDS_CUT); |
514 system_menu_contents_->AddItemWithStringId(IDC_FORWARD, | 499 system_menu_contents_->AddItemWithStringId(IDC_COPY, IDS_COPY); |
515 IDS_CONTENT_CONTEXT_FORWARD); | 500 system_menu_contents_->AddItemWithStringId(IDC_PASTE, IDS_PASTE); |
516 system_menu_contents_->AddItemWithStringId(IDC_BACK, | 501 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
517 IDS_CONTENT_CONTEXT_BACK); | 502 system_menu_contents_->AddItemWithStringId(IDC_FIND, IDS_FIND); |
518 AddFrameToggleItems(); | 503 system_menu_contents_->AddItemWithStringId(IDC_PRINT, IDS_PRINT); |
| 504 zoom_menu_contents_.reset(new ZoomMenuModel(system_menu_delegate_.get())); |
| 505 system_menu_contents_->AddSubMenuWithStringId(IDC_ZOOM_MENU, IDS_ZOOM_MENU, |
| 506 zoom_menu_contents_.get()); |
| 507 encoding_menu_contents_.reset(new EncodingMenuModel(browser)); |
| 508 system_menu_contents_->AddSubMenuWithStringId(IDC_ENCODING_MENU, |
| 509 IDS_ENCODING_MENU, |
| 510 encoding_menu_contents_.get()); |
| 511 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 512 if (browser->is_app() && chrome::CanOpenTaskManager()) { |
| 513 system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER, |
| 514 IDS_TASK_MANAGER); |
| 515 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 516 } |
519 } | 517 } |
520 | 518 |
521 void BrowserFrameWin::AddFrameToggleItems() { | 519 void BrowserFrameWin::AddFrameToggleItems() { |
522 if (CommandLine::ForCurrentProcess()->HasSwitch( | 520 if (CommandLine::ForCurrentProcess()->HasSwitch( |
523 switches::kDebugEnableFrameToggle)) { | 521 switches::kDebugEnableFrameToggle)) { |
524 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); | |
525 system_menu_contents_->AddItem(IDC_DEBUG_FRAME_TOGGLE, | 522 system_menu_contents_->AddItem(IDC_DEBUG_FRAME_TOGGLE, |
526 L"Toggle Frame Type"); | 523 L"Toggle Frame Type"); |
| 524 system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR); |
527 } | 525 } |
528 } | 526 } |
529 | 527 |
530 void BrowserFrameWin::HandleMetroNavSearchRequest(WPARAM w_param, | 528 void BrowserFrameWin::HandleMetroNavSearchRequest(WPARAM w_param, |
531 LPARAM l_param) { | 529 LPARAM l_param) { |
532 if (!base::win::IsMetroProcess()) { | 530 if (!base::win::IsMetroProcess()) { |
533 NOTREACHED() << "Received unexpected metro navigation request"; | 531 NOTREACHED() << "Received unexpected metro navigation request"; |
534 return; | 532 return; |
535 } | 533 } |
536 | 534 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 | 613 |
616 //////////////////////////////////////////////////////////////////////////////// | 614 //////////////////////////////////////////////////////////////////////////////// |
617 // NativeBrowserFrame, public: | 615 // NativeBrowserFrame, public: |
618 | 616 |
619 // static | 617 // static |
620 NativeBrowserFrame* NativeBrowserFrame::CreateNativeBrowserFrame( | 618 NativeBrowserFrame* NativeBrowserFrame::CreateNativeBrowserFrame( |
621 BrowserFrame* browser_frame, | 619 BrowserFrame* browser_frame, |
622 BrowserView* browser_view) { | 620 BrowserView* browser_view) { |
623 return new BrowserFrameWin(browser_frame, browser_view); | 621 return new BrowserFrameWin(browser_frame, browser_view); |
624 } | 622 } |
OLD | NEW |