       @disposables.remove(didChangePositionDisposable)
       @disposables.remove(didChangeVisibilityDisposable)
       @disposables.remove(didDestroyDisposable)
-      @updateHiddenInputState()
+      @shouldUpdateHiddenInputState = true
       @updateCursorState(cursor, true)
+
+      @emitDidUpdateState()
 
     @disposables.add(didChangePositionDisposable)
     @disposables.add(didChangeVisibilityDisposable)

      @updateHighlightState(decoration)

    if decoration.isType('overlay')
      @updateOverlaysState()

  decorationPropertiesDidChange: (decoration, event) ->
    {oldProperties} = event

      @updateHeight()
      @updateStartRow()
      @updateEndRow()
      @shouldUpdateHeightState = true
      @shouldUpdateHorizontalScrollState = true
      @shouldUpdateVerticalScrollState = true
      @shouldUpdateScrollbarsState = true
      @shouldUpdateHiddenInputState = true
      @shouldUpdateDecorations = true
      @shouldUpdateLinesState = true
      @shouldUpdateCursorsState = true
      @shouldUpdateLineNumbersState = true
      @shouldUpdateCustomGutterDecorationState = true
      @shouldUpdateOverlaysState = true

      @emitDidUpdateState()

  setMouseWheelScreenRow: (mouseWheelScreenRow) ->
    unless @mouseWheelScreenRow is mouseWheelScreenRow
