/**
   * Computes the new layout disposition based on the actual resize frame
   *
   * @param mode The resize mode
   */
  private void computeNewDispositions(int mode) {
    // Fill the empty areas
    do {
      byte[][] dispositionMatrix = DispositionUtil.toMatrix(mDispositions, mCols, mRows);
      Rect rect = MERAlgorithm.getMaximalEmptyRectangle(dispositionMatrix);
      if (rect.width() == 0 && rect.height() == 0) {
        // No more empty areas
        break;
      }
      Disposition disposition = DispositionUtil.fromRect(rect);
      createFrame(getLocationFromDisposition(disposition), true);
      mDispositions.add(disposition);
    } while (true);

    // Now the view was changed and should be reported
    Collections.sort(mDispositions);
    mChanged = true;
  }
 /** {@inheritDoc} */
 @Override
 public List<Disposition> getDefaultDispositions() {
   return DispositionUtil.toDispositions(Preferences.Layout.DEFAULT_LANDSCAPE_DISPOSITION);
 }