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

Side by Side Diff: components/mus/public/cpp/lib/window.cc

Issue 1784573002: mus: Client-side implementation of modal windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@b548402_modal_windows_server
Patch Set: Added early out Created 4 years, 9 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 "components/mus/public/cpp/window.h" 5 #include "components/mus/public/cpp/window.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <set> 10 #include <set>
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 } 339 }
340 340
341 void Window::RemoveTransientWindow(Window* transient_window) { 341 void Window::RemoveTransientWindow(Window* transient_window) {
342 if (connection_) 342 if (connection_)
343 CHECK_EQ(transient_window->connection(), connection_); 343 CHECK_EQ(transient_window->connection(), connection_);
344 LocalRemoveTransientWindow(transient_window); 344 LocalRemoveTransientWindow(transient_window);
345 if (connection_) 345 if (connection_)
346 tree_client()->RemoveTransientWindowFromParent(transient_window); 346 tree_client()->RemoveTransientWindowFromParent(transient_window);
347 } 347 }
348 348
349 void Window::SetModal() {
350 if (is_modal_)
351 return;
352
353 LocalSetModal();
354 if (connection_)
355 tree_client()->SetModal(this);
356 }
357
349 Window* Window::GetChildById(Id id) { 358 Window* Window::GetChildById(Id id) {
350 if (id == id_) 359 if (id == id_)
351 return this; 360 return this;
352 // TODO(beng): this could be improved depending on how we decide to own 361 // TODO(beng): this could be improved depending on how we decide to own
353 // windows. 362 // windows.
354 Children::const_iterator it = children_.begin(); 363 Children::const_iterator it = children_.begin();
355 for (; it != children_.end(); ++it) { 364 for (; it != children_.end(); ++it) {
356 Window* window = (*it)->GetChildById(id); 365 Window* window = (*it)->GetChildById(id);
357 if (window) 366 if (window)
358 return window; 367 return window;
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 495
487 //////////////////////////////////////////////////////////////////////////////// 496 ////////////////////////////////////////////////////////////////////////////////
488 // Window, private: 497 // Window, private:
489 498
490 Window::Window(WindowTreeConnection* connection, Id id) 499 Window::Window(WindowTreeConnection* connection, Id id)
491 : connection_(connection), 500 : connection_(connection),
492 id_(id), 501 id_(id),
493 parent_(nullptr), 502 parent_(nullptr),
494 stacking_target_(nullptr), 503 stacking_target_(nullptr),
495 transient_parent_(nullptr), 504 transient_parent_(nullptr),
505 is_modal_(false),
496 input_event_handler_(nullptr), 506 input_event_handler_(nullptr),
497 viewport_metrics_(CreateEmptyViewportMetrics()), 507 viewport_metrics_(CreateEmptyViewportMetrics()),
498 visible_(false), 508 visible_(false),
499 cursor_id_(mojom::Cursor::CURSOR_NULL), 509 cursor_id_(mojom::Cursor::CURSOR_NULL),
500 drawn_(false) {} 510 drawn_(false) {}
501 511
502 WindowTreeClientImpl* Window::tree_client() { 512 WindowTreeClientImpl* Window::tree_client() {
503 return static_cast<WindowTreeClientImpl*>(connection_); 513 return static_cast<WindowTreeClientImpl*>(connection_);
504 } 514 }
505 515
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 591
582 // TODO(fsamuel): We might want a notification here. 592 // TODO(fsamuel): We might want a notification here.
583 } 593 }
584 594
585 void Window::LocalRemoveTransientWindow(Window* transient_window) { 595 void Window::LocalRemoveTransientWindow(Window* transient_window) {
586 DCHECK_EQ(this, transient_window->transient_parent()); 596 DCHECK_EQ(this, transient_window->transient_parent());
587 RemoveTransientWindowImpl(transient_window); 597 RemoveTransientWindowImpl(transient_window);
588 // TODO(fsamuel): We might want a notification here. 598 // TODO(fsamuel): We might want a notification here.
589 } 599 }
590 600
601 void Window::LocalSetModal() {
602 is_modal_ = true;
603 }
604
591 bool Window::LocalReorder(Window* relative, mojom::OrderDirection direction) { 605 bool Window::LocalReorder(Window* relative, mojom::OrderDirection direction) {
592 OrderChangedNotifier notifier(this, relative, direction); 606 OrderChangedNotifier notifier(this, relative, direction);
593 return ReorderImpl(this, relative, direction, &notifier); 607 return ReorderImpl(this, relative, direction, &notifier);
594 } 608 }
595 609
596 void Window::LocalSetBounds(const gfx::Rect& old_bounds, 610 void Window::LocalSetBounds(const gfx::Rect& old_bounds,
597 const gfx::Rect& new_bounds) { 611 const gfx::Rect& new_bounds) {
598 // If this client owns the window, then it should be the only one to change 612 // If this client owns the window, then it should be the only one to change
599 // the bounds. 613 // the bounds.
600 DCHECK(!OwnsWindow(connection_, this) || old_bounds == bounds_); 614 DCHECK(!OwnsWindow(connection_, this) || old_bounds == bounds_);
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 notifier->NotifyWindowReordered(); 840 notifier->NotifyWindowReordered();
827 841
828 return true; 842 return true;
829 } 843 }
830 844
831 // static 845 // static
832 Window** Window::GetStackingTarget(Window* window) { 846 Window** Window::GetStackingTarget(Window* window) {
833 return &window->stacking_target_; 847 return &window->stacking_target_;
834 } 848 }
835 } // namespace mus 849 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/public/cpp/lib/in_flight_change.h ('k') | components/mus/public/cpp/lib/window_tree_client_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698