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

Side by Side Diff: ui/aura/window.cc

Issue 8770011: aura: Ask the WindowDelegate before a Window is Focus()ed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years 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 | « ui/aura/test/test_window_delegate.cc ('k') | ui/aura/window_delegate.h » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/aura/window.h" 5 #include "ui/aura/window.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 bool Window::HasFocus() const { 366 bool Window::HasFocus() const {
367 const internal::FocusManager* focus_manager = GetFocusManager(); 367 const internal::FocusManager* focus_manager = GetFocusManager();
368 return focus_manager ? focus_manager->IsFocusedWindow(this) : false; 368 return focus_manager ? focus_manager->IsFocusedWindow(this) : false;
369 } 369 }
370 370
371 // For a given window, we determine its focusability by inspecting each sibling 371 // For a given window, we determine its focusability by inspecting each sibling
372 // after it (i.e. drawn in front of it in the z-order) to see if it stops 372 // after it (i.e. drawn in front of it in the z-order) to see if it stops
373 // propagation of events that would otherwise be targeted at windows behind it. 373 // propagation of events that would otherwise be targeted at windows behind it.
374 // We then perform this same check on every window up to the root. 374 // We then perform this same check on every window up to the root.
375 bool Window::CanFocus() const { 375 bool Window::CanFocus() const {
376 // TODO(beng): Figure out how to consult the delegate wrt. focusability also. 376 if (!IsVisible() || !parent_ || (delegate_ && !delegate_->CanFocus()))
377 if (!IsVisible() || !parent_)
378 return false; 377 return false;
379 378
380 Windows::const_iterator i = std::find(parent_->children().begin(), 379 Windows::const_iterator i = std::find(parent_->children().begin(),
381 parent_->children().end(), 380 parent_->children().end(),
382 this); 381 this);
383 for (++i; i != parent_->children().end(); ++i) { 382 for (++i; i != parent_->children().end(); ++i) {
384 if ((*i)->StopsEventPropagation()) 383 if ((*i)->StopsEventPropagation())
385 return false; 384 return false;
386 } 385 }
387 return parent_->CanFocus(); 386 return parent_->CanFocus();
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 void Window::OnStackingChanged() { 553 void Window::OnStackingChanged() {
555 FOR_EACH_OBSERVER(WindowObserver, observers_, OnWindowStackingChanged(this)); 554 FOR_EACH_OBSERVER(WindowObserver, observers_, OnWindowStackingChanged(this));
556 } 555 }
557 556
558 void Window::OnPaintLayer(gfx::Canvas* canvas) { 557 void Window::OnPaintLayer(gfx::Canvas* canvas) {
559 if (delegate_) 558 if (delegate_)
560 delegate_->OnPaint(canvas); 559 delegate_->OnPaint(canvas);
561 } 560 }
562 561
563 } // namespace aura 562 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/test/test_window_delegate.cc ('k') | ui/aura/window_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698