#include "ui/views/focus/focus_manager.h"
#include <utility>
#include <vector>
#include "base/auto_reset.h"
#include "base/check_op.h"
#include "base/i18n/rtl.h"
#include "base/observer_list.h"
#include "base/ranges/algorithm.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "ui/base/accelerators/accelerator.h"
#include "ui/base/ime/input_method.h"
#include "ui/base/ime/text_input_client.h"
#include "ui/events/event.h"
#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/views/bubble/bubble_dialog_delegate_view.h"
#include "ui/views/focus/focus_manager_delegate.h"
#include "ui/views/focus/focus_search.h"
#include "ui/views/focus/widget_focus_manager.h"
#include "ui/views/view.h"
#include "ui/views/view_class_properties.h"
#include "ui/views/view_tracker.h"
#include "ui/views/widget/root_view.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h"
namespace views {
bool FocusManager::arrow_key_traversal_enabled_ = …;
FocusManager::FocusManager(Widget* widget,
std::unique_ptr<FocusManagerDelegate> delegate)
: … { … }
FocusManager::~FocusManager() { … }
bool FocusManager::OnKeyEvent(const ui::KeyEvent& event) { … }
bool FocusManager::ContainsView(View* view) { … }
void FocusManager::AdvanceFocus(bool reverse) { … }
void FocusManager::ClearNativeFocus() { … }
bool FocusManager::RotatePaneFocus(Direction direction,
FocusCycleWrapping wrapping) { … }
View* FocusManager::GetNextFocusableView(View* original_starting_view,
Widget* starting_widget,
bool reverse,
bool dont_loop) { … }
void FocusManager::SetKeyboardAccessible(bool keyboard_accessible) { … }
bool FocusManager::IsSettingFocusedView() const { … }
void FocusManager::SetFocusedViewWithReason(View* view,
FocusChangeReason reason) { … }
void FocusManager::SetFocusedView(View* view) { … }
void FocusManager::ClearFocus() { … }
void FocusManager::AdvanceFocusIfNecessary() { … }
void FocusManager::StoreFocusedView(bool clear_native_focus) { … }
bool FocusManager::RestoreFocusedView() { … }
void FocusManager::SetStoredFocusView(View* focus_view) { … }
View* FocusManager::GetStoredFocusView() { … }
View* FocusManager::FindFocusableView(FocusTraversable* focus_traversable,
View* starting_view,
bool reverse) { … }
void FocusManager::RegisterAccelerator(
const ui::Accelerator& accelerator,
ui::AcceleratorManager::HandlerPriority priority,
ui::AcceleratorTarget* target) { … }
void FocusManager::UnregisterAccelerator(const ui::Accelerator& accelerator,
ui::AcceleratorTarget* target) { … }
void FocusManager::UnregisterAccelerators(ui::AcceleratorTarget* target) { … }
bool FocusManager::ProcessAccelerator(const ui::Accelerator& accelerator) { … }
bool FocusManager::IsAcceleratorRegistered(
const ui::Accelerator& accelerator) const { … }
bool FocusManager::HasPriorityHandler(
const ui::Accelerator& accelerator) const { … }
bool FocusManager::IsTabTraversalKeyEvent(const ui::KeyEvent& key_event) { … }
void FocusManager::ViewRemoved(View* removed) { … }
void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { … }
void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { … }
bool FocusManager::ProcessArrowKeyTraversal(const ui::KeyEvent& event) { … }
bool FocusManager::IsFocusable(View* view) const { … }
void FocusManager::OnViewIsDeleting(View* view) { … }
bool FocusManager::RedirectAcceleratorToBubbleAnchorWidget(
const ui::Accelerator& accelerator) { … }
bool FocusManager::IsArrowKeyTraversalEnabledForWidget() const { … }
}