diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-26 14:22:06 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-26 14:22:06 +0000 |
commit | 6e30832df8bdc9641c7c04a96dd14c38f913df5d (patch) | |
tree | 9e7731662776e0b06959e502dfa8ef34e2c62714 /views/widget | |
parent | 537e965d1e0780597ca6e3a21d43893097a3733c (diff) | |
download | chromium_src-6e30832df8bdc9641c7c04a96dd14c38f913df5d.zip chromium_src-6e30832df8bdc9641c7c04a96dd14c38f913df5d.tar.gz chromium_src-6e30832df8bdc9641c7c04a96dd14c38f913df5d.tar.bz2 |
Adds transient children to Window. A transient child is owned by the
transient parent and is forced to always be on top of transient
parent (assuming they have the same parent).
BUG=100088
TEST=none
R=ben@chromium.org
Review URL: http://codereview.chromium.org/8391027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107348 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget')
-rw-r--r-- | views/widget/native_widget_aura.cc | 6 | ||||
-rw-r--r-- | views/widget/native_widget_win.cc | 4 | ||||
-rw-r--r-- | views/widget/widget.cc | 4 | ||||
-rw-r--r-- | views/widget/widget.h | 4 |
4 files changed, 13 insertions, 5 deletions
diff --git a/views/widget/native_widget_aura.cc b/views/widget/native_widget_aura.cc index b1adcea..4d0da79 100644 --- a/views/widget/native_widget_aura.cc +++ b/views/widget/native_widget_aura.cc @@ -85,10 +85,12 @@ void NativeWidgetAura::InitNativeWidget(const Widget::InitParams& params) { window_->set_minimum_size(delegate_->GetMinimumSize()); window_->SetBounds(params.bounds); if (params.type == Widget::InitParams::TYPE_CONTROL) { - window_->SetParent(params.parent); + window_->SetParent(params.GetParent()); } else { window_->SetParent(NULL); - // TODO(derat): Set Transient Parent. + gfx::NativeView parent = params.GetParent(); + if (parent) + parent->AddTransientChild(window_); } // TODO(beng): do this some other way. delegate_->OnNativeWidgetSizeChanged(params.bounds.size()); diff --git a/views/widget/native_widget_win.cc b/views/widget/native_widget_win.cc index b6f1a3f..554d0e62 100644 --- a/views/widget/native_widget_win.cc +++ b/views/widget/native_widget_win.cc @@ -503,9 +503,7 @@ void NativeWidgetWin::InitNativeWidget(const Widget::InitParams& params) { &last_monitor_rect_, &last_work_area_); // Create the window. - gfx::NativeView parent = params.parent_widget ? - params.parent_widget->GetNativeView() : params.parent; - WindowImpl::Init(parent, params.bounds); + WindowImpl::Init(params.GetParent(), params.bounds); } NonClientFrameView* NativeWidgetWin::CreateNonClientFrameView() { diff --git a/views/widget/widget.cc b/views/widget/widget.cc index 6c8dbcc..4060abb 100644 --- a/views/widget/widget.cc +++ b/views/widget/widget.cc @@ -143,6 +143,10 @@ Widget::InitParams::InitParams(Type type) top_level(false) { } +gfx::NativeView Widget::InitParams::GetParent() const { + return parent_widget ? parent_widget->GetNativeView() : parent; +} + //////////////////////////////////////////////////////////////////////////////// // Widget, public: diff --git a/views/widget/widget.h b/views/widget/widget.h index 296cab0..82865da 100644 --- a/views/widget/widget.h +++ b/views/widget/widget.h @@ -134,6 +134,10 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, InitParams(); explicit InitParams(Type type); + // If |parent_widget| is non-null, it's native view is returned, otherwise + // |parent| is returned. + gfx::NativeView GetParent() const; + Type type; // If NULL, a default implementation will be constructed. WidgetDelegate* delegate; |