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

Side by Side Diff: components/mus/ws/window_tree_impl.cc

Issue 1465803003: mus: Let clients set the cursor of their window. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Do it the other way + explicit checks that it is a mouse pointer. Created 5 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 unified diff | Download patch
« no previous file with comments | « components/mus/ws/window_tree_impl.h ('k') | components/mus/ws/window_tree_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/mus/ws/window_tree_impl.h" 5 #include "components/mus/ws/window_tree_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "components/mus/ws/connection_manager.h" 9 #include "components/mus/ws/connection_manager.h"
10 #include "components/mus/ws/default_access_policy.h" 10 #include "components/mus/ws/default_access_policy.h"
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 // Window is being hidden, won't be drawn. 357 // Window is being hidden, won't be drawn.
358 window_target_drawn_state = false; 358 window_target_drawn_state = false;
359 } else { 359 } else {
360 // Window is being shown. Window will be drawn if its parent is drawn. 360 // Window is being shown. Window will be drawn if its parent is drawn.
361 window_target_drawn_state = window->parent() && window->parent()->IsDrawn(); 361 window_target_drawn_state = window->parent() && window->parent()->IsDrawn();
362 } 362 }
363 363
364 NotifyDrawnStateChanged(window, window_target_drawn_state); 364 NotifyDrawnStateChanged(window, window_target_drawn_state);
365 } 365 }
366 366
367 void WindowTreeImpl::ProcessCursorChanged(const ServerWindow* window,
368 int32_t cursor_id,
369 bool originated_change) {
370 if (originated_change)
371 return;
372 client()->OnWindowPredefinedCursorChanged(WindowIdToTransportId(window->id()),
373 mojom::Cursor(cursor_id));
374 }
375
367 void WindowTreeImpl::ProcessFocusChanged( 376 void WindowTreeImpl::ProcessFocusChanged(
368 const ServerWindow* old_focused_window, 377 const ServerWindow* old_focused_window,
369 const ServerWindow* new_focused_window) { 378 const ServerWindow* new_focused_window) {
370 const ServerWindow* window = 379 const ServerWindow* window =
371 new_focused_window 380 new_focused_window
372 ? access_policy_->GetWindowForFocusChange(new_focused_window) 381 ? access_policy_->GetWindowForFocusChange(new_focused_window)
373 : nullptr; 382 : nullptr;
374 client()->OnWindowFocused(window ? WindowIdToTransportId(window->id()) 383 client()->OnWindowFocused(window ? WindowIdToTransportId(window->id())
375 : WindowIdToTransportId(WindowId())); 384 : WindowIdToTransportId(WindowId()));
376 } 385 }
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 host->SetFocusedWindow(window); 860 host->SetFocusedWindow(window);
852 } 861 }
853 } 862 }
854 863
855 void WindowTreeImpl::SetCanFocus(uint32_t window_id, bool can_focus) { 864 void WindowTreeImpl::SetCanFocus(uint32_t window_id, bool can_focus) {
856 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); 865 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id));
857 if (window && ShouldRouteToWindowManager(window)) 866 if (window && ShouldRouteToWindowManager(window))
858 window->set_can_focus(can_focus); 867 window->set_can_focus(can_focus);
859 } 868 }
860 869
870 void WindowTreeImpl::SetPredefinedCursor(uint32_t change_id,
871 uint32_t window_id,
872 mus::mojom::Cursor cursor_id) {
873 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id));
874
875 // Only the owner of the window can change the bounds.
876 bool success = window && access_policy_->CanSetCursorProperties(window);
877 if (success) {
878 Operation op(this, connection_manager_,
879 OperationType::SET_WINDOW_PREDEFINED_CURSOR);
880 window->SetPredefinedCursor(cursor_id);
881 }
882 client_->OnChangeCompleted(change_id, success);
883 }
884
861 void WindowTreeImpl::WmResponse(uint32 change_id, bool response) { 885 void WindowTreeImpl::WmResponse(uint32 change_id, bool response) {
862 if (GetHost() && GetHost()->GetWindowTree() == this) 886 if (GetHost() && GetHost()->GetWindowTree() == this)
863 connection_manager_->WindowManagerChangeCompleted(change_id, response); 887 connection_manager_->WindowManagerChangeCompleted(change_id, response);
864 } 888 }
865 889
866 bool WindowTreeImpl::IsRootForAccessPolicy(const WindowId& id) const { 890 bool WindowTreeImpl::IsRootForAccessPolicy(const WindowId& id) const {
867 return IsRoot(id); 891 return IsRoot(id);
868 } 892 }
869 893
870 bool WindowTreeImpl::IsWindowKnownForAccessPolicy( 894 bool WindowTreeImpl::IsWindowKnownForAccessPolicy(
871 const ServerWindow* window) const { 895 const ServerWindow* window) const {
872 return IsWindowKnown(window); 896 return IsWindowKnown(window);
873 } 897 }
874 898
875 bool WindowTreeImpl::IsWindowRootOfAnotherConnectionForAccessPolicy( 899 bool WindowTreeImpl::IsWindowRootOfAnotherConnectionForAccessPolicy(
876 const ServerWindow* window) const { 900 const ServerWindow* window) const {
877 WindowTreeImpl* connection = 901 WindowTreeImpl* connection =
878 connection_manager_->GetConnectionWithRoot(window->id()); 902 connection_manager_->GetConnectionWithRoot(window->id());
879 return connection && connection != this; 903 return connection && connection != this;
880 } 904 }
881 905
882 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { 906 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) {
883 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); 907 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window);
884 } 908 }
885 909
886 } // namespace ws 910 } // namespace ws
887 911
888 } // namespace mus 912 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/window_tree_impl.h ('k') | components/mus/ws/window_tree_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698