void inventory_selector::prepare_columns( bool multiselect ) { for( auto &column : columns ) { column->set_multiselect( multiselect ); } if( custom_column != nullptr ) { if( columns.empty() || column_can_fit( *custom_column ) ) { // Make the column second if possible const auto position = ( !columns.empty() ) ? std::next( columns.begin() ) : columns.begin(); custom_column->set_multiselect( multiselect ); insert_column( position, custom_column ); } else { columns.front()->add_entries( *custom_column ); custom_column.release(); } } for( auto &column : columns ) { column->prepare_paging( getmaxy( w_inv ) - 5 ); } refresh_active_column(); }
void inventory_selector::insert_selection_column( const std::string &id, const std::string &name ) { std::unique_ptr<inventory_column> new_column( new selection_column( id, name ) ); for( const auto &column : columns ) { static_cast<selection_column *>( new_column.get() )->reserve_width_for( *column ); } if( column_can_fit( *new_column ) ) { // Insert only if it will be visible. Ignore otherwise. insert_column( columns.end(), new_column ); } }