mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-30 05:16:56 -06:00
winit's default macOS app menu ends the process through AppKit's `terminate:` at once, so ⌘Q and Quit from the menu bar never asked about unsaved changes (the recovery copies were all that survived). - Install craft-libs' app menu (craft-menu, same rev as the other craft-libs pins; macOS only). Its Quit sends the main window a close request, the same path as the window's close button, so windows::on_close_request cancels the close and the unsaved-changes question asks first. Failure to install keeps winit's menu and logs it. - windows_tests::a_quit_with_unsaved_changes_waits_for_the_answer pins the contract the menu relies on: a close request with unsaved changes sends CancelClose and asks; Don't Save then closes. - Like the close button it closes the main window only: with several windows open, each quit closes one (documented). - docs/hardware-parity.md macOS row, status line and revision history. - Cargo.lock: craft-menu, craft-quit, craft-keymap, muda and their deps; cargo's own minimal resolution also moves a few windows-sys/getrandom edges to versions already in the lock.
66 lines
3.1 KiB
TOML
66 lines
3.1 KiB
TOML
[package]
|
|
name = "figcraft"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
publish = false
|
|
description = "FigCraft desktop app"
|
|
default-run = "figcraft"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
figcraft-engine = { workspace = true }
|
|
figcraft-ui-egui = { workspace = true }
|
|
figcraft-collab-net = { workspace = true }
|
|
figcraft-format = { workspace = true }
|
|
figcraft-text = { workspace = true }
|
|
# Shared decision of who draws the window frame on Linux (compositor vs. app), replacing the
|
|
# bespoke Wayland xdg-decoration probe. See `[workspace.dependencies]`: pinned to the unmerged
|
|
# craft-libs#217 branch and must be repointed to a merged `rev` before this PR is mergeable.
|
|
craft-window = { workspace = true }
|
|
egui = { workspace = true }
|
|
eframe = { workspace = true, features = ["default_fonts", "wgpu", "accesskit", "clipboard", "wayland", "x11"] }
|
|
serde_json = { workspace = true }
|
|
log = { workspace = true }
|
|
rfd = { workspace = true }
|
|
arboard = { workspace = true, features = ["image-data", "wayland-data-control"] }
|
|
webbrowser = { workspace = true }
|
|
image = { workspace = true }
|
|
env_logger = { version = "0.11", default-features = false, features = ["auto-color", "humantime"] }
|
|
|
|
# The system's reduce-motion setting (UISettings.AnimationsEnabled), interface language
|
|
# (GlobalizationPreferences.Languages) and controllers for prototypes (Gaming.Input.Gamepad).
|
|
[target.'cfg(windows)'.dependencies]
|
|
craft-update = { workspace = true }
|
|
windows = { version = "0.62", default-features = false, features = ["UI_ViewManagement", "System_UserProfile", "Foundation_Collections", "Gaming_Input"] }
|
|
|
|
# The system colour scheme (org.freedesktop.portal.Settings): winit reports no theme on Linux and
|
|
# the BSDs, so the interface's "system" mode follows the portal's instead. zbus comes in through
|
|
# accesskit already; this only makes it direct.
|
|
[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
|
|
zbus = { version = "5", default-features = false, features = ["async-io", "blocking-api"] }
|
|
|
|
# Finder double-clicks, Open With, Dock drops and `open -a FigCraft file.figcraft` arrive as a
|
|
# kAEOpenDocuments Apple event, which winit 0.30 doesn't handle. This crate (also used by GridCraft,
|
|
# EffectCraft and PhotoCraft) registers the handler behind a safe API (Objective-C interop needs
|
|
# unsafe, which the workspace forbids). Pinned exactly: review the diff before bumping.
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
fmv-macos-events = "=0.1.0"
|
|
# A macOS app menu whose Quit (⌘Q) asks the app first (sends the root window a close request, the
|
|
# same guarded path as the close button); winit's default Quit ends the process through
|
|
# `terminate:`, losing unsaved changes without a word (issue #857).
|
|
craft-menu = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
wat = { workspace = true }
|
|
|
|
[build-dependencies]
|
|
winresource = "0.1"
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
# Use vector window controls without a title-font renderer or embedded Cantarell. The compositor
|
|
# probe that used to need raw-window-handle and wayland-client here now lives in craft-window.
|
|
winit = { version = "0.30", default-features = false, features = ["wayland-csd-adwaita-notitle"] }
|