     @props.onChange @props.mark
 
   handleLeftDrag: (e, d) ->
-    @props.mark.x += d.x / @props.scale.horizontal if @props.mark.width >= MINIMUM_WIDTH
-    @props.mark.width -= d.x / @props.scale.horizontal 
-    @props.onChange @props.mark if @props.mark.width >= MINIMUM_WIDTH
+    if @props.mark.width - d.x / @props.scale.horizontal >= MINIMUM_WIDTH
+      @props.mark.x += d.x / @props.scale.horizontal
+      @props.mark.width -= d.x / @props.scale.horizontal 
+      @props.onChange @props.mark
 
   handleRightDrag: (e, d) ->
-    @props.mark.width += d.x / @props.scale.horizontal
-    @props.onChange @props.mark 
-
-  normalizeMark: ->
-    if @props.mark.width < MINIMUM_WIDTH
-      @props.mark.x += @props.mark.width if @props.mark.width >= MINIMUM_WIDTH
-      @props.mark.width is MINIMUM_WIDTH
-
-    @props.onChange @props.mark if @props.mark.width >= MINIMUM_WIDTH
+    if @props.mark.width + d.x / @props.scale.horizontal >= MINIMUM_WIDTH
+      @props.mark.width += d.x / @props.scale.horizontal
+      @props.onChange @props.mark

  statics:
    initCoords: null

    defaultValues: ({x, y}) ->
      x: x
      y: 0
      width: DEFAULT_WIDTH

    initStart: ({x, y}, mark) ->
      @initCoords = {x, 0}
      {x, 0, _inProgress: true}


  initCoords: null

  render: ->
    {x, width} = @props.mark

    <DrawingToolRoot tool={this}>
      <Draggable onDrag={@handleMainDrag} disabled={@props.disabled}>
        <rect ref="rect" x={x} y={0} width={width} height={@props.containerRect.height / @props.scale.vertical} />
      </Draggable>

      {if @props.selected
        <g>
          <DeleteButton tool={this} x={x + width + 20} y={15} />

          <DragHandle x={x} y={(@props.containerRect.height / @props.scale.vertical) / 2} scale={@props.scale} onDrag={@handleLeftDrag} />
          <DragHandle x={x + width} y={(@props.containerRect.height / @props.scale.vertical) / 2} scale={@props.scale} onDrag={@handleRightDrag} />
        </g>}
    </DrawingToolRoot>

