mirror of
https://github.com/penpot/penpot.git
synced 2025-12-12 06:24:17 +01:00
🐛 Fix layout and constraints not being cleared
This commit is contained in:
@@ -350,6 +350,12 @@
|
||||
(when constraint
|
||||
(h/call wasm/internal-module "_set_shape_constraint_v" (sr/translate-constraint-v constraint))))
|
||||
|
||||
(defn set-shape-constraints
|
||||
[constraint-h constraint-v]
|
||||
(h/call wasm/internal-module "_clear_shape_constraints")
|
||||
(set-constraints-h constraint-h)
|
||||
(set-constraints-v constraint-v))
|
||||
|
||||
(defn set-shape-hidden
|
||||
[hidden]
|
||||
(h/call wasm/internal-module "_set_shape_hidden" hidden))
|
||||
@@ -588,6 +594,24 @@
|
||||
is-absolute
|
||||
z-index)))
|
||||
|
||||
(defn clear-layout
|
||||
[]
|
||||
(h/call wasm/internal-module "_clear_shape_layout"))
|
||||
|
||||
(defn- set-shape-layout
|
||||
[shape objects]
|
||||
(clear-layout)
|
||||
|
||||
(when (or (ctl/any-layout? shape)
|
||||
(ctl/any-layout-immediate-child? objects shape))
|
||||
(set-layout-child shape))
|
||||
|
||||
(when (ctl/flex-layout? shape)
|
||||
(set-flex-layout shape))
|
||||
|
||||
(when (ctl/grid-layout? shape)
|
||||
(set-grid-layout shape)))
|
||||
|
||||
(defn set-shape-shadows
|
||||
[shadows]
|
||||
(h/call wasm/internal-module "_clear_shape_shadows")
|
||||
@@ -711,8 +735,8 @@
|
||||
(set-parent-id parent-id)
|
||||
(set-shape-type type)
|
||||
(set-shape-clip-content clip-content)
|
||||
(set-constraints-h constraint-h)
|
||||
(set-constraints-v constraint-v)
|
||||
(set-shape-constraints constraint-h constraint-v)
|
||||
|
||||
(set-shape-rotation rotation)
|
||||
(set-shape-transform transform)
|
||||
(set-shape-blend-mode blend-mode)
|
||||
@@ -738,15 +762,7 @@
|
||||
(when (= type :text)
|
||||
(set-shape-grow-type grow-type))
|
||||
|
||||
(when (or (ctl/any-layout? shape)
|
||||
(ctl/any-layout-immediate-child? objects shape))
|
||||
(set-layout-child shape))
|
||||
|
||||
(when (ctl/flex-layout? shape)
|
||||
(set-flex-layout shape))
|
||||
|
||||
(when (ctl/grid-layout? shape)
|
||||
(set-grid-layout shape))
|
||||
(set-shape-layout shape objects)
|
||||
|
||||
(set-shape-selrect selrect)
|
||||
|
||||
|
||||
@@ -209,12 +209,14 @@
|
||||
:layout-wrap-type
|
||||
:layout-padding-type
|
||||
:layout-padding)
|
||||
(cond
|
||||
(ctl/grid-layout? shape)
|
||||
(api/set-grid-layout-data shape)
|
||||
(do
|
||||
(api/clear-layout)
|
||||
(cond
|
||||
(ctl/grid-layout? shape)
|
||||
(api/set-grid-layout-data shape)
|
||||
|
||||
(ctl/flex-layout? shape)
|
||||
(api/set-flex-layout shape))
|
||||
(ctl/flex-layout? shape)
|
||||
(api/set-flex-layout shape)))
|
||||
|
||||
nil)))
|
||||
|
||||
|
||||
@@ -347,6 +347,11 @@ impl Shape {
|
||||
self.vertical_align
|
||||
}
|
||||
|
||||
pub fn clear_constraints(&mut self) {
|
||||
self.constraint_h = None;
|
||||
self.constraint_v = None;
|
||||
}
|
||||
|
||||
pub fn set_constraint_h(&mut self, constraint: Option<ConstraintH>) {
|
||||
self.constraint_h = constraint;
|
||||
}
|
||||
@@ -402,6 +407,13 @@ impl Shape {
|
||||
});
|
||||
}
|
||||
|
||||
pub fn clear_layout(&mut self) {
|
||||
self.layout_item = None;
|
||||
if let Type::Frame(data) = &mut self.shape_type {
|
||||
data.layout = None;
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME: These arguments could be grouped or simplified
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub fn set_flex_layout_data(
|
||||
|
||||
@@ -16,6 +16,13 @@ pub extern "C" fn set_shape_constraint_v(constraint: u8) {
|
||||
});
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn clear_shape_constraints() {
|
||||
with_current_shape_mut!(state, |shape: &mut Shape| {
|
||||
shape.clear_constraints();
|
||||
});
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn set_shape_vertical_align(align: u8) {
|
||||
with_current_shape_mut!(state, |shape: &mut Shape| {
|
||||
@@ -23,6 +30,13 @@ pub extern "C" fn set_shape_vertical_align(align: u8) {
|
||||
});
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn clear_shape_layout() {
|
||||
with_current_shape_mut!(state, |shape: &mut Shape| {
|
||||
shape.clear_layout();
|
||||
});
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn set_flex_layout_data(
|
||||
dir: u8,
|
||||
|
||||
Reference in New Issue
Block a user