Added fine-grained choices to Snapping options popover (#1730)

* Added Customised Snapping

* Fix snapping choice to Anchors; clean up popover menu code

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
Shyam Jayakannan
2024-04-18 04:24:15 +00:00
committed by GitHub
co-authored by Keavon Chambers
parent 3019cc7253
commit 67ba5bcecf
13 changed files with 318 additions and 135 deletions
@@ -33,7 +33,7 @@ impl LayoutMessageHandler {
}
if let Widget::PopoverButton(popover) = &widget.widget {
stack.extend(popover.options_widget.iter().enumerate().map(|(child, val)| ([widget_path.as_slice(), &[index, child]].concat(), val)));
stack.extend(popover.popover_layout.iter().enumerate().map(|(child, val)| ([widget_path.as_slice(), &[index, child]].concat(), val)));
}
}
}
@@ -219,7 +219,7 @@ impl<'a> Iterator for WidgetIter<'a> {
self.current_slice = Some(&self.current_slice.unwrap()[1..]);
if let WidgetHolder { widget: Widget::PopoverButton(p), .. } = item {
self.stack.extend(p.options_widget.iter());
self.stack.extend(p.popover_layout.iter());
return self.next();
}
@@ -260,7 +260,7 @@ impl<'a> Iterator for WidgetIterMut<'a> {
self.current_slice = Some(rest);
if let WidgetHolder { widget: Widget::PopoverButton(p), .. } = first {
self.stack.extend(p.options_widget.iter_mut());
self.stack.extend(p.popover_layout.iter_mut());
return self.next();
}
@@ -47,24 +47,16 @@ pub struct PopoverButton {
pub disabled: bool,
// Placeholder popover content heading
#[widget_builder(constructor)]
pub header: String,
// Placeholder popover content paragraph
#[widget_builder(constructor)]
pub text: String,
pub tooltip: String,
#[serde(rename = "optionsWidget")]
pub options_widget: SubLayout,
#[serde(rename = "popoverMinWidth")]
pub popover_min_width: Option<u32>,
#[serde(skip)]
pub tooltip_shortcut: Option<ActionKeys>,
#[serde(rename = "popoverLayout")]
pub popover_layout: SubLayout,
#[serde(rename = "popoverMinWidth")]
pub popover_min_width: Option<u32>,
}
#[derive(Clone, serde::Serialize, serde::Deserialize, Derivative, Default, WidgetBuilder, specta::Type)]