def flow config={}, &block
      s = WsFlow.new config
      _configure s
      @_ws_active << s
      yield_or_eval &block if block_given?
      @_ws_active.pop 
      last = @_ws_active.last
      if last 
        case last
        when WsStack
          if s[:height]
            last[:row] += s[:height] 
          else
            #last[:row] += last[:highest_row]  
            last[:row] += 1
          end
        when WsFlow
          last[:col] += last[:item_width] || 0 
        end
      end
    end
def flow config={}, &block
      s = WsFlow.new config
      _configure s
      @_ws_active << s
      yield_or_eval &block if block_given?
      @_ws_active.pop 
      last = @_ws_active.last
      if last 
        case last
        when WsStack
          if s[:height]
            last[:row] += s[:height] 
          else
            #last[:row] += last[:highest_row]  
            last[:row] += 1
          end
        when WsFlow
          last[:col] += last[:item_width] || 0 
        end
      end
    end
item_width - width to use per item
   but the item width may apply to stacks inside not to items