From e740b32b42d12a7dc6d73acdfb3287be28bcf254 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Mon, 19 Jan 2026 16:53:40 +0100 Subject: [PATCH] Improve default ui scale --- base/sources/backends/ios_system.m | 13 +++++++------ base/sources/iron.h | 4 ++-- base/sources/ts/iron.ts | 2 +- base/sources/ts/sys.ts | 4 ++++ paint/sources/config.ts | 5 +++++ 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/base/sources/backends/ios_system.m b/base/sources/backends/ios_system.m index d3d4e1d5..a6905b2c 100644 --- a/base/sources/backends/ios_system.m +++ b/base/sources/backends/ios_system.m @@ -83,11 +83,13 @@ id get_metal_queue(void) { void iron_display_init(void) {} iron_display_mode_t iron_display_current_mode(int display) { + UIScreen *screen = [UIScreen mainScreen]; iron_display_mode_t dm; - dm.width = iron_window_width(); - dm.height = iron_window_height(); - dm.frequency = (int)[[UIScreen mainScreen] maximumFramesPerSecond]; - dm.bits_per_pixel = 32; + dm.width = iron_window_width(); + dm.height = iron_window_height(); + dm.frequency = (int)screen.maximumFramesPerSecond; + dm.bits_per_pixel = 32; + dm.pixels_per_inch = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 326.0f : 460.0f; // Approx return dm; } @@ -600,5 +602,4 @@ bool _save_and_quit_callback_internal() { volatile int iron_exec_async_done = 1; -void iron_exec_async(const char *path, char *argv[]) { -} +void iron_exec_async(const char *path, char *argv[]) {} diff --git a/base/sources/iron.h b/base/sources/iron.h index 5c3ebfe6..311498d0 100644 --- a/base/sources/iron.h +++ b/base/sources/iron.h @@ -1223,8 +1223,8 @@ buffer_t *iron_load_blob(string_t *file) { return buffer; } -i32 iron_screen_dpi() { - return iron_display_current_mode(iron_primary_display()).pixels_per_inch; +i32 iron_display_ppi(i32 index) { + return iron_display_current_mode(index).pixels_per_inch; } i32 iron_display_width(i32 index) { diff --git a/base/sources/ts/iron.ts b/base/sources/ts/iron.ts index 5fd17349..9f5a98b4 100644 --- a/base/sources/ts/iron.ts +++ b/base/sources/ts/iron.ts @@ -259,10 +259,10 @@ declare function iron_window_get_mode(): i32; declare function iron_window_change_mode(mode: i32): void; declare function iron_window_resize(width: i32, height: i32): void; declare function iron_window_move(x: i32, y: i32): void; -declare function iron_screen_dpi(): i32; declare function iron_system_id(): string; declare function iron_stop(): void; declare function iron_count_displays(): i32; +declare function iron_display_ppi(index: i32): i32; declare function iron_display_width(index: i32): i32; declare function iron_display_height(index: i32): i32; declare function iron_display_x(index: i32): i32; diff --git a/base/sources/ts/sys.ts b/base/sources/ts/sys.ts index ca357d19..c5f9f89e 100644 --- a/base/sources/ts/sys.ts +++ b/base/sources/ts/sys.ts @@ -260,6 +260,10 @@ function sys_display_frequency(): i32 { return iron_display_frequency(sys_display_primary_id()); } +function sys_display_ppi(): i32 { + return iron_display_ppi(sys_display_primary_id()); +} + function sys_buffer_to_string(b: buffer_t): string { let str: string = string_alloc(b.length + 1); memcpy(str, b.buffer, b.length); diff --git a/paint/sources/config.ts b/paint/sources/config.ts index 87f14b89..1a3ac5d8 100644 --- a/paint/sources/config.ts +++ b/paint/sources/config.ts @@ -150,6 +150,11 @@ function config_init() { /// if (arm_android || arm_ios || arm_macos) config_raw.window_scale = 2.0; /// end + /// if (arm_android || arm_ios) + if (sys_display_ppi() > 330) { + config_raw.window_scale = 2.5; + } + /// end config_raw.window_vsync = true; config_raw.window_frequency = sys_display_frequency(); config_raw.rp_bloom = false;