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

Side by Side Diff: chrome/browser/views/toolbar_view.cc

Issue 197031: Fleshes out the tooltip implementation for views on Gtk. It doesn't... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/views/bookmark_bar_view.cc ('k') | views/views.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/toolbar_view.h" 5 #include "chrome/browser/views/toolbar_view.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "app/drag_drop_types.h" 9 #include "app/drag_drop_types.h"
10 #include "app/gfx/canvas.h" 10 #include "app/gfx/canvas.h"
11 #include "app/l10n_util.h" 11 #include "app/l10n_util.h"
12 #include "app/os_exchange_data.h" 12 #include "app/os_exchange_data.h"
13 #include "app/resource_bundle.h" 13 #include "app/resource_bundle.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/keyboard_codes.h"
15 #include "base/logging.h" 16 #include "base/logging.h"
16 #include "base/path_service.h" 17 #include "base/path_service.h"
17 #include "chrome/app/chrome_dll_resource.h" 18 #include "chrome/app/chrome_dll_resource.h"
18 #include "chrome/browser/back_forward_menu_model_views.h" 19 #include "chrome/browser/back_forward_menu_model_views.h"
19 #include "chrome/browser/bookmarks/bookmark_model.h" 20 #include "chrome/browser/bookmarks/bookmark_model.h"
20 #include "chrome/browser/browser.h" 21 #include "chrome/browser/browser.h"
21 #include "chrome/browser/browser_process.h" 22 #include "chrome/browser/browser_process.h"
22 #include "chrome/browser/browser_window.h" 23 #include "chrome/browser/browser_window.h"
23 #include "chrome/browser/character_encoding.h" 24 #include "chrome/browser/character_encoding.h"
24 #include "chrome/browser/encoding_menu_controller.h" 25 #include "chrome/browser/encoding_menu_controller.h"
(...skipping 14 matching lines...) Expand all
39 #include "chrome/common/notification_service.h" 40 #include "chrome/common/notification_service.h"
40 #include "chrome/common/pref_names.h" 41 #include "chrome/common/pref_names.h"
41 #include "chrome/common/pref_service.h" 42 #include "chrome/common/pref_service.h"
42 #include "grit/chromium_strings.h" 43 #include "grit/chromium_strings.h"
43 #include "grit/generated_resources.h" 44 #include "grit/generated_resources.h"
44 #include "grit/theme_resources.h" 45 #include "grit/theme_resources.h"
45 #include "net/base/net_util.h" 46 #include "net/base/net_util.h"
46 #include "views/background.h" 47 #include "views/background.h"
47 #include "views/controls/button/button_dropdown.h" 48 #include "views/controls/button/button_dropdown.h"
48 #include "views/controls/label.h" 49 #include "views/controls/label.h"
50 #include "views/widget/tooltip_manager.h"
49 #if defined(OS_WIN) 51 #if defined(OS_WIN)
50 #include "views/drag_utils.h" 52 #include "views/drag_utils.h"
51 #include "views/widget/tooltip_manager.h"
52 #endif 53 #endif
53 #include "views/window/non_client_view.h" 54 #include "views/window/non_client_view.h"
54 #include "views/window/window.h" 55 #include "views/window/window.h"
55 56
56 static const int kControlHorizOffset = 4; 57 static const int kControlHorizOffset = 4;
57 static const int kControlVertOffset = 6; 58 static const int kControlVertOffset = 6;
58 static const int kControlIndent = 3; 59 static const int kControlIndent = 3;
59 static const int kStatusBubbleWidth = 480; 60 static const int kStatusBubbleWidth = 480;
60 61
61 // Separation between the location bar and the menus. 62 // Separation between the location bar and the menus.
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 LoadCenterStackImages(); 578 LoadCenterStackImages();
578 LoadRightSideControlsImages(); 579 LoadRightSideControlsImages();
579 } 580 }
580 581
581 void ToolbarView::ShowContextMenu(int x, int y, bool is_mouse_gesture) { 582 void ToolbarView::ShowContextMenu(int x, int y, bool is_mouse_gesture) {
582 if (acc_focused_view_) 583 if (acc_focused_view_)
583 acc_focused_view_->ShowContextMenu(x, y, is_mouse_gesture); 584 acc_focused_view_->ShowContextMenu(x, y, is_mouse_gesture);
584 } 585 }
585 586
586 void ToolbarView::DidGainFocus() { 587 void ToolbarView::DidGainFocus() {
587 #if defined(OS_WIN)
588 // Check to see if MSAA focus should be restored to previously focused button, 588 // Check to see if MSAA focus should be restored to previously focused button,
589 // and if button is an enabled, visibled child of toolbar. 589 // and if button is an enabled, visibled child of toolbar.
590 if (!acc_focused_view_ || 590 if (!acc_focused_view_ ||
591 (acc_focused_view_->GetParent()->GetID() != VIEW_ID_TOOLBAR) || 591 (acc_focused_view_->GetParent()->GetID() != VIEW_ID_TOOLBAR) ||
592 !acc_focused_view_->IsEnabled() || 592 !acc_focused_view_->IsEnabled() ||
593 !acc_focused_view_->IsVisible()) { 593 !acc_focused_view_->IsVisible()) {
594 // Find first accessible child (-1 to start search at parent). 594 // Find first accessible child (-1 to start search at parent).
595 int first_acc_child = GetNextAccessibleViewIndex(-1, false); 595 int first_acc_child = GetNextAccessibleViewIndex(-1, false);
596 596
597 // No buttons enabled or visible. 597 // No buttons enabled or visible.
(...skipping 11 matching lines...) Expand all
609 acc_focused_view_->SetHotTracked(true); 609 acc_focused_view_->SetHotTracked(true);
610 610
611 // Show the tooltip for the view that got the focus. 611 // Show the tooltip for the view that got the focus.
612 if (GetWidget()->GetTooltipManager()) 612 if (GetWidget()->GetTooltipManager())
613 GetWidget()->GetTooltipManager()->ShowKeyboardTooltip(acc_focused_view_); 613 GetWidget()->GetTooltipManager()->ShowKeyboardTooltip(acc_focused_view_);
614 614
615 // Update focused_view with MSAA-adjusted child id. 615 // Update focused_view with MSAA-adjusted child id.
616 view_index = acc_focused_view_->GetID(); 616 view_index = acc_focused_view_->GetID();
617 } 617 }
618 618
619 #if defined(OS_WIN)
619 gfx::NativeView wnd = GetWidget()->GetNativeView(); 620 gfx::NativeView wnd = GetWidget()->GetNativeView();
620 621
621 // Notify Access Technology that there was a change in keyboard focus. 622 // Notify Access Technology that there was a change in keyboard focus.
622 ::NotifyWinEvent(EVENT_OBJECT_FOCUS, wnd, OBJID_CLIENT, 623 ::NotifyWinEvent(EVENT_OBJECT_FOCUS, wnd, OBJID_CLIENT,
623 static_cast<LONG>(view_index)); 624 static_cast<LONG>(view_index));
624 #else 625 #else
625 // TODO(port): deal with toolbar a11y focus. 626 // TODO(port): deal with toolbar a11y focus.
626 NOTIMPLEMENTED(); 627 NOTIMPLEMENTED();
627 #endif 628 #endif
628 } 629 }
629 630
630 void ToolbarView::WillLoseFocus() { 631 void ToolbarView::WillLoseFocus() {
631 #if defined(OS_WIN)
632 if (acc_focused_view_) { 632 if (acc_focused_view_) {
633 // Resetting focus state. 633 // Resetting focus state.
634 acc_focused_view_->SetHotTracked(false); 634 acc_focused_view_->SetHotTracked(false);
635 } 635 }
636 // Any tooltips that are active should be hidden when toolbar loses focus. 636 // Any tooltips that are active should be hidden when toolbar loses focus.
637 if (GetWidget() && GetWidget()->GetTooltipManager()) 637 if (GetWidget() && GetWidget()->GetTooltipManager())
638 GetWidget()->GetTooltipManager()->HideKeyboardTooltip(); 638 GetWidget()->GetTooltipManager()->HideKeyboardTooltip();
639 #else
640 // TODO(port): deal with toolbar a11y focus.
641 NOTIMPLEMENTED();
642 #endif
643 } 639 }
644 640
645 bool ToolbarView::OnKeyPressed(const views::KeyEvent& e) { 641 bool ToolbarView::OnKeyPressed(const views::KeyEvent& e) {
646 #if defined(OS_WIN)
647 // Paranoia check, button should be initialized upon toolbar gaining focus. 642 // Paranoia check, button should be initialized upon toolbar gaining focus.
648 if (!acc_focused_view_) 643 if (!acc_focused_view_)
649 return false; 644 return false;
650 645
651 int focused_view = GetChildIndex(acc_focused_view_); 646 int focused_view = GetChildIndex(acc_focused_view_);
652 int next_view = focused_view; 647 int next_view = focused_view;
653 648
654 switch (e.GetCharacter()) { 649 switch (e.GetCharacter()) {
655 case VK_LEFT: 650 case base::VKEY_LEFT:
656 next_view = GetNextAccessibleViewIndex(focused_view, true); 651 next_view = GetNextAccessibleViewIndex(focused_view, true);
657 break; 652 break;
658 case VK_RIGHT: 653 case base::VKEY_RIGHT:
659 next_view = GetNextAccessibleViewIndex(focused_view, false); 654 next_view = GetNextAccessibleViewIndex(focused_view, false);
660 break; 655 break;
661 case VK_DOWN: 656 case base::VKEY_DOWN:
662 case VK_RETURN: 657 case base::VKEY_RETURN:
663 // VK_SPACE is already handled by the default case. 658 // VKEY_SPACE is already handled by the default case.
664 if (acc_focused_view_->GetID() == VIEW_ID_PAGE_MENU || 659 if (acc_focused_view_->GetID() == VIEW_ID_PAGE_MENU ||
665 acc_focused_view_->GetID() == VIEW_ID_APP_MENU) { 660 acc_focused_view_->GetID() == VIEW_ID_APP_MENU) {
666 // If a menu button in toolbar is activated and its menu is displayed, 661 // If a menu button in toolbar is activated and its menu is displayed,
667 // then active tooltip should be hidden. 662 // then active tooltip should be hidden.
668 if (GetWidget()->GetTooltipManager()) 663 if (GetWidget()->GetTooltipManager())
669 GetWidget()->GetTooltipManager()->HideKeyboardTooltip(); 664 GetWidget()->GetTooltipManager()->HideKeyboardTooltip();
670 // Safe to cast, given to above view id check. 665 // Safe to cast, given to above view id check.
671 static_cast<views::MenuButton*>(acc_focused_view_)->Activate(); 666 static_cast<views::MenuButton*>(acc_focused_view_)->Activate();
672 if (!acc_focused_view_) { 667 if (!acc_focused_view_) {
673 // Activate triggered a focus change, don't try to change focus. 668 // Activate triggered a focus change, don't try to change focus.
(...skipping 16 matching lines...) Expand all
690 if (next_view != focused_view) { 685 if (next_view != focused_view) {
691 // Remove hot-tracking from old focused button. 686 // Remove hot-tracking from old focused button.
692 acc_focused_view_->SetHotTracked(false); 687 acc_focused_view_->SetHotTracked(false);
693 688
694 // All is well, update the focused child member variable. 689 // All is well, update the focused child member variable.
695 acc_focused_view_ = GetChildViewAt(next_view); 690 acc_focused_view_ = GetChildViewAt(next_view);
696 691
697 // Hot-track new focused button. 692 // Hot-track new focused button.
698 acc_focused_view_->SetHotTracked(true); 693 acc_focused_view_->SetHotTracked(true);
699 694
700 // Retrieve information to generate an MSAA focus event.
701 int view_id = acc_focused_view_->GetID();
702 gfx::NativeView wnd = GetWidget()->GetNativeView();
703
704 // Show the tooltip for the view that got the focus. 695 // Show the tooltip for the view that got the focus.
705 if (GetWidget()->GetTooltipManager()) { 696 if (GetWidget()->GetTooltipManager()) {
706 GetWidget()->GetTooltipManager()-> 697 GetWidget()->GetTooltipManager()->
707 ShowKeyboardTooltip(GetChildViewAt(next_view)); 698 ShowKeyboardTooltip(GetChildViewAt(next_view));
708 } 699 }
700 #if defined(OS_WIN)
701 // Retrieve information to generate an MSAA focus event.
702 gfx::NativeView wnd = GetWidget()->GetNativeView();
703 int view_id = acc_focused_view_->GetID();
709 // Notify Access Technology that there was a change in keyboard focus. 704 // Notify Access Technology that there was a change in keyboard focus.
710 ::NotifyWinEvent(EVENT_OBJECT_FOCUS, wnd, OBJID_CLIENT, 705 ::NotifyWinEvent(EVENT_OBJECT_FOCUS, wnd, OBJID_CLIENT,
711 static_cast<LONG>(view_id)); 706 static_cast<LONG>(view_id));
707 #else
708 NOTIMPLEMENTED();
709 #endif
712 return true; 710 return true;
713 } 711 }
714 #else
715 // TODO(port): deal with toolbar a11y focus.
716 NOTIMPLEMENTED();
717 #endif
718 return false; 712 return false;
719 } 713 }
720 714
721 bool ToolbarView::OnKeyReleased(const views::KeyEvent& e) { 715 bool ToolbarView::OnKeyReleased(const views::KeyEvent& e) {
722 // Paranoia check, button should be initialized upon toolbar gaining focus. 716 // Paranoia check, button should be initialized upon toolbar gaining focus.
723 if (!acc_focused_view_) 717 if (!acc_focused_view_)
724 return false; 718 return false;
725 719
726 // Have keys be handled by the views themselves. 720 // Have keys be handled by the views themselves.
727 return acc_focused_view_->OnKeyReleased(e); 721 return acc_focused_view_->OnKeyReleased(e);
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 app_menu_contents_->AddItem(IDC_ABOUT, 1093 app_menu_contents_->AddItem(IDC_ABOUT,
1100 l10n_util::GetStringFUTF16( 1094 l10n_util::GetStringFUTF16(
1101 IDS_ABOUT, 1095 IDS_ABOUT,
1102 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); 1096 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
1103 app_menu_contents_->AddItemWithStringId(IDC_HELP_PAGE, IDS_HELP_PAGE); 1097 app_menu_contents_->AddItemWithStringId(IDC_HELP_PAGE, IDS_HELP_PAGE);
1104 app_menu_contents_->AddSeparator(); 1098 app_menu_contents_->AddSeparator();
1105 app_menu_contents_->AddItemWithStringId(IDC_EXIT, IDS_EXIT); 1099 app_menu_contents_->AddItemWithStringId(IDC_EXIT, IDS_EXIT);
1106 1100
1107 app_menu_menu_.reset(new views::Menu2(app_menu_contents_.get())); 1101 app_menu_menu_.reset(new views::Menu2(app_menu_contents_.get()));
1108 } 1102 }
OLDNEW
« no previous file with comments | « chrome/browser/views/bookmark_bar_view.cc ('k') | views/views.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698