mirror of https://github.com/buggins/dlangui.git
Grid: ability to set how many columns/rows get to measure widget size.
This commit is contained in:
parent
f152eacf59
commit
f458c4d9d0
|
@ -59,7 +59,7 @@ import dlangui.widgets.scroll;
|
|||
import dlangui.widgets.menu;
|
||||
import std.conv;
|
||||
import std.container.rbtree;
|
||||
import std.algorithm : equal;
|
||||
import std.algorithm : equal, min;
|
||||
|
||||
/// cellPopupMenu signal handler interface
|
||||
interface CellPopupMenuHandler {
|
||||
|
@ -1534,6 +1534,32 @@ class GridWidgetBase : ScrollWidgetBase, GridModelAdapter, MenuItemActionHandler
|
|||
return sz;
|
||||
}
|
||||
|
||||
protected int _minVisibleCols = 2;
|
||||
protected int _minVisibleRows = 2;
|
||||
|
||||
/// returns number of columns from 0 that are taken to measure minimum visible width
|
||||
@property int minVisibleCols() {
|
||||
return _minVisibleCols;
|
||||
}
|
||||
|
||||
/// sets number of columns from 0 that are taken to measure minimum visible width
|
||||
@property void minVisibleCols(int newMinVisibleCols) {
|
||||
_minVisibleCols = newMinVisibleCols;
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
/// returns number of rows from 0 that are taken to measure minimum visible height
|
||||
@property int minVisibleRows() {
|
||||
return _minVisibleRows;
|
||||
}
|
||||
|
||||
/// sets number of rows from 0 that are taken to measure minimum visible height, if there are too little rows last row height is multiplied
|
||||
@property void minVisibleRows(int newMinVisibleRows) {
|
||||
_minVisibleRows = newMinVisibleRows;
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
|
||||
/// calculate minimum size of widget
|
||||
override Point minimumVisibleContentSize() {
|
||||
Point sz;
|
||||
|
@ -1542,18 +1568,18 @@ class GridWidgetBase : ScrollWidgetBase, GridModelAdapter, MenuItemActionHandler
|
|||
sz.y = 100;
|
||||
return sz;
|
||||
}
|
||||
|
||||
// width:
|
||||
if (_cols < 2)
|
||||
sz.x = _colWidths[0];
|
||||
else
|
||||
sz.x = _colWidths[0] + _colWidths[1];
|
||||
for (int i = 0 ; i < min(_cols, _minVisibleCols) ; i++)
|
||||
sz.x += _colWidths[i];
|
||||
|
||||
// height
|
||||
if (_rows < 2)
|
||||
sz.y = _rowHeights[0];
|
||||
else
|
||||
sz.y = _rowHeights[0] + _rowHeights[1];
|
||||
|
||||
for (int i = 0 ; i < min(_rows, _minVisibleRows) ; i++)
|
||||
sz.y += _rowHeights[i];
|
||||
|
||||
if (_rows<_minVisibleRows)
|
||||
sz.y += (_minVisibleRows - _rows) * _rowHeights[_rows-1];
|
||||
|
||||
return sz;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue