summaryrefslogtreecommitdiff
path: root/src/Fl_Table_Row.cxx
diff options
context:
space:
mode:
authormaxim nikonov <maxim.nikonov@hqo.co>2026-02-05 16:35:56 +0500
committermaxim nikonov <maxim.nikonov@hqo.co>2026-02-05 16:35:56 +0500
commit7d3793ce1d8cb26e7608bf859beca21359cec6e9 (patch)
tree70f168b5daafa2b013dc518a393378022172940a /src/Fl_Table_Row.cxx
parentcdf2832347b8fdf0389cd373c2ead0ac5d071037 (diff)
wip
Diffstat (limited to 'src/Fl_Table_Row.cxx')
-rw-r--r--src/Fl_Table_Row.cxx39
1 files changed, 27 insertions, 12 deletions
diff --git a/src/Fl_Table_Row.cxx b/src/Fl_Table_Row.cxx
index 849cd0383..d07db7ac7 100644
--- a/src/Fl_Table_Row.cxx
+++ b/src/Fl_Table_Row.cxx
@@ -63,20 +63,21 @@ int Fl_Table_Row::row_selected(int row) {
// Change row selection type
void Fl_Table_Row::type(TableRowSelectMode val) {
_selectmode = val;
+ int i;
switch ( _selectmode ) {
case SELECT_NONE: {
- for (auto &sel : _rowselect) {
- sel = 0;
+ for (i = 0; i < _rowselect_size; i++) {
+ _rowselect[i] = 0;
}
redraw();
break;
}
case SELECT_SINGLE: {
int count = 0;
- for (auto &sel : _rowselect) {
- if (sel) {
+ for (i = 0; i < _rowselect_size; i++) {
+ if (_rowselect[i]) {
if (++count > 1) { // only one allowed
- sel = 0;
+ _rowselect[i] = 0;
}
}
}
@@ -149,6 +150,7 @@ int Fl_Table_Row::select_row(int row, int flag) {
// Select all rows to a known state
void Fl_Table_Row::select_all_rows(int flag) {
+ int i;
switch ( _selectmode ) {
case SELECT_NONE:
return;
@@ -160,14 +162,14 @@ void Fl_Table_Row::select_all_rows(int flag) {
case SELECT_MULTI: {
char changed = 0;
if ( flag == 2 ) {
- for (auto &sel : _rowselect) {
- sel ^= 1;
+ for (i = 0; i < _rowselect_size; i++) {
+ _rowselect[i] ^= 1;
}
changed = 1;
} else {
- for (auto &sel : _rowselect) {
- changed |= (sel != flag) ? 1 : 0;
- sel = flag;
+ for (i = 0; i < _rowselect_size; i++) {
+ changed |= (_rowselect[i] != flag) ? 1 : 0;
+ _rowselect[i] = flag;
}
}
if ( changed ) {
@@ -180,9 +182,22 @@ void Fl_Table_Row::select_all_rows(int flag) {
// Set number of rows
void Fl_Table_Row::rows(int val) {
// Note: order of operations below matters, see PR #1187
- if (val > (int)_rowselect.size()) { _rowselect.resize(val, 0); } // enlarge
+ if (val > _rowselect_size) {
+ // enlarge
+ if (val > _rowselect_alloc) {
+ _rowselect = (unsigned char*)realloc(_rowselect, val);
+ _rowselect_alloc = val;
+ }
+ int i;
+ for (i = _rowselect_size; i < val; i++)
+ _rowselect[i] = 0;
+ _rowselect_size = val;
+ }
Fl_Table::rows(val);
- if (val < (int)_rowselect.size()) { _rowselect.resize(val); } // shrink
+ if (val < _rowselect_size) {
+ // shrink
+ _rowselect_size = val;
+ }
}
// Handle events