fret_runtime/capabilities/
kind.rs1use super::keys;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum CapabilityValueKind {
5 Bool,
6 Str,
7}
8
9pub const KNOWN_BOOL_CAPABILITY_KEYS: &[&str] = &[
10 keys::UI_MULTI_WINDOW,
11 keys::UI_WINDOW_TEAR_OFF,
12 keys::UI_CURSOR_ICONS,
13 keys::UI_WINDOW_DECORATIONS,
14 keys::UI_WINDOW_RESIZABLE,
15 keys::UI_WINDOW_TRANSPARENT,
16 keys::UI_WINDOW_ALWAYS_ON_TOP,
17 keys::UI_WINDOW_SKIP_TASKBAR,
18 keys::UI_WINDOW_NON_ACTIVATING,
19 keys::UI_WINDOW_HIT_TEST_PASSTHROUGH_ALL,
20 keys::UI_WINDOW_HIT_TEST_PASSTHROUGH_REGIONS,
21 keys::UI_WINDOW_SET_VISIBLE,
22 keys::UI_WINDOW_BEGIN_DRAG,
23 keys::UI_WINDOW_BEGIN_RESIZE,
24 keys::UI_WINDOW_BACKGROUND_MATERIAL_SYSTEM_DEFAULT,
25 keys::UI_WINDOW_BACKGROUND_MATERIAL_MICA,
26 keys::UI_WINDOW_BACKGROUND_MATERIAL_ACRYLIC,
27 keys::UI_WINDOW_BACKGROUND_MATERIAL_VIBRANCY,
28 keys::UI_NATIVE_WINDOW_HANDLE,
29 keys::CLIPBOARD_TEXT,
30 keys::CLIPBOARD_TEXT_READ,
31 keys::CLIPBOARD_TEXT_WRITE,
32 keys::CLIPBOARD_FILES,
33 keys::CLIPBOARD_PRIMARY_TEXT,
34 keys::DND_EXTERNAL,
35 keys::IME,
36 keys::IME_ENABLED,
37 keys::IME_SET_CURSOR_AREA,
38 keys::FS_REAL_PATHS,
39 keys::FS_FILE_DIALOGS,
40 keys::SHELL_OPEN_URL,
41 keys::GFX_WEBGPU,
42 keys::GFX_NATIVE_GPU,
43];
44
45pub const KNOWN_STR_CAPABILITY_KEYS: &[&str] = &[
46 keys::EXEC_BACKGROUND_WORK,
47 keys::EXEC_WAKE,
48 keys::EXEC_TIMERS,
49 keys::UI_WINDOW_HOVER_DETECTION,
50 keys::UI_WINDOW_SET_OUTER_POSITION,
51 keys::UI_WINDOW_Z_LEVEL,
52 keys::DND_EXTERNAL_PAYLOAD,
53 keys::DND_EXTERNAL_POSITION,
54];
55
56pub fn capability_key_kind(key: &str) -> Option<CapabilityValueKind> {
57 if KNOWN_BOOL_CAPABILITY_KEYS.contains(&key) {
58 return Some(CapabilityValueKind::Bool);
59 }
60 if KNOWN_STR_CAPABILITY_KEYS.contains(&key) {
61 return Some(CapabilityValueKind::Str);
62 }
63 None
64}