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

Unified Diff: ui/gfx/display.cc

Issue 11953054: Fix high-DPI on Windows to make use of DIP scaling in WebKit. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Code cleanup. Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: ui/gfx/display.cc
diff --git a/ui/gfx/display.cc b/ui/gfx/display.cc
index 5b375891ad0fa271aae4cc990c0f116a724eabc7..f7227a40e86423f794c50317efb8cdbfe9bc2d92 100644
--- a/ui/gfx/display.cc
+++ b/ui/gfx/display.cc
@@ -9,25 +9,33 @@
#include "base/string_number_conversions.h"
#include "base/stringprintf.h"
#include "ui/base/ui_base_switches.h"
+#include "ui/base/win/dpi.h"
#include "ui/gfx/insets.h"
#include "ui/gfx/size_conversions.h"
namespace gfx {
namespace {
-bool HasForceDeviceScaleFactor() {
+bool HasForceDeviceScaleFactorImpl() {
return CommandLine::ForCurrentProcess()->HasSwitch(
switches::kForceDeviceScaleFactor);
}
float GetForcedDeviceScaleFactorImpl() {
double scale_in_double = 1.0;
- if (HasForceDeviceScaleFactor()) {
+ if (HasForceDeviceScaleFactorImpl()) {
std::string value = CommandLine::ForCurrentProcess()->
GetSwitchValueASCII(switches::kForceDeviceScaleFactor);
if (!base::StringToDouble(value, &scale_in_double))
LOG(ERROR) << "Failed to parse the deafult device scale factor:" << value;
}
+#if defined(OS_WIN)
+ else {
+ static double os_scale = ui::GetDPIScale();
+ scale_in_double = os_scale;
+ }
+#endif
+
return static_cast<float>(scale_in_double);
}
@@ -41,6 +49,10 @@ float Display::GetForcedDeviceScaleFactor() {
GetForcedDeviceScaleFactorImpl();
return kForcedDeviceScaleFactor;
}
+//static
+bool Display::HasForceDeviceScaleFactor() {
+ return HasForceDeviceScaleFactorImpl();
+}
// static
int64 Display::GetID(uint16 manufacturer_id, uint32 serial_number) {
@@ -64,7 +76,7 @@ Display::Display(int64 id, const gfx::Rect& bounds)
bounds_(bounds),
work_area_(bounds),
device_scale_factor_(GetForcedDeviceScaleFactor()) {
-#if defined(USE_AURA)
+#if defined(USE_AURA) || defined(OS_WIN)
SetScaleAndBounds(device_scale_factor_, bounds);
#endif
}
@@ -92,7 +104,7 @@ void Display::SetScaleAndBounds(
device_scale_factor_ = device_scale_factor;
}
device_scale_factor_ = std::max(1.0f, device_scale_factor_);
-#if defined(USE_AURA)
+#if defined(USE_AURA) || defined(OS_WIN)
bounds_in_pixel_ = bounds_in_pixel;
#endif
bounds_ = gfx::Rect(gfx::ToFlooredSize(
@@ -103,7 +115,7 @@ void Display::SetScaleAndBounds(
void Display::SetSize(const gfx::Size& size_in_pixel) {
SetScaleAndBounds(
device_scale_factor_,
-#if defined(USE_AURA)
+#if defined(USE_AURA) || defined(OS_WIN)
gfx::Rect(bounds_in_pixel_.origin(), size_in_pixel));
#else
gfx::Rect(bounds_.origin(), size_in_pixel));

Powered by Google App Engine
This is Rietveld 408576698