diff options
Diffstat (limited to 'ash')
-rw-r--r-- | ash/monitor/multi_monitor_manager.cc | 4 | ||||
-rw-r--r-- | ash/monitor/multi_monitor_manager_unittest.cc | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/ash/monitor/multi_monitor_manager.cc b/ash/monitor/multi_monitor_manager.cc index 1b97b02..8538eb7 100644 --- a/ash/monitor/multi_monitor_manager.cc +++ b/ash/monitor/multi_monitor_manager.cc @@ -79,7 +79,9 @@ void MultiMonitorManager::OnNativeMonitorsChanged( for (size_t i = 0; i < min; ++i) { gfx::Display& current_display = displays_[i]; const gfx::Display& new_display = new_displays[i]; - if (current_display.bounds_in_pixel() != new_display.bounds_in_pixel()) { + if (current_display.bounds_in_pixel() != new_display.bounds_in_pixel() || + current_display.device_scale_factor() != + new_display.device_scale_factor()) { current_display.SetScaleAndBounds(new_display.device_scale_factor(), new_display.bounds_in_pixel()); NotifyBoundsChanged(current_display); diff --git a/ash/monitor/multi_monitor_manager_unittest.cc b/ash/monitor/multi_monitor_manager_unittest.cc index 7850f77..ac44dc8 100644 --- a/ash/monitor/multi_monitor_manager_unittest.cc +++ b/ash/monitor/multi_monitor_manager_unittest.cc @@ -231,5 +231,20 @@ TEST_F(MultiMonitorManagerTest, EmulatorTest) { reset(); } +TEST_F(MultiMonitorManagerTest, TestDeviceScaleOnlyChange) { + aura::MonitorManager::set_use_fullscreen_host_window(true); + UpdateMonitor("0+0-1000x600"); + EXPECT_EQ(1, + Shell::GetPrimaryRootWindow()->compositor()->device_scale_factor()); + EXPECT_EQ("1000x600", + Shell::GetPrimaryRootWindow()->bounds().size().ToString()); + UpdateMonitor("0+0-1000x600*2"); + EXPECT_EQ(2, + Shell::GetPrimaryRootWindow()->compositor()->device_scale_factor()); + EXPECT_EQ("500x300", + Shell::GetPrimaryRootWindow()->bounds().size().ToString()); + aura::MonitorManager::set_use_fullscreen_host_window(false); +} + } // namespace test } // namespace ash |