| Index: ui/views/widget/native_widget_mac.mm
|
| diff --git a/ui/views/widget/native_widget_mac.mm b/ui/views/widget/native_widget_mac.mm
|
| index f40c2f476281fbcb4ba69d29ecb56291ff407a46..1b4d04a09ff3c1406eadbb8b5bd18edae701dc50 100644
|
| --- a/ui/views/widget/native_widget_mac.mm
|
| +++ b/ui/views/widget/native_widget_mac.mm
|
| @@ -587,7 +587,34 @@ void NativeWidgetPrivate::GetAllOwnedWidgets(gfx::NativeView native_view,
|
| // static
|
| void NativeWidgetPrivate::ReparentNativeView(gfx::NativeView native_view,
|
| gfx::NativeView new_parent) {
|
| - NOTIMPLEMENTED();
|
| + DCHECK_NE(native_view, new_parent);
|
| +
|
| + gfx::NativeView old_parent = [native_view superview];
|
| + if (old_parent == new_parent)
|
| + return;
|
| +
|
| + // On Mac, changing the native view heirarchy will affect at most two Widgets.
|
| + NativeWidgetPrivate* old_parent_widget =
|
| + GetNativeWidgetForNativeView(native_view);
|
| + NativeWidgetPrivate* new_parent_widget =
|
| + GetNativeWidgetForNativeView(new_parent);
|
| +
|
| + if (old_parent_widget == new_parent_widget)
|
| + old_parent_widget = NULL;
|
| + if (old_parent_widget)
|
| + old_parent_widget->GetWidget()->NotifyNativeViewHierarchyWillChange();
|
| + if (new_parent_widget)
|
| + new_parent_widget->GetWidget()->NotifyNativeViewHierarchyWillChange();
|
| +
|
| + [native_view removeFromSuperview];
|
| +
|
| + if (new_parent)
|
| + [new_parent addSubview:native_view];
|
| +
|
| + if (old_parent_widget)
|
| + old_parent_widget->GetWidget()->NotifyNativeViewHierarchyChanged();
|
| + if (new_parent_widget)
|
| + new_parent_widget->GetWidget()->NotifyNativeViewHierarchyChanged();
|
| }
|
|
|
| // static
|
|
|