       else
         info.uuid
 
-    __updateInputValue: (value) ->
-      if @element.val() != value
-        @element.val(value)
-        @__onChange.fire @currentObject
-
     __reset: =>
+      # low-level primitive. @__setObject(null) could be better.
       @currentObject?.cancel?()
       @currentObject = null
       @template.reset()
-      @__updateInputValue ''
+      @element.val('')
 
     __setObject: (newFile) =>
       unless newFile == @currentObject

              @__onUploadingFailed(error)

    __onUploadingDone: (info) ->
      @__updateInputValue @__infoToValue(info)
      @template.setFileInfo(info)
      @template.loaded()


    __setupWidget: ->
      @template = new ns.Template(@settings, @element)

      @template.addButton('cancel', t('buttons.cancel')).on 'click', =>
        @__setObject(null)

      if @settings.clearable
        @template.addButton('remove', t('buttons.remove')).on 'click', =>
          @__setObject(null)

      # Create the dialog and widget buttons
      if @settings.tabs.length > 0
