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

Unified Diff: mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.cc

Issue 805123003: Adds capture to the mojo window_manager. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: sky comments Created 6 years 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
Index: mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.cc
diff --git a/mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.cc b/mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.cc
index 3ebb4c7e7a2be6b8337ec5988370e087e62c9b73..a51e23475ce66b1ec1e0c336e9dc129979d898fc 100644
--- a/mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.cc
+++ b/mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.cc
@@ -100,6 +100,7 @@ ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate,
next_id_(1),
delegate_(delegate),
root_(nullptr),
+ capture_view_(nullptr),
focused_view_(nullptr),
activated_view_(nullptr),
binding_(this, handle.Pass()),
@@ -381,7 +382,21 @@ void ViewManagerClientImpl::OnViewInputEvent(
// ViewManagerClientImpl, WindowManagerClient implementation:
void ViewManagerClientImpl::OnCaptureChanged(Id old_capture_view_id,
- Id new_capture_view_id) {}
+ Id new_capture_view_id) {
+ View* gained_capture = GetViewById(new_capture_view_id);
+ View* lost_capture = GetViewById(old_capture_view_id);
+ if (lost_capture) {
+ FOR_EACH_OBSERVER(ViewObserver,
+ *ViewPrivate(lost_capture).observers(),
+ OnViewFocusChanged(gained_capture, lost_capture));
+ }
+ capture_view_ = gained_capture;
+ if (gained_capture) {
+ FOR_EACH_OBSERVER(ViewObserver,
+ *ViewPrivate(gained_capture).observers(),
+ OnViewFocusChanged(gained_capture, lost_capture));
+ }
+}
void ViewManagerClientImpl::OnFocusChanged(Id old_focused_view_id,
Id new_focused_view_id) {
« no previous file with comments | « mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.h ('k') | mojo/services/view_manager/public/cpp/view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698