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

Side by Side Diff: services/ui/ws/window_tree.cc

Issue 2830703003: [views-mus] Support custom cursors. (Closed)
Patch Set: rebase to tot Created 3 years, 8 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 unified diff | Download patch
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 "services/ui/ws/window_tree.h" 5 #include "services/ui/ws/window_tree.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 return; 891 return;
892 892
893 ClientWindowId client_window_id; 893 ClientWindowId client_window_id;
894 if (IsWindowKnown(window, &client_window_id)) { 894 if (IsWindowKnown(window, &client_window_id)) {
895 client()->OnWindowOpacityChanged(client_window_id.id, old_opacity, 895 client()->OnWindowOpacityChanged(client_window_id.id, old_opacity,
896 new_opacity); 896 new_opacity);
897 } 897 }
898 } 898 }
899 899
900 void WindowTree::ProcessCursorChanged(const ServerWindow* window, 900 void WindowTree::ProcessCursorChanged(const ServerWindow* window,
901 mojom::CursorType cursor_id, 901 const ui::CursorData& cursor,
902 bool originated_change) { 902 bool originated_change) {
903 if (originated_change) 903 if (originated_change)
904 return; 904 return;
905 ClientWindowId client_window_id; 905 ClientWindowId client_window_id;
906 if (!IsWindowKnown(window, &client_window_id)) 906 if (!IsWindowKnown(window, &client_window_id))
907 return; 907 return;
908 908
909 client()->OnWindowPredefinedCursorChanged(client_window_id.id, cursor_id); 909 client()->OnWindowCursorChanged(client_window_id.id, cursor);
910 } 910 }
911 911
912 void WindowTree::ProcessFocusChanged(const ServerWindow* old_focused_window, 912 void WindowTree::ProcessFocusChanged(const ServerWindow* old_focused_window,
913 const ServerWindow* new_focused_window) { 913 const ServerWindow* new_focused_window) {
914 if (window_server_->current_operation_type() == OperationType::SET_FOCUS && 914 if (window_server_->current_operation_type() == OperationType::SET_FOCUS &&
915 window_server_->IsOperationSource(id_)) { 915 window_server_->IsOperationSource(id_)) {
916 return; 916 return;
917 } 917 }
918 const ServerWindow* window = 918 const ServerWindow* window =
919 new_focused_window 919 new_focused_window
(...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after
1766 1766
1767 void WindowTree::SetEventTargetingPolicy(Id transport_window_id, 1767 void WindowTree::SetEventTargetingPolicy(Id transport_window_id,
1768 mojom::EventTargetingPolicy policy) { 1768 mojom::EventTargetingPolicy policy) {
1769 ServerWindow* window = 1769 ServerWindow* window =
1770 GetWindowByClientId(ClientWindowId(transport_window_id)); 1770 GetWindowByClientId(ClientWindowId(transport_window_id));
1771 // TODO(riajiang): check |event_queue_| is empty for |window|. 1771 // TODO(riajiang): check |event_queue_| is empty for |window|.
1772 if (window && access_policy_->CanSetEventTargetingPolicy(window)) 1772 if (window && access_policy_->CanSetEventTargetingPolicy(window))
1773 window->set_event_targeting_policy(policy); 1773 window->set_event_targeting_policy(policy);
1774 } 1774 }
1775 1775
1776 void WindowTree::SetPredefinedCursor(uint32_t change_id, 1776 void WindowTree::SetCursor(uint32_t change_id,
1777 Id transport_window_id, 1777 Id transport_window_id,
1778 ui::mojom::CursorType cursor_id) { 1778 ui::CursorData cursor) {
1779 ServerWindow* window = 1779 ServerWindow* window =
sky 2017/04/26 22:16:16 Should this fail if cursor type is custom and curs
Elliot Glaysher 2017/04/26 23:09:04 Changed this method to do lots of validation with
sky 2017/04/26 23:35:01 I think you meant *love* :) Seriously though, I ha
1780 GetWindowByClientId(ClientWindowId(transport_window_id)); 1780 GetWindowByClientId(ClientWindowId(transport_window_id));
1781 1781
1782 // Only the owner of the window can change the bounds. 1782 // Only the owner of the window can change the bounds.
1783 bool success = window && access_policy_->CanSetCursorProperties(window); 1783 bool success = window && access_policy_->CanSetCursorProperties(window);
1784 if (success) { 1784 if (success) {
1785 Operation op(this, window_server_, 1785 Operation op(this, window_server_,
1786 OperationType::SET_WINDOW_PREDEFINED_CURSOR); 1786 OperationType::SET_WINDOW_PREDEFINED_CURSOR);
1787 window->SetPredefinedCursor(cursor_id); 1787 window->SetCursor(cursor);
1788 } 1788 }
1789 client()->OnChangeCompleted(change_id, success); 1789 client()->OnChangeCompleted(change_id, success);
1790 } 1790 }
1791 1791
1792 void WindowTree::DeactivateWindow(Id window_id) { 1792 void WindowTree::DeactivateWindow(Id window_id) {
1793 ServerWindow* window = 1793 ServerWindow* window =
1794 GetWindowByClientId(ClientWindowId(window_id)); 1794 GetWindowByClientId(ClientWindowId(window_id));
1795 if (!window) { 1795 if (!window) {
1796 DVLOG(1) << "DeactivateWindow failed (invalid id)"; 1796 DVLOG(1) << "DeactivateWindow failed (invalid id)";
1797 return; 1797 return;
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
2225 // TODO(sky): think about what else case means. 2225 // TODO(sky): think about what else case means.
2226 } 2226 }
2227 2227
2228 void WindowTree::WmSetFrameDecorationValues( 2228 void WindowTree::WmSetFrameDecorationValues(
2229 mojom::FrameDecorationValuesPtr values) { 2229 mojom::FrameDecorationValuesPtr values) {
2230 DCHECK(window_manager_state_); 2230 DCHECK(window_manager_state_);
2231 window_manager_state_->SetFrameDecorationValues(std::move(values)); 2231 window_manager_state_->SetFrameDecorationValues(std::move(values));
2232 } 2232 }
2233 2233
2234 void WindowTree::WmSetNonClientCursor(uint32_t window_id, 2234 void WindowTree::WmSetNonClientCursor(uint32_t window_id,
2235 mojom::CursorType cursor_id) { 2235 ui::CursorData cursor) {
2236 DCHECK(window_manager_state_); 2236 DCHECK(window_manager_state_);
2237 ServerWindow* window = GetWindowByClientId(ClientWindowId(window_id)); 2237 ServerWindow* window = GetWindowByClientId(ClientWindowId(window_id));
2238 if (window) { 2238 if (window) {
2239 window->SetNonClientCursor(cursor_id); 2239 window->SetNonClientCursor(cursor);
2240 } else { 2240 } else {
2241 DVLOG(1) << "trying to update non-client cursor of invalid window"; 2241 DVLOG(1) << "trying to update non-client cursor of invalid window";
2242 } 2242 }
2243 } 2243 }
2244 2244
2245 void WindowTree::OnWmCreatedTopLevelWindow(uint32_t change_id, 2245 void WindowTree::OnWmCreatedTopLevelWindow(uint32_t change_id,
2246 Id transport_window_id) { 2246 Id transport_window_id) {
2247 ServerWindow* window = 2247 ServerWindow* window =
2248 GetWindowByClientId(ClientWindowId(transport_window_id)); 2248 GetWindowByClientId(ClientWindowId(transport_window_id));
2249 if (window && window->id().client_id != id_) { 2249 if (window && window->id().client_id != id_) {
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
2418 client()->OnCompleteDrop(client_window_id.id, event_flags, cursor_offset, 2418 client()->OnCompleteDrop(client_window_id.id, event_flags, cursor_offset,
2419 effect_bitmask, callback); 2419 effect_bitmask, callback);
2420 } 2420 }
2421 2421
2422 void WindowTree::PerformOnDragDropDone() { 2422 void WindowTree::PerformOnDragDropDone() {
2423 client()->OnDragDropDone(); 2423 client()->OnDragDropDone();
2424 } 2424 }
2425 2425
2426 } // namespace ws 2426 } // namespace ws
2427 } // namespace ui 2427 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698