mirror of
https://github.com/fltk/fltk.git
synced 2026-05-21 06:21:26 +08:00
Fix return value of Fl_Table_Row::row_selected(int) (PR #1187)
As discussed in the context of PR #1187 the previous return value '-1' was misleading and undocumented. The docs mentioned only '1' and '0'. User code that used the return value as documented (like a `bool`) would make the wrong decision if the return value was '-1': true (selected) instead false (out of range). This commit fixes the code by doing what the docs define and clarifies the documentation. Further documentation improvements of Fl_Table (example code used a method that is not defined in Fl_Table) and of Fl_Table_Row are included as well. Doxygen docs of two methods of Fl_Table_Row moved to the .cxx file where they belong according to the CMP.
This commit is contained in:
+1
-1
@@ -351,7 +351,7 @@ protected:
|
||||
fl_push_clip(X, Y, W, H);
|
||||
{
|
||||
// BG COLOR
|
||||
fl_color( row_selected(R) ? selection_color() : FL_WHITE);
|
||||
fl_color(is_selected(R, C) ? selection_color() : FL_WHITE);
|
||||
fl_rectf(X, Y, W, H);
|
||||
|
||||
// TEXT
|
||||
|
||||
+4
-12
@@ -157,19 +157,11 @@ public:
|
||||
return(_selectmode);
|
||||
}
|
||||
|
||||
/**
|
||||
Checks to see if 'row' is selected. Returns 1 if selected, 0 if not. You can
|
||||
change the selection of a row by clicking on it, or by using
|
||||
select_row(row, flag)
|
||||
*/
|
||||
int row_selected(int row); // is row selected? (0=no, 1=yes, -1=range err)
|
||||
// Checks to see if 'row' is selected. Returns 1 if selected, 0 if not.
|
||||
int row_selected(int row);
|
||||
|
||||
/**
|
||||
Changes the selection state for 'row', depending on the value
|
||||
of 'flag'. 0=deselected, 1=select, 2=toggle existing state.
|
||||
*/
|
||||
int select_row(int row, int flag=1); // select state for row: flag:0=off, 1=on, 2=toggle
|
||||
// returns: 0=no change, 1=changed, -1=range err
|
||||
// Changes the selection state for 'row', depending on the value of 'flag'.
|
||||
int select_row(int row, int flag = 1);
|
||||
|
||||
/**
|
||||
This convenience function changes the selection state
|
||||
|
||||
+33
-15
@@ -64,10 +64,24 @@ void Fl_Table_Row::CharVector::size(int count) {
|
||||
}
|
||||
|
||||
|
||||
// Is row selected?
|
||||
/**
|
||||
Checks to see if 'row' is selected.
|
||||
|
||||
Returns 1 if selected, 0 if not. You can change the selection of a row
|
||||
by clicking on it, or by using select_row(row, flag)
|
||||
|
||||
\p row \b should be a valid row. If the row is out of range the return
|
||||
value is 0 (zero).
|
||||
|
||||
\param[in] row row to be checked
|
||||
|
||||
\return whether given row is selected
|
||||
\retval 1 row is selected
|
||||
\retval 0 row is not selected or \p row is out of range
|
||||
*/
|
||||
int Fl_Table_Row::row_selected(int row) {
|
||||
if ( row < 0 || row >= rows() ) return(-1);
|
||||
return(_rowselect[row]);
|
||||
if (row < 0 || row >= rows()) return 0;
|
||||
return _rowselect[row];
|
||||
}
|
||||
|
||||
// Change row selection type
|
||||
@@ -98,18 +112,22 @@ void Fl_Table_Row::type(TableRowSelectMode val) {
|
||||
}
|
||||
}
|
||||
|
||||
// Change selection state for row
|
||||
//
|
||||
// flag:
|
||||
// 0 - clear selection
|
||||
// 1 - set selection
|
||||
// 2 - toggle selection
|
||||
//
|
||||
// Returns:
|
||||
// 0 - selection state did not change
|
||||
// 1 - selection state changed
|
||||
// -1 - row out of range or incorrect selection mode
|
||||
//
|
||||
/**
|
||||
Changes the selection state for \p 'row', depending on the value of \p 'flag'.
|
||||
|
||||
The optional \p flag can be:
|
||||
- 0: clear selection
|
||||
- 1: set selection (default)
|
||||
- 2: toggle selection
|
||||
|
||||
\param[in] row row to be selected, deselected, or toggled
|
||||
\param[in] flag change mode, see description
|
||||
\return result of modification, see description
|
||||
\retval 0: selection state did not change
|
||||
\retval 1: selection state changed
|
||||
\retval -1: row out of range or incorrect selection mode (\p flag)
|
||||
*/
|
||||
|
||||
int Fl_Table_Row::select_row(int row, int flag) {
|
||||
int ret = 0;
|
||||
if ( row < 0 || row >= rows() ) { return(-1); }
|
||||
|
||||
Reference in New Issue
Block a user