diff --git a/editor/src/messages/layout/layout_message_handler.rs b/editor/src/messages/layout/layout_message_handler.rs index 3aba33dbaa..f5deaf610f 100644 --- a/editor/src/messages/layout/layout_message_handler.rs +++ b/editor/src/messages/layout/layout_message_handler.rs @@ -56,6 +56,12 @@ impl Vec> MessageHandler { + let update_value = value.as_u64().expect("BreadcrumbTrailButtons update was not of type: u64"); + + let callback_message = (breadcrumb_trail_buttons.on_update.callback)(&update_value); + responses.push_back(callback_message); + } Widget::CheckboxInput(checkbox_input) => { let update_value = value.as_bool().expect("CheckboxInput update was not of type: bool"); checkbox_input.checked = update_value; diff --git a/editor/src/messages/layout/utility_types/layout_widget.rs b/editor/src/messages/layout/utility_types/layout_widget.rs index d44334e2e9..155bd84e8e 100644 --- a/editor/src/messages/layout/utility_types/layout_widget.rs +++ b/editor/src/messages/layout/utility_types/layout_widget.rs @@ -57,6 +57,7 @@ impl Layout { for widget_holder in &mut widget_layout.iter_mut() { // Handle all the widgets that have tooltips let mut tooltip_shortcut = match &mut widget_holder.widget { + Widget::BreadcrumbTrailButtons(widget) => Some((&mut widget.tooltip, &mut widget.tooltip_shortcut)), Widget::CheckboxInput(widget) => Some((&mut widget.tooltip, &mut widget.tooltip_shortcut)), Widget::ColorInput(widget) => Some((&mut widget.tooltip, &mut widget.tooltip_shortcut)), Widget::DropdownInput(widget) => Some((&mut widget.tooltip, &mut widget.tooltip_shortcut)), @@ -295,6 +296,7 @@ impl Default for WidgetCallback { #[remain::sorted] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum Widget { + BreadcrumbTrailButtons(BreadcrumbTrailButtons), CheckboxInput(CheckboxInput), ColorInput(ColorInput), DropdownInput(DropdownInput), diff --git a/editor/src/messages/layout/utility_types/widgets/button_widgets.rs b/editor/src/messages/layout/utility_types/widgets/button_widgets.rs index de4bd25b92..c84c46f1f0 100644 --- a/editor/src/messages/layout/utility_types/widgets/button_widgets.rs +++ b/editor/src/messages/layout/utility_types/widgets/button_widgets.rs @@ -90,3 +90,22 @@ pub struct TextButton { #[derivative(Debug = "ignore", PartialEq = "ignore")] pub on_update: WidgetCallback, } + +#[derive(Clone, Serialize, Deserialize, Derivative, Default)] +#[derivative(Debug, PartialEq)] +#[serde(rename_all(serialize = "camelCase", deserialize = "camelCase"))] +pub struct BreadcrumbTrailButtons { + pub labels: Vec, + + pub disabled: bool, + + pub tooltip: String, + + #[serde(skip)] + pub tooltip_shortcut: Option, + + // Callbacks + #[serde(skip)] + #[derivative(Debug = "ignore", PartialEq = "ignore")] + pub on_update: WidgetCallback, +} diff --git a/frontend/src/components/widgets/WidgetRow.vue b/frontend/src/components/widgets/WidgetRow.vue index 5738d43683..b1b61fb9a3 100644 --- a/frontend/src/components/widgets/WidgetRow.vue +++ b/frontend/src/components/widgets/WidgetRow.vue @@ -54,6 +54,7 @@ + + + + + + + + + diff --git a/frontend/src/components/widgets/buttons/TextButton.vue b/frontend/src/components/widgets/buttons/TextButton.vue index 152d37b86c..e7b247ff11 100644 --- a/frontend/src/components/widgets/buttons/TextButton.vue +++ b/frontend/src/components/widgets/buttons/TextButton.vue @@ -27,29 +27,31 @@ box-sizing: border-box; border: none; border-radius: 2px; - background: var(--color-5-dullgray); - color: var(--color-e-nearwhite); + background: var(--button-background-color); + color: var(--button-text-color); + --button-background-color: var(--color-5-dullgray); + --button-text-color: var(--color-e-nearwhite); &:hover { - background: var(--color-6-lowergray); - color: var(--color-f-white); + --button-background-color: var(--color-6-lowergray); + --button-text-color: var(--color-f-white); } &.disabled { - background: var(--color-4-dimgray); - color: var(--color-8-uppergray); + --button-background-color: var(--color-4-dimgray); + --button-text-color: var(--color-8-uppergray); } &.emphasized { - background: var(--color-e-nearwhite); - color: var(--color-2-mildblack); + --button-background-color: var(--color-e-nearwhite); + --button-text-color: var(--color-2-mildblack); &:hover { - background: var(--color-f-white); + --button-background-color: var(--color-f-white); } &.disabled { - background: var(--color-8-uppergray); + --button-background-color: var(--color-8-uppergray); } } @@ -64,7 +66,6 @@ } -