| Index: views/view.cc
|
| diff --git a/views/view.cc b/views/view.cc
|
| index 35a0ccf3e917f26f1a8fb26815a03afa86dba958..46c86d7458e0f6230fee6019548fc6b5fc1d49f2 100644
|
| --- a/views/view.cc
|
| +++ b/views/view.cc
|
| @@ -176,6 +176,32 @@ void View::AddChildViewAt(View* view, int index) {
|
| view->MarkTextureDirty();
|
| }
|
|
|
| +void View::ReorderChildView(View* view, int index) {
|
| + DCHECK_EQ(view->parent_, this);
|
| + if (index < 0)
|
| + index = child_count() - 1;
|
| + else if (index >= child_count())
|
| + return;
|
| + if (children_[index] == view)
|
| + return;
|
| +
|
| + const Views::iterator i(std::find(children_.begin(), children_.end(), view));
|
| + DCHECK(i != children_.end());
|
| + children_.erase(i);
|
| +
|
| + // Unlink the view first
|
| + View* next_focusable = view->next_focusable_view_;
|
| + View* prev_focusable = view->previous_focusable_view_;
|
| + if (prev_focusable)
|
| + prev_focusable->next_focusable_view_ = next_focusable;
|
| + if (next_focusable)
|
| + next_focusable->previous_focusable_view_ = prev_focusable;
|
| +
|
| + // Add it in the specified index now.
|
| + InitFocusSiblings(view, index);
|
| + children_.insert(children_.begin() + index, view);
|
| +}
|
| +
|
| void View::RemoveChildView(View* view) {
|
| DoRemoveChildView(view, true, true, false);
|
| }
|
|
|