protected void handleMutation() {

        if (m_unregistered) {
            removeObserver();
            return;
        }

        int maxHeight = getState().getMaxHeight();
        if (m_currentHeight > 0) {
            removeObserver(); // prevent 'recursive' call of handleMutation (it's not actually recursive since it's async, but would still lead to an infinite number of calls)
            JavaScriptObject scrollPositionData = saveScrollPositions(m_widget.getElement());
            String classToAdd = "o-measuring-height";
            m_widget.addStyleName(classToAdd);
            m_widget.getElement().getStyle().clearHeight();
            int computedHeight = m_widget.getOffsetHeight();
            m_widget.removeStyleName(classToAdd);
            if ((computedHeight + 10) < m_currentHeight) {
                m_currentHeight = -1;
                m_rpc.fixHeight(m_currentHeight);
            } else {
                m_widget.getElement().getStyle().setHeight(m_currentHeight, Unit.PX);
            }
            restoreScrollPositions(scrollPositionData);
            addMutationObserver(m_widget.getElement());
        } else if ((maxHeight > 0) && (m_widget.getOffsetHeight() > maxHeight)) {
            m_currentHeight = maxHeight;
            m_rpc.fixHeight(m_currentHeight);
        }
    }
protected void handleMutation ( ) { if ( m_unregistered ) { removeObserver ( ) ; return ; } int maxHeight = getState ( ) . getMaxHeight ( ) ; if ( m_currentHeight > 0 ) { removeObserver ( ) ; JavaScriptObject scrollPositionData = saveScrollPositions ( m_widget . getElement ( ) ) ; String classToAdd = "o-measuring-height" ; m_widget . addStyleName ( classToAdd ) ; m_widget . getElement ( ) . getStyle ( ) . clearHeight ( ) ; int computedHeight = m_widget . getOffsetHeight ( ) ; m_widget . removeStyleName ( classToAdd ) ; if ( ( computedHeight + 10 ) < m_currentHeight ) { m_currentHeight = - 1 ; m_rpc . fixHeight ( m_currentHeight ) ; } else { m_widget . getElement ( ) . getStyle ( ) . setHeight ( m_currentHeight , Unit . PX ) ; } restoreScrollPositions ( scrollPositionData ) ; addMutationObserver ( m_widget . getElement ( ) ) ; } else if ( ( maxHeight > 0 ) && ( m_widget . getOffsetHeight ( ) > maxHeight ) ) { m_currentHeight = maxHeight ; m_rpc . fixHeight ( m_currentHeight ) ; } }
Handles the widget mutation.<p>