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 dlangui.widgets.menu;
|
||||||
import std.conv;
|
import std.conv;
|
||||||
import std.container.rbtree;
|
import std.container.rbtree;
|
||||||
import std.algorithm : equal;
|
import std.algorithm : equal, min;
|
||||||
|
|
||||||
/// cellPopupMenu signal handler interface
|
/// cellPopupMenu signal handler interface
|
||||||
interface CellPopupMenuHandler {
|
interface CellPopupMenuHandler {
|
||||||
|
@ -1534,6 +1534,32 @@ class GridWidgetBase : ScrollWidgetBase, GridModelAdapter, MenuItemActionHandler
|
||||||
return sz;
|
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
|
/// calculate minimum size of widget
|
||||||
override Point minimumVisibleContentSize() {
|
override Point minimumVisibleContentSize() {
|
||||||
Point sz;
|
Point sz;
|
||||||
|
@ -1542,17 +1568,17 @@ class GridWidgetBase : ScrollWidgetBase, GridModelAdapter, MenuItemActionHandler
|
||||||
sz.y = 100;
|
sz.y = 100;
|
||||||
return sz;
|
return sz;
|
||||||
}
|
}
|
||||||
|
|
||||||
// width:
|
// width:
|
||||||
if (_cols < 2)
|
for (int i = 0 ; i < min(_cols, _minVisibleCols) ; i++)
|
||||||
sz.x = _colWidths[0];
|
sz.x += _colWidths[i];
|
||||||
else
|
|
||||||
sz.x = _colWidths[0] + _colWidths[1];
|
|
||||||
|
|
||||||
// height
|
// height
|
||||||
if (_rows < 2)
|
for (int i = 0 ; i < min(_rows, _minVisibleRows) ; i++)
|
||||||
sz.y = _rowHeights[0];
|
sz.y += _rowHeights[i];
|
||||||
else
|
|
||||||
sz.y = _rowHeights[0] + _rowHeights[1];
|
if (_rows<_minVisibleRows)
|
||||||
|
sz.y += (_minVisibleRows - _rows) * _rowHeights[_rows-1];
|
||||||
|
|
||||||
return sz;
|
return sz;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue