summaryrefslogtreecommitdiffstats
path: root/views/widget
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-26 14:22:06 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-26 14:22:06 +0000
commit6e30832df8bdc9641c7c04a96dd14c38f913df5d (patch)
tree9e7731662776e0b06959e502dfa8ef34e2c62714 /views/widget
parent537e965d1e0780597ca6e3a21d43893097a3733c (diff)
downloadchromium_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.cc6
-rw-r--r--views/widget/native_widget_win.cc4
-rw-r--r--views/widget/widget.cc4
-rw-r--r--views/widget/widget.h4
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;