diff --git a/src/os/gfx/win32/os_gfx_win32.c b/src/os/gfx/win32/os_gfx_win32.c index 68ff15a6..8c7a45cb 100644 --- a/src/os/gfx/win32/os_gfx_win32.c +++ b/src/os/gfx/win32/os_gfx_win32.c @@ -548,7 +548,14 @@ os_w32_wnd_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_DPICHANGED: { F32 new_dpi = (F32)(wParam & 0xffff); + RECT suggested_new_rect = *(RECT *)lParam; window->dpi = new_dpi; + SetWindowPos(window->hwnd, 0, + suggested_new_rect.left, + suggested_new_rect.top, + suggested_new_rect.right - suggested_new_rect.left, + suggested_new_rect.bottom - suggested_new_rect.top, + 0); }break; //- rjf: [file drop] diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 2469e490..239e5b69 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -5176,6 +5176,19 @@ rd_window_frame(void) cfg_node_release(rd_state->cfg, cfg_node_child_from_string(window, str8_lit("maximized"))); } + //- rjf: DPI changes -> xform font size / window size + F32 dpi = os_dpi_from_window(ws->os); + if(dpi != ws->last_dpi) + { + fnt_reset(); + F32 current_font_size = rd_font_size(); + F32 new_font_size = current_font_size * (dpi / ws->last_dpi); + new_font_size = Clamp(6.f, new_font_size, 72.f); + CFG_Node *font_size_cfg = cfg_node_child_from_string_or_alloc(rd_state->cfg, window, str8_lit("font_size")); + cfg_node_new_replacef(rd_state->cfg, font_size_cfg, "%I64u", (U64)new_font_size); + ws->last_dpi = dpi; + } + //- rjf: commit position Rng2F32 window_rect = os_rect_from_window(ws->os); if(!is_fullscreen && !is_maximized && !is_minimized)