File tree 2 files changed +25
-3
lines changed
editor/src/messages/tool/tool_messages
2 files changed +25
-3
lines changed Original file line number Diff line number Diff line change @@ -264,7 +264,12 @@ impl Fsm for FreehandToolFsmState {
264
264
if tool_data. dragged {
265
265
responses. add ( DocumentMessage :: CommitTransaction ) ;
266
266
} else {
267
- responses. add ( DocumentMessage :: EndTransaction ) ;
267
+ if let Some ( layer) = tool_data. layer {
268
+ responses. add ( NodeGraphMessage :: DeleteNodes {
269
+ node_ids : vec ! [ layer. to_node( ) ] ,
270
+ delete_children : true ,
271
+ } ) ;
272
+ }
268
273
}
269
274
270
275
tool_data. end_point = None ;
Original file line number Diff line number Diff line change @@ -319,10 +319,27 @@ impl Fsm for LineToolFsmState {
319
319
}
320
320
( LineToolFsmState :: Drawing , LineToolMessage :: DragStop ) => {
321
321
tool_data. snap_manager . cleanup ( responses) ;
322
- tool_data. editing_layer . take ( ) ;
323
- input. mouse . finish_transaction ( tool_data. drag_start , responses) ;
322
+
323
+ if let Some ( layer) = tool_data. editing_layer . take ( ) {
324
+ let Some ( & [ start, end] ) = tool_data. selected_layers_with_position . get ( & layer) else {
325
+ input. mouse . finish_transaction ( tool_data. drag_start , responses) ;
326
+ return LineToolFsmState :: Ready ;
327
+ } ;
328
+
329
+ if start. abs_diff_eq ( end, f64:: EPSILON * 1000. ) {
330
+ responses. add ( NodeGraphMessage :: DeleteNodes {
331
+ node_ids : vec ! [ layer. to_node( ) ] ,
332
+ delete_children : true ,
333
+ } ) ;
334
+ responses. add ( DocumentMessage :: AbortTransaction ) ;
335
+ } else {
336
+ input. mouse . finish_transaction ( tool_data. drag_start , responses) ;
337
+ }
338
+ }
339
+
324
340
LineToolFsmState :: Ready
325
341
}
342
+
326
343
( LineToolFsmState :: Drawing , LineToolMessage :: Abort ) => {
327
344
tool_data. snap_manager . cleanup ( responses) ;
328
345
tool_data. editing_layer . take ( ) ;
You can’t perform that action at this time.
0 commit comments