      */
     public function set rowCount(value:int):void
     {
+        // Changing rowCount/columnCount explicit values may affect layout
+        // even if the current actual values are the same
+        if (value == explicitRowCount)
+            return;
         explicitRowCount = value;
-        if (value == _rowCount)
-            return;
 
         _rowCount = value;
         invalidateTargetSizeAndDisplayList();

     */
    protected function dispatchEventsForActualValueChanges():void
    {
        if (oldColumnWidth != _columnWidth)
            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "columnWidth", oldColumnWidth, _columnWidth));
        if (oldRowHeight != _rowHeight)
            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "rowHeight", oldRowHeight, _rowHeight));
        if (oldColumnCount != _columnCount)
            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "columnCount", oldColumnCount, _columnCount));
        if (oldRowCount != _rowCount)
            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "rowCount", oldRowCount, _rowCount));
        if (oldHorizontalGap != _horizontalGap)
            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "horizontalGap", oldHorizontalGap, _horizontalGap));
        if (oldVerticalGap != _verticalGap)
            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "verticalGap", oldVerticalGap, _verticalGap));

        oldColumnWidth   = _columnWidth;
        oldRowHeight     = _rowHeight;

     */
    public function set columnCount(value:int):void
    {
        // Changing rowCount/columnCount explicit values may affect layout
        // even if the current actual values are the same
        if (value == explicitColumnCount)
            return;
        explicitColumnCount = value;

        _columnCount = value;
        invalidateTargetSizeAndDisplayList();
