         @_inflateByTrigger $trigger
         @_$currentTrigger = $trigger
       # Go directly to the position updating if no toggling is needed.
-      if @_state is 'awake' and onWake?
-        onWake()
+      if @_state is 'awake'
+        @_positionToTrigger $trigger, event
+        @onShow triggerChanged, event
+        if onWake? then onWake()
         @debugLog 'quick update'
         return yes
       if event? then @debugLog event.type

        $trigger.hasClass @classNames.trigger
      ) then $trigger else $trigger.closest(@classNames.trigger)
      return no if not $trigger.length
      @wakeByTrigger $trigger, event, =>
        offset =
          top: event.pageY
          left: event.pageX
        offset = @offsetOnTriggerMouseMove(event, offset, $trigger) or offset
        if @isDirection('north', $trigger) then offset.top -= @$tip.outerHeight() + @cursorHeight
        if @isDirection('west',  $trigger)
          tipWidth = @$tip.outerWidth()
          triggerWidth = $trigger.outerWidth()
          offset.left -= tipWidth
          # If direction changed due to tip being wider than trigger.
          if tipWidth > triggerWidth
            offset.left += triggerWidth
        if @isDirection('south', $trigger) then offset.top += @cursorHeight
        offset.top += @cursorHeight
        @$tip.css offset
        @debugLog '_onTriggerMouseMove', @_state, offset

    # `_updateDirectionByTrigger` is the main provider of auto-direction
    # support. Given the `$context`'s `_bounds`, it changes to the best

    # `_onTriggerMouseMove` is actually the main tip toggling handler. To
    # explain, first we take into account of child elements triggering the mouse
    # event by deducing the event's actual `$trigger` element. Then we
    # `wakeByTrigger` if needed.
    _onTriggerMouseMove: (event) ->
      return no if not event.pageX?
      $trigger = if (
