diff --git a/FL/Fl_Table.H b/FL/Fl_Table.H
index 746b3a37d1941517ab5814fb1b1651d761afd8f7..7fb80cd04f5df8f0e423e8e7d9adc4001b544e03 100644
--- a/FL/Fl_Table.H
+++ b/FL/Fl_Table.H
@@ -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
diff --git a/FL/Fl_Table_Row.H b/FL/Fl_Table_Row.H
index ac35f333c72525d86e8ece25fbabad05966620f1..93f8b0e8cb3a48bedb6e40644e81f967abc676ef 100644
--- a/FL/Fl_Table_Row.H
+++ b/FL/Fl_Table_Row.H
@@ -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
diff --git a/src/Fl_Table_Row.cxx b/src/Fl_Table_Row.cxx
index e800455f8b152f757034666d95f8f1ba273adf43..dca5c10b7f718e4aa9460e4b6edc956b51a10ed0 100644
--- a/src/Fl_Table_Row.cxx
+++ b/src/Fl_Table_Row.cxx
@@ -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); }