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

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

Issue 27175: Fix toolbar keyboard focus (shift-alt-t), which was broken by me, and toolbar... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 10 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/toolbar_view.h ('k') | no next file » | 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "base/logging.h" 9 #include "base/logging.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 // For glass, we need to draw a black line below the location bar to separate 351 // For glass, we need to draw a black line below the location bar to separate
352 // it from the content area. For non-glass, the NonClientView draws the 352 // it from the content area. For non-glass, the NonClientView draws the
353 // toolbar background below the location bar for us. 353 // toolbar background below the location bar for us.
354 if (win_util::ShouldUseVistaFrame()) 354 if (win_util::ShouldUseVistaFrame())
355 canvas->FillRectInt(SK_ColorBLACK, 0, height() - 1, width(), 1); 355 canvas->FillRectInt(SK_ColorBLACK, 0, height() - 1, width(), 1);
356 } 356 }
357 357
358 void BrowserToolbarView::DidGainFocus() { 358 void BrowserToolbarView::DidGainFocus() {
359 // Check to see if MSAA focus should be restored to previously focused button, 359 // Check to see if MSAA focus should be restored to previously focused button,
360 // and if button is an enabled, visibled child of toolbar. 360 // and if button is an enabled, visibled child of toolbar.
361 if (!acc_focused_view() || 361 if (!acc_focused_view_ ||
362 (acc_focused_view()->GetParent()->GetID() != VIEW_ID_TOOLBAR) || 362 (acc_focused_view_->GetParent()->GetID() != VIEW_ID_TOOLBAR) ||
363 !acc_focused_view()->IsEnabled() || 363 !acc_focused_view_->IsEnabled() ||
364 !acc_focused_view()->IsVisible()) { 364 !acc_focused_view_->IsVisible()) {
365 // Find first accessible child (-1 to start search at parent). 365 // Find first accessible child (-1 to start search at parent).
366 int first_acc_child = GetNextAccessibleViewIndex(-1, false); 366 int first_acc_child = GetNextAccessibleViewIndex(-1, false);
367 367
368 // No buttons enabled or visible. 368 // No buttons enabled or visible.
369 if (first_acc_child == -1) 369 if (first_acc_child == -1)
370 return; 370 return;
371 371
372 set_acc_focused_view(GetChildViewAt(first_acc_child)); 372 set_acc_focused_view(GetChildViewAt(first_acc_child));
373 } 373 }
374 374
375 // Default focus is on the toolbar. 375 // Default focus is on the toolbar.
376 int view_index = VIEW_ID_TOOLBAR; 376 int view_index = VIEW_ID_TOOLBAR;
377 377
378 // Set hot-tracking for child, and update focused_view for MSAA focus event. 378 // Set hot-tracking for child, and update focused_view for MSAA focus event.
379 if (acc_focused_view()) { 379 if (acc_focused_view_) {
380 acc_focused_view()->SetHotTracked(true); 380 acc_focused_view_->SetHotTracked(true);
381 381
382 // Show the tooltip for the view that got the focus. 382 // Show the tooltip for the view that got the focus.
383 if (GetWidget()->GetTooltipManager()) 383 if (GetWidget()->GetTooltipManager())
384 GetWidget()->GetTooltipManager()->ShowKeyboardTooltip(acc_focused_view_); 384 GetWidget()->GetTooltipManager()->ShowKeyboardTooltip(acc_focused_view_);
385 385
386 // Update focused_view with MSAA-adjusted child id. 386 // Update focused_view with MSAA-adjusted child id.
387 view_index = acc_focused_view()->GetID(); 387 view_index = acc_focused_view_->GetID();
388 } 388 }
389 389
390 HWND hwnd = GetWidget()->GetHWND(); 390 HWND hwnd = GetWidget()->GetHWND();
391 391
392 // Notify Access Technology that there was a change in keyboard focus. 392 // Notify Access Technology that there was a change in keyboard focus.
393 ::NotifyWinEvent(EVENT_OBJECT_FOCUS, hwnd, OBJID_CLIENT, 393 ::NotifyWinEvent(EVENT_OBJECT_FOCUS, hwnd, OBJID_CLIENT,
394 static_cast<LONG>(view_index)); 394 static_cast<LONG>(view_index));
395 } 395 }
396 396
397 void BrowserToolbarView::WillLoseFocus() { 397 void BrowserToolbarView::WillLoseFocus() {
398 if (acc_focused_view()) { 398 if (acc_focused_view_) {
399 // Resetting focus state. 399 // Resetting focus state.
400 acc_focused_view()->SetHotTracked(false); 400 acc_focused_view_->SetHotTracked(false);
401 } 401 }
402 // Any tooltips that are active should be hidden when toolbar loses focus. 402 // Any tooltips that are active should be hidden when toolbar loses focus.
403 if (GetWidget() && GetWidget()->GetTooltipManager()) 403 if (GetWidget() && GetWidget()->GetTooltipManager())
404 GetWidget()->GetTooltipManager()->HideKeyboardTooltip(); 404 GetWidget()->GetTooltipManager()->HideKeyboardTooltip();
405 } 405 }
406 406
407 bool BrowserToolbarView::OnKeyPressed(const views::KeyEvent& e) { 407 bool BrowserToolbarView::OnKeyPressed(const views::KeyEvent& e) {
408 // Paranoia check, button should be initialized upon toolbar gaining focus. 408 // Paranoia check, button should be initialized upon toolbar gaining focus.
409 if (!acc_focused_view_) 409 if (!acc_focused_view_)
410 return false; 410 return false;
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 IDC_SELECT_PROFILE, l10n_util::GetString(IDS_SELECT_PROFILE)); 668 IDC_SELECT_PROFILE, l10n_util::GetString(IDS_SELECT_PROFILE));
669 } 669 }
670 670
671 // Always show a link to select a new profile. 671 // Always show a link to select a new profile.
672 profiles_menu_->AppendSeparator(); 672 profiles_menu_->AppendSeparator();
673 profiles_menu_->AppendMenuItemWithLabel( 673 profiles_menu_->AppendMenuItemWithLabel(
674 IDC_NEW_PROFILE, 674 IDC_NEW_PROFILE,
675 l10n_util::GetString(IDS_SELECT_PROFILE_DIALOG_NEW_PROFILE_ENTRY)); 675 l10n_util::GetString(IDS_SELECT_PROFILE_DIALOG_NEW_PROFILE_ENTRY));
676 } 676 }
677 677
678 bool BrowserToolbarView::GetAccessibleName(std::wstring* name) {
679 if (!accessible_name_.empty()) {
680 (*name).assign(accessible_name_);
681 return true;
682 }
683 return false;
684 }
685
678 bool BrowserToolbarView::GetAccessibleRole(VARIANT* role) { 686 bool BrowserToolbarView::GetAccessibleRole(VARIANT* role) {
679 DCHECK(role); 687 DCHECK(role);
680 688
681 role->vt = VT_I4; 689 role->vt = VT_I4;
682 role->lVal = ROLE_SYSTEM_TOOLBAR; 690 role->lVal = ROLE_SYSTEM_TOOLBAR;
683 return true; 691 return true;
684 } 692 }
685 693
686 bool BrowserToolbarView::GetAccessibleName(std::wstring* name) {
687 if (!accessible_name_.empty()) {
688 (*name).assign(accessible_name_);
689 return true;
690 }
691 return false;
692 }
693
694 void BrowserToolbarView::SetAccessibleName(const std::wstring& name) { 694 void BrowserToolbarView::SetAccessibleName(const std::wstring& name) {
695 accessible_name_.assign(name); 695 accessible_name_.assign(name);
696 } 696 }
697 697
698 int BrowserToolbarView::GetNextAccessibleViewIndex(int view_index, 698 int BrowserToolbarView::GetNextAccessibleViewIndex(int view_index,
699 bool nav_left) { 699 bool nav_left) {
700 int modifier = 1; 700 int modifier = 1;
701 701
702 if (nav_left) 702 if (nav_left)
703 modifier = -1; 703 modifier = -1;
(...skipping 13 matching lines...) Expand all
717 // Update view_index with the available button index found. 717 // Update view_index with the available button index found.
718 view_index = current_view_index; 718 view_index = current_view_index;
719 break; 719 break;
720 } 720 }
721 // Returns the next available button index, or if no button is available in 721 // Returns the next available button index, or if no button is available in
722 // the specified direction, remains where it was. 722 // the specified direction, remains where it was.
723 return view_index; 723 return view_index;
724 } 724 }
725 725
726 void BrowserToolbarView::ShowContextMenu(int x, int y, bool is_mouse_gesture) { 726 void BrowserToolbarView::ShowContextMenu(int x, int y, bool is_mouse_gesture) {
727 if (GetAccFocusedChildView()) 727 if (acc_focused_view_)
728 GetAccFocusedChildView()->ShowContextMenu(x, y, is_mouse_gesture); 728 acc_focused_view_->ShowContextMenu(x, y, is_mouse_gesture);
729 } 729 }
730 730
731 int BrowserToolbarView::GetDragOperations(views::View* sender, int x, int y) { 731 int BrowserToolbarView::GetDragOperations(views::View* sender, int x, int y) {
732 DCHECK(sender == star_); 732 DCHECK(sender == star_);
733 if (model_->input_in_progress() || !tab_ || !tab_->ShouldDisplayURL() || 733 if (model_->input_in_progress() || !tab_ || !tab_->ShouldDisplayURL() ||
734 !tab_->GetURL().is_valid()) { 734 !tab_->GetURL().is_valid()) {
735 return DragDropTypes::DRAG_NONE; 735 return DragDropTypes::DRAG_NONE;
736 } 736 }
737 if (profile_ && profile_->GetBookmarkModel() && 737 if (profile_ && profile_->GetBookmarkModel() &&
738 profile_->GetBookmarkModel()->IsBookmarked(tab_->GetURL())) { 738 profile_->GetBookmarkModel()->IsBookmarked(tab_->GetURL())) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 *accel = views::Accelerator(L'C', false, true, false); 828 *accel = views::Accelerator(L'C', false, true, false);
829 return true; 829 return true;
830 case IDC_PASTE: 830 case IDC_PASTE:
831 *accel = views::Accelerator(L'V', false, true, false); 831 *accel = views::Accelerator(L'V', false, true, false);
832 return true; 832 return true;
833 } 833 }
834 // Else, we retrieve the accelerator information from the frame. 834 // Else, we retrieve the accelerator information from the frame.
835 return GetWidget()->GetAccelerator(id, accel); 835 return GetWidget()->GetAccelerator(id, accel);
836 } 836 }
837 837
OLDNEW
« no previous file with comments | « chrome/browser/views/toolbar_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698