* Windows: resize border from the first frame, DPI-correct window moves (#1381) - The egui resize zones were laid out after the start page's early return, so a launch without a design had no resize edges at all. They now run on every page. - Windows: the main window's procedure answers WM_NCHITTEST with the resize edges and corners, Windows' own border width at the window's DPI (8 px at 100 %), so the OS shows its resize cursors and runs its own resize (snap included) from the first message; no egui zones there. - Windows: WM_GETDPISCALEDSIZE returns the size winit then applies (same logical size), so the rect the OS suggests while the title bar is dragged onto a monitor with another scale is the rect the window gets. - Zone sizes and hit test shared in titlebar.rs and unit-tested; Windows CI checks the hit test right after launch and a real edge drag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Windows resize smoke: find the main window by its title Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Windows resize smoke: probe the maximized window at the screen's edge Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
75 lines
3.1 KiB
TOML
75 lines
3.1 KiB
TOML
[package]
|
|
name = "solidcraft"
|
|
description = "SolidCraft desktop app"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
publish = false
|
|
default-run = "solidcraft"
|
|
|
|
# The workspace lints, except unsafe_code: denied, not forbidden, so that src/open_documents.rs
|
|
# (macOS file-open events), src/native_crash.rs (Windows exception filter) and src/native_frame.rs
|
|
# (Windows resize border) can allow it: none has a safe API. Keep the rest in sync with [workspace.lints].
|
|
[lints.rust]
|
|
unsafe_code = "deny"
|
|
|
|
[lints.clippy]
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
too_many_arguments = "allow"
|
|
type_complexity = "allow"
|
|
neg_cmp_op_on_partial_ord = "allow"
|
|
|
|
[dependencies]
|
|
solidcraft-engine = { workspace = true }
|
|
solidcraft-ui-egui = { workspace = true }
|
|
eframe = { workspace = true, features = ["default_fonts", "wgpu", "accesskit", "wayland", "x11", "links"] }
|
|
egui = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
log = { workspace = true }
|
|
rfd = { workspace = true }
|
|
# Checks eframe's settings file (app.ron) before eframe reads it (src/startup.rs).
|
|
ron = "0.12"
|
|
# Waits for wgpu's adapter list when choosing the graphics backend before the window opens.
|
|
pollster = { workspace = true }
|
|
getrandom = "0.3"
|
|
# The update check (docs/updates.md): HTTPS with rustls, certificates from the operating system.
|
|
ureq = { version = "3.4", default-features = false, features = ["rustls-no-provider", "platform-verifier"] }
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] }
|
|
|
|
[target.'cfg(any(target_os = "windows", target_os = "linux"))'.dependencies]
|
|
quick-xml = { workspace = true }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
hidapi = { version = "2.6.7", default-features = false, features = ["windows-native"] }
|
|
# The main window's handle for src/native_frame.rs (already in the tree through eframe and winit).
|
|
raw-window-handle = "0.6"
|
|
# Native crash capture (src/native_crash.rs): the exception filter, the faulting module, a minidump.
|
|
# The window's resize border and DPI size (src/native_frame.rs): the window procedure, hit test, DPI.
|
|
windows-sys = { version = "0.61", features = [
|
|
"Win32_Foundation",
|
|
"Win32_Security",
|
|
"Win32_Storage_FileSystem",
|
|
"Win32_System_Diagnostics_Debug",
|
|
"Win32_System_IO",
|
|
"Win32_System_Kernel",
|
|
"Win32_System_LibraryLoader",
|
|
"Win32_System_Memory",
|
|
"Win32_System_Threading",
|
|
"Win32_UI_HiDpi",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
# Files opened from Finder and the Dock (src/open_documents.rs); all already come with eframe and rfd.
|
|
objc2 = "0.6"
|
|
objc2-app-kit = { version = "0.3", default-features = false, features = ["std", "NSApplication", "NSResponder"] }
|
|
objc2-foundation = { version = "0.3", default-features = false, features = ["std", "block2", "NSArray", "NSNotification", "NSOperation", "NSString", "NSURL"] }
|
|
block2 = "0.6"
|
|
|
|
[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
|
|
winit = { version = "0.30", default-features = false, features = ["x11"] }
|
|
|
|
[build-dependencies]
|
|
embed-resource = "3.0.11"
|