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

Side by Side Diff: ui/views/focus/focus_manager.h

Issue 838253004: MacViews: Fix duplicate definition of ExtensionKeyBindingRegistry::SetShortcutHandlingSuspended (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@DragBookmarks2
Patch Set: Use callback Created 5 years, 11 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
OLDNEW
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 #ifndef UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ 5 #ifndef UI_VIEWS_FOCUS_FOCUS_MANAGER_H_
6 #define UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ 6 #define UI_VIEWS_FOCUS_FOCUS_MANAGER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/callback.h"
12 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
13 #include "base/observer_list.h" 14 #include "base/observer_list.h"
14 #include "ui/base/accelerators/accelerator.h" 15 #include "ui/base/accelerators/accelerator.h"
15 #include "ui/base/accelerators/accelerator_manager.h" 16 #include "ui/base/accelerators/accelerator_manager.h"
16 #include "ui/gfx/native_widget_types.h" 17 #include "ui/gfx/native_widget_types.h"
17 #include "ui/views/views_export.h" 18 #include "ui/views/views_export.h"
18 19
19 // The FocusManager class is used to handle focus traversal, store/restore 20 // The FocusManager class is used to handle focus traversal, store/restore
20 // focused views and handle keyboard accelerators. 21 // focused views and handle keyboard accelerators.
21 // 22 //
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 219
219 // Changes the text input focus to |view->GetTextInputClient()| iff |view| 220 // Changes the text input focus to |view->GetTextInputClient()| iff |view|
220 // is focused. Views must call this method when their internal 221 // is focused. Views must call this method when their internal
221 // TextInputClient instance changes. 222 // TextInputClient instance changes.
222 void OnTextInputClientChanged(View* view); 223 void OnTextInputClientChanged(View* view);
223 224
224 // Moves the text input focus into/out from |view|. 225 // Moves the text input focus into/out from |view|.
225 void FocusTextInputClient(View* view); 226 void FocusTextInputClient(View* view);
226 void BlurTextInputClient(View* view); 227 void BlurTextInputClient(View* view);
227 228
228 // Disable shortcut handling. 229 // Installs a callback to control whether to disable shortcut handling.
229 static void set_shortcut_handling_suspended(bool suspended) { 230 // Accelerator processing is skipped if |callback| returns true.
230 shortcut_handling_suspended_ = suspended; 231 typedef base::Callback<bool()> ReturnBoolCallback;
231 } 232 void set_shortcut_handling_suspended_callback(ReturnBoolCallback* callback);
233
232 // Returns whether shortcut handling is currently suspended. 234 // Returns whether shortcut handling is currently suspended.
233 bool shortcut_handling_suspended() { return shortcut_handling_suspended_; } 235 bool shortcut_handling_suspended() const;
234 236
235 // Register a keyboard accelerator for the specified target. If multiple 237 // Register a keyboard accelerator for the specified target. If multiple
236 // targets are registered for an accelerator, a target registered later has 238 // targets are registered for an accelerator, a target registered later has
237 // higher priority. 239 // higher priority.
238 // |accelerator| is the accelerator to register. 240 // |accelerator| is the accelerator to register.
239 // |priority| denotes the priority of the handler. 241 // |priority| denotes the priority of the handler.
240 // NOTE: In almost all cases, you should specify kNormalPriority for this 242 // NOTE: In almost all cases, you should specify kNormalPriority for this
241 // parameter. Setting it to kHighPriority prevents Chrome from sending the 243 // parameter. Setting it to kHighPriority prevents Chrome from sending the
242 // shortcut to the webpage if the renderer has focus, which is not desirable 244 // shortcut to the webpage if the renderer has focus, which is not desirable
243 // except for very isolated cases. 245 // except for very isolated cases.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 // hierarchy. 339 // hierarchy.
338 // Returns NULL if no focusable view were found. 340 // Returns NULL if no focusable view were found.
339 View* FindFocusableView(FocusTraversable* focus_traversable, 341 View* FindFocusableView(FocusTraversable* focus_traversable,
340 View* starting_view, 342 View* starting_view,
341 bool reverse); 343 bool reverse);
342 344
343 // Process arrow key traversal. Returns true if the event has been consumed 345 // Process arrow key traversal. Returns true if the event has been consumed
344 // and should not be processed further. 346 // and should not be processed further.
345 bool ProcessArrowKeyTraversal(const ui::KeyEvent& event); 347 bool ProcessArrowKeyTraversal(const ui::KeyEvent& event);
346 348
347 // Keeps track of whether shortcut handling is currently suspended.
348 static bool shortcut_handling_suspended_;
349
350 // Whether arrow key traversal is enabled. 349 // Whether arrow key traversal is enabled.
351 static bool arrow_key_traversal_enabled_; 350 static bool arrow_key_traversal_enabled_;
352 351
353 // The top-level Widget this FocusManager is associated with. 352 // The top-level Widget this FocusManager is associated with.
354 Widget* widget_; 353 Widget* widget_;
355 354
356 // The object which handles an accelerator when |accelerator_manager_| doesn't 355 // The object which handles an accelerator when |accelerator_manager_| doesn't
357 // handle it. 356 // handle it.
358 scoped_ptr<FocusManagerDelegate> delegate_; 357 scoped_ptr<FocusManagerDelegate> delegate_;
359 358
360 // The view that currently is focused. 359 // The view that currently is focused.
361 View* focused_view_; 360 View* focused_view_;
362 361
363 // The AcceleratorManager this FocusManager is associated with. 362 // The AcceleratorManager this FocusManager is associated with.
364 scoped_ptr<ui::AcceleratorManager> accelerator_manager_; 363 scoped_ptr<ui::AcceleratorManager> accelerator_manager_;
365 364
365 // Accelerator processing is skipped if this callback returns true.
366 ReturnBoolCallback* shortcut_handling_suspended_callback_;
367
366 // The storage id used in the ViewStorage to store/restore the view that last 368 // The storage id used in the ViewStorage to store/restore the view that last
367 // had focus. 369 // had focus.
368 int stored_focused_view_storage_id_; 370 int stored_focused_view_storage_id_;
369 371
370 // The reason why the focus most recently changed. 372 // The reason why the focus most recently changed.
371 FocusChangeReason focus_change_reason_; 373 FocusChangeReason focus_change_reason_;
372 374
373 // The list of registered FocusChange listeners. 375 // The list of registered FocusChange listeners.
374 ObserverList<FocusChangeListener, true> focus_change_listeners_; 376 ObserverList<FocusChangeListener, true> focus_change_listeners_;
375 377
376 // See description above getter. 378 // See description above getter.
377 bool is_changing_focus_; 379 bool is_changing_focus_;
378 380
379 DISALLOW_COPY_AND_ASSIGN(FocusManager); 381 DISALLOW_COPY_AND_ASSIGN(FocusManager);
380 }; 382 };
381 383
382 } // namespace views 384 } // namespace views
383 385
384 #endif // UI_VIEWS_FOCUS_FOCUS_MANAGER_H_ 386 #endif // UI_VIEWS_FOCUS_FOCUS_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698