| Index: views/widget/widget_win.cc
|
| ===================================================================
|
| --- views/widget/widget_win.cc (revision 50246)
|
| +++ views/widget/widget_win.cc (working copy)
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -57,7 +57,9 @@
|
| is_mouse_down_(false),
|
| is_window_(false),
|
| restore_focus_when_enabled_(false),
|
| - delegate_(NULL) {
|
| + delegate_(NULL),
|
| + accessibility_view_events_index_(-1),
|
| + accessibility_view_events_(kMaxAccessibilityViewEvents) {
|
| }
|
|
|
| WidgetWin::~WidgetWin() {
|
| @@ -112,6 +114,31 @@
|
| contents_.reset(NULL);
|
| }
|
|
|
| +View* WidgetWin::GetAccessibilityViewEventAt(int id) {
|
| + // Convert from MSAA child id.
|
| + id = -(id + 1);
|
| + DCHECK(id >= 0 && id < kMaxAccessibilityViewEvents);
|
| + return accessibility_view_events_[id];
|
| +}
|
| +
|
| +int WidgetWin::AddAccessibilityViewEvent(View* view) {
|
| + accessibility_view_events_index_ =
|
| + (accessibility_view_events_index_ + 1) % kMaxAccessibilityViewEvents;
|
| + accessibility_view_events_[accessibility_view_events_index_] = view;
|
| +
|
| + // Convert to MSAA child id.
|
| + return -(accessibility_view_events_index_ + 1);
|
| +}
|
| +
|
| +void WidgetWin::ClearAccessibilityViewEvent(View* view) {
|
| + for (std::vector<View*>::iterator it = accessibility_view_events_.begin();
|
| + it != accessibility_view_events_.end();
|
| + ++it) {
|
| + if (*it == view)
|
| + *it = NULL;
|
| + }
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // Widget implementation:
|
|
|
| @@ -428,6 +455,9 @@
|
| View *child) {
|
| if (drop_target_.get())
|
| drop_target_->ResetTargetViewIfEquals(child);
|
| +
|
| + if (!is_add)
|
| + ClearAccessibilityViewEvent(child);
|
| }
|
|
|
|
|
|
|