void WBoxLayout::insertItem(int index, WLayoutItem *item, int stretch, WFlags<AlignmentFlag> alignment) { switch (direction_) { case RightToLeft: index = grid_.columns_.size() - index; case LeftToRight: grid_.columns_.insert(grid_.columns_.begin() + index, Impl::Grid::Column(stretch)); if (grid_.items_.empty()) { grid_.items_.push_back(std::vector<Impl::Grid::Item>()); grid_.rows_.push_back(Impl::Grid::Row()); grid_.rows_[0].stretch_ = -1; // make height managed } grid_.items_[0].insert(grid_.items_[0].begin() + index, Impl::Grid::Item(item, alignment)); break; case BottomToTop: index = grid_.rows_.size() - index; case TopToBottom: if (grid_.columns_.empty()) { grid_.columns_.push_back(Impl::Grid::Column()); grid_.columns_[0].stretch_ = -1; // make width managed } grid_.rows_.insert(grid_.rows_.begin() + index, Impl::Grid::Row(stretch)); grid_.items_.insert(grid_.items_.begin() + index, std::vector<Impl::Grid::Item>()); grid_.items_[index].push_back(Impl::Grid::Item(item, alignment)); break; } updateAddItem(item); }
void WFitLayout::addItem(WLayoutItem *item) { if (grid_.items_[0][0].item_) { LOG_ERROR("addItem(): already have a widget"); return; } grid_.items_[0][0].item_ = item; updateAddItem(item); }
void WGridLayout::addItem(WLayoutItem *item, int row, int column, int rowSpan, int columnSpan, WFlags<AlignmentFlag> alignment) { columnSpan = std::max(1, columnSpan); rowSpan = std::max(1, rowSpan); expand(row, column, rowSpan, columnSpan); Impl::Grid::Item& gridItem = grid_.items_[row][column]; if (gridItem.item_) { WLayoutItem *oldItem = gridItem.item_; gridItem.item_ = 0; updateRemoveItem(oldItem); } gridItem.item_ = item; gridItem.rowSpan_ = rowSpan; gridItem.colSpan_ = columnSpan; gridItem.alignment_ = alignment; updateAddItem(item); }