Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(650)

Unified Diff: mojo/views/native_widget_view_manager.cc

Issue 383123006: Preliminary interactive layout of window manager's demo_launcher (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Looks Good Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/views/native_widget_view_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/views/native_widget_view_manager.cc
diff --git a/mojo/views/native_widget_view_manager.cc b/mojo/views/native_widget_view_manager.cc
index 36a65786e101b21da096aa89b764d0144be3855a..1d92e22148c4c4fe92dffa6592d0684bc6c52ce2 100644
--- a/mojo/views/native_widget_view_manager.cc
+++ b/mojo/views/native_widget_view_manager.cc
@@ -90,9 +90,11 @@ class MinimalInputEventFilter : public ui::internal::InputMethodDelegate,
NativeWidgetViewManager::NativeWidgetViewManager(
views::internal::NativeWidgetDelegate* delegate, view_manager::Node* node)
: NativeWidgetAura(delegate),
- node_(node) {
+ node_(node),
+ view_(node_->active_view()) {
node_->AddObserver(this);
- node_->active_view()->AddObserver(this);
+ if (view_)
+ view_->AddObserver(this);
window_tree_host_.reset(new WindowTreeHostMojo(node_, this));
window_tree_host_->InitHost();
@@ -113,9 +115,10 @@ NativeWidgetViewManager::NativeWidgetViewManager(
}
NativeWidgetViewManager::~NativeWidgetViewManager() {
- if (node_->active_view())
- node_->active_view()->RemoveObserver(this);
- node_->RemoveObserver(this);
+ if (view_)
+ view_->RemoveObserver(this);
+ if (node_)
+ node_->RemoveObserver(this);
}
void NativeWidgetViewManager::InitNativeWidget(
@@ -129,13 +132,23 @@ void NativeWidgetViewManager::InitNativeWidget(
void NativeWidgetViewManager::CompositorContentsChanged(
const SkBitmap& bitmap) {
- node_->active_view()->SetContents(bitmap);
+ if (view_)
+ view_->SetContents(bitmap);
}
void NativeWidgetViewManager::OnNodeDestroyed(view_manager::Node* node) {
+ DCHECK_EQ(node, node_);
+ node->RemoveObserver(this);
+ node_ = NULL;
window_tree_host_.reset();
}
+void NativeWidgetViewManager::OnNodeBoundsChanged(view_manager::Node* node,
+ const gfx::Rect& old_bounds,
+ const gfx::Rect& new_bounds) {
+ GetWidget()->SetBounds(gfx::Rect(node->bounds().size()));
+}
+
void NativeWidgetViewManager::OnNodeActiveViewChanged(
view_manager::Node* node,
view_manager::View* old_view,
@@ -144,6 +157,7 @@ void NativeWidgetViewManager::OnNodeActiveViewChanged(
old_view->RemoveObserver(this);
if (new_view)
new_view->AddObserver(this);
+ view_ = new_view;
}
void NativeWidgetViewManager::OnViewInputEvent(view_manager::View* view,
@@ -153,4 +167,10 @@ void NativeWidgetViewManager::OnViewInputEvent(view_manager::View* view,
window_tree_host_->SendEventToProcessor(ui_event.get());
}
+void NativeWidgetViewManager::OnViewDestroyed(view_manager::View* view) {
+ DCHECK_EQ(view, view_);
+ view->RemoveObserver(this);
+ view_ = NULL;
+}
+
} // namespace mojo
« no previous file with comments | « mojo/views/native_widget_view_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698