Treat everything up to 120 dpi as 96 dpi (Thanks jefvel)

See the comment in the source for rationale.
This commit is contained in:
Michael Stapelberg 2014-08-23 16:02:30 +02:00
parent 5762456d89
commit 33d1d5d3c6
1 changed files with 15 additions and 0 deletions

View File

@ -1,3 +1,10 @@
/*
* vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
* © 2009-2014 Michael Stapelberg and contributors (see also: LICENSE)
*
*/
#include "libi3.h"
#include <math.h>
@ -12,5 +19,13 @@ extern xcb_screen_t *root_screen;
int logical_px(const int logical) {
const int dpi = (double)root_screen->height_in_pixels * 25.4 /
(double)root_screen->height_in_millimeters;
/* There are many misconfigurations out there, i.e. systems with screens
* whose dpi is in fact higher than 96 dpi, but not significantly higher,
* so software was never adapted. We could tell people to reconfigure their
* systems to 96 dpi in order to get the behavior they expect/are used to,
* but since we can easily detect this case in code, lets do it for them.
*/
if ((dpi / 96.0) < 1.25)
return logical;
return ceil((dpi / 96.0) * logical);
}