diff options
Diffstat (limited to 'chromium/ui/display/screen.cc')
-rw-r--r-- | chromium/ui/display/screen.cc | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/chromium/ui/display/screen.cc b/chromium/ui/display/screen.cc index ef1d381d9e2..c289415a1a1 100644 --- a/chromium/ui/display/screen.cc +++ b/chromium/ui/display/screen.cc @@ -6,7 +6,8 @@ #include <utility> -#include "base/logging.h" +#include "base/check.h" +#include "base/notreached.h" #include "ui/display/display.h" #include "ui/display/types/display_constants.h" #include "ui/gfx/geometry/rect.h" @@ -44,6 +45,12 @@ Display Screen::GetDisplayNearestView(gfx::NativeView view) const { display::Display Screen::GetDisplayForNewWindows() const { display::Display display; + // Scoped value can override if it is set. + if (scoped_display_id_for_new_windows_ != kInvalidDisplayId && + GetDisplayWithDisplayId(scoped_display_id_for_new_windows_, &display)) { + return display; + } + if (GetDisplayWithDisplayId(display_id_for_new_windows_, &display)) return display; @@ -90,4 +97,15 @@ std::string Screen::GetCurrentWorkspace() { return {}; } +void Screen::SetScopedDisplayForNewWindows(int64_t display_id) { + if (display_id == scoped_display_id_for_new_windows_) + return; + // Only allow set and clear, not switch. + DCHECK(display_id == kInvalidDisplayId ^ + scoped_display_id_for_new_windows_ == kInvalidDisplayId) + << "display_id=" << display_id << ", scoped_display_id_for_new_windows_=" + << scoped_display_id_for_new_windows_; + scoped_display_id_for_new_windows_ = display_id; +} + } // namespace display |