1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
use super::types::OverlayKind;
/// Z-layer table: maps overlay kinds to draw-order integers.
///
/// Higher values render on top. All values are configurable at runtime via
/// `set`; defaults follow the uzor z-order model.
#[derive(Debug, Clone)]
pub struct ZLayerTable {
/// Z for docked panel content.
pub dock: i32,
/// Z for floating dock windows.
pub floating: i32,
/// Z for `OverlayKind::Dropdown`.
pub dropdown: i32,
/// Z for `OverlayKind::Popup`.
pub popup: i32,
/// Z for `OverlayKind::Modal`.
pub modal: i32,
/// Z for `OverlayKind::ContextMenu`.
pub context_menu: i32,
/// Z for `OverlayKind::ColorPicker`.
pub color_picker: i32,
/// Z for `OverlayKind::Tooltip`.
pub tooltip: i32,
}
impl Default for ZLayerTable {
fn default() -> Self {
Self {
dock: 0,
floating: 1,
dropdown: 2,
modal: 3,
popup: 4,
context_menu: 5,
color_picker: 6,
tooltip: 7,
}
}
}
impl ZLayerTable {
/// Return the z value for the given overlay kind.
pub fn z_for(&self, kind: OverlayKind) -> i32 {
match kind {
OverlayKind::Dropdown => self.dropdown,
OverlayKind::Popup => self.popup,
OverlayKind::Modal => self.modal,
OverlayKind::ContextMenu => self.context_menu,
OverlayKind::ColorPicker => self.color_picker,
OverlayKind::Tooltip => self.tooltip,
}
}
/// Override the z value for a given overlay kind.
pub fn set(&mut self, kind: OverlayKind, z: i32) {
match kind {
OverlayKind::Dropdown => self.dropdown = z,
OverlayKind::Popup => self.popup = z,
OverlayKind::Modal => self.modal = z,
OverlayKind::ContextMenu => self.context_menu = z,
OverlayKind::ColorPicker => self.color_picker = z,
OverlayKind::Tooltip => self.tooltip = z,
}
}
}