summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dwl.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/dwl.c b/dwl.c
index 12058c9..80a3d49 100644
--- a/dwl.c
+++ b/dwl.c
@@ -157,6 +157,7 @@ static void rendermon(struct wl_listener *listener, void *data);
static void resize(Client *c, int x, int y, int w, int h);
static void resizemouse(const Arg *arg);
static void run(char *startup_cmd);
+static void scalebox(struct wlr_box *box, float scale);
static Client *selclient(void);
static void sendmon(Client *c, Monitor *m);
static void setcursor(struct wl_listener *listener, void *data);
@@ -800,11 +801,12 @@ render(struct wlr_surface *surface, int sx, int sy, void *data)
/* We also have to apply the scale factor for HiDPI outputs. This is only
* part of the puzzle, dwl does not fully support HiDPI. */
struct wlr_box obox = {
- .x = ox * output->scale,
- .y = oy * output->scale,
- .width = surface->current.width * output->scale,
- .height = surface->current.height * output->scale,
+ .x = ox,
+ .y = oy,
+ .width = surface->current.width,
+ .height = surface->current.height,
};
+ scalebox(&obox, output->scale);
/*
* Those familiar with OpenGL are also familiar with the role of matrices
@@ -993,6 +995,15 @@ run(char *startup_cmd)
}
}
+void
+scalebox(struct wlr_box *box, float scale)
+{
+ box->x *= scale;
+ box->y *= scale;
+ box->width *= scale;
+ box->height *= scale;
+}
+
Client *
selclient(void)
{