Skip to main content

fret_runtime/capabilities/
kind.rs

1use 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}