@@ -518,7 +518,7 @@ instance PotatoHandler BoxHandler where
518
518
519
519
520
520
-- TODO move this to a more appropriate place
521
- data ShapeType = ShapeType_Unknown | ShapeType_Box deriving (Show , Eq )
521
+ data ShapeType = ShapeType_Unknown | ShapeType_Box | ShapeType_Ellipse deriving (Show , Eq )
522
522
523
523
524
524
@@ -600,12 +600,14 @@ instance PotatoHandler ShapeCreationHandler where
600
600
601
601
mdd = makeDragDeltaBox _shapeCreationHandler_handle rmd
602
602
603
- shapeDef = case _shapeCreationHandler_shapeType of
604
- ShapeType_Box -> boxShapeDef
603
+ someShapeDef = case _shapeCreationHandler_shapeType of
604
+ ShapeType_Box -> SomeShapeDef boxShapeDef
605
+ ShapeType_Ellipse -> SomeShapeDef ellipseShapeDef
605
606
ShapeType_Unknown -> error " attempting to use ShapeCreationHandler with ShapeType_Unknown"
606
607
607
- mop = Just $ makeAddEltLlama _potatoHandlerInput_pFState newEltPos $
608
- shapeType_to_owlItem _potatoHandlerInput_potatoDefaultParameters (canonicalLBox_from_lBox $ LBox _mouseDrag_from dragDelta) shapeDef
608
+ mop = case someShapeDef of
609
+ SomeShapeDef shapeDef -> Just $ makeAddEltLlama _potatoHandlerInput_pFState newEltPos $
610
+ shapeType_to_owlItem _potatoHandlerInput_potatoDefaultParameters (canonicalLBox_from_lBox $ LBox _mouseDrag_from dragDelta) shapeDef
609
611
610
612
newbh = bh {
611
613
_shapeCreationHandler_undoFirst = True
@@ -686,6 +688,7 @@ shapeModifyHandlerFromSelection :: CanvasSelection -> ShapeModifyHandler
686
688
shapeModifyHandlerFromSelection cs = r where
687
689
(shapeType, _) = case superOwl_toSElt_hack <$> selectionToMaybeFirstSuperOwl cs of
688
690
Just (SEltBox sbox) -> (ShapeType_Box , _shapeDef_impl boxShapeDef sbox)
691
+ Just (SEltEllipse sellipse) -> (ShapeType_Ellipse , _shapeDef_impl ellipseShapeDef sellipse)
689
692
_ -> (ShapeType_Unknown , emptyShapeImpl)
690
693
r = def {
691
694
_shapeModifyHandler_shapeType = shapeType
@@ -701,8 +704,11 @@ instance PotatoHandler ShapeModifyHandler where
701
704
pHandlerName _ = handlerName_shapeModify
702
705
pHandleMouse bh@ ShapeModifyHandler {.. } phi@ PotatoHandlerInput {.. } rmd@ (RelMouseDrag MouseDrag {.. }) = let
703
706
selt = superOwl_toSElt_hack $ selectionToFirstSuperOwl _potatoHandlerInput_canvasSelection
707
+
708
+ -- TODO we should combine ShapeImpl with ShapeDef and add type param to ShapeModifyHandler so we don't have to do this weirdness
704
709
(shapeDef, shapeImpl) = case (_shapeModifyHandler_shapeType, selt) of
705
710
(ShapeType_Box , SEltBox sbox) -> (boxShapeDef, _shapeDef_impl boxShapeDef sbox)
711
+ (ShapeType_Ellipse , SEltEllipse sellipse) -> (boxShapeDef, _shapeDef_impl ellipseShapeDef sellipse)
706
712
(x, y) -> error (" attempting to use ShapeModifyHandler with (" <> show x <> " , " <> show y <> " )" )
707
713
708
714
in case _mouseDrag_state of
0 commit comments