summaryrefslogtreecommitdiff
path: root/src/Fl_Table_Row.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Table_Row.cxx')
-rw-r--r--src/Fl_Table_Row.cxx302
1 files changed, 151 insertions, 151 deletions
diff --git a/src/Fl_Table_Row.cxx b/src/Fl_Table_Row.cxx
index 85fa5aac5..8536c7e44 100644
--- a/src/Fl_Table_Row.cxx
+++ b/src/Fl_Table_Row.cxx
@@ -46,7 +46,7 @@ void Fl_Table_Row::type(TableRowSelectMode val) {
case SELECT_NONE:
{
for ( int row=0; row<rows(); row++ ) {
- _rowselect[row] = 0;
+ _rowselect[row] = 0;
}
redraw();
break;
@@ -55,11 +55,11 @@ void Fl_Table_Row::type(TableRowSelectMode val) {
{
int count = 0;
for ( int row=0; row<rows(); row++ ) {
- if ( _rowselect[row] ) {
- if ( ++count > 1 ) { // only one allowed
- _rowselect[row] = 0;
- }
- }
+ if ( _rowselect[row] ) {
+ if ( ++count > 1 ) { // only one allowed
+ _rowselect[row] = 0;
+ }
+ }
}
redraw();
break;
@@ -87,39 +87,39 @@ int Fl_Table_Row::select_row(int row, int flag) {
switch ( _selectmode ) {
case SELECT_NONE:
return(-1);
-
+
case SELECT_SINGLE:
{
int oldval;
for ( int t=0; t<rows(); t++ ) {
- if ( t == row ) {
- oldval = _rowselect[row];
- if ( flag == 2 ) { _rowselect[row] ^= 1; }
- else { _rowselect[row] = flag; }
- if ( oldval != _rowselect[row] ) {
- redraw_range(row, row, leftcol, rightcol);
- ret = 1;
- }
- }
- else if ( _rowselect[t] ) {
- _rowselect[t] = 0;
- redraw_range(t, t, leftcol, rightcol);
- }
+ if ( t == row ) {
+ oldval = _rowselect[row];
+ if ( flag == 2 ) { _rowselect[row] ^= 1; }
+ else { _rowselect[row] = flag; }
+ if ( oldval != _rowselect[row] ) {
+ redraw_range(row, row, leftcol, rightcol);
+ ret = 1;
+ }
+ }
+ else if ( _rowselect[t] ) {
+ _rowselect[t] = 0;
+ redraw_range(t, t, leftcol, rightcol);
+ }
}
break;
}
-
+
case SELECT_MULTI:
{
int oldval = _rowselect[row];
if ( flag == 2 ) { _rowselect[row] ^= 1; }
else { _rowselect[row] = flag; }
if ( _rowselect[row] != oldval ) { // select state changed?
- if ( row >= toprow && row <= botrow ) { // row visible?
- // Extend partial redraw range
- redraw_range(row, row, leftcol, rightcol);
- }
- ret = 1;
+ if ( row >= toprow && row <= botrow ) { // row visible?
+ // Extend partial redraw range
+ redraw_range(row, row, leftcol, rightcol);
+ }
+ ret = 1;
}
}
}
@@ -131,24 +131,24 @@ void Fl_Table_Row::select_all_rows(int flag) {
switch ( _selectmode ) {
case SELECT_NONE:
return;
-
+
case SELECT_SINGLE:
if ( flag != 0 ) return;
//FALLTHROUGH
-
+
case SELECT_MULTI:
{
char changed = 0;
if ( flag == 2 ) {
- for ( int row=0; row<(int)_rowselect.size(); row++ ) {
- _rowselect[row] ^= 1;
- }
- changed = 1;
+ for ( int row=0; row<(int)_rowselect.size(); row++ ) {
+ _rowselect[row] ^= 1;
+ }
+ changed = 1;
} else {
- for ( int row=0; row<(int)_rowselect.size(); row++ ) {
- changed |= (_rowselect[row] != flag)?1:0;
- _rowselect[row] = flag;
- }
+ for ( int row=0; row<(int)_rowselect.size(); row++ ) {
+ changed |= (_rowselect[row] != flag)?1:0;
+ _rowselect[row] = flag;
+ }
}
if ( changed ) {
redraw();
@@ -169,19 +169,19 @@ void Fl_Table_Row::rows(int val) {
// Handle events
int Fl_Table_Row::handle(int event) {
-
+
// fprintf(stderr, "** EVENT: %s: EVENT XY=%d,%d\n",
// eventnames[event], Fl::event_x(), Fl::event_y()); // debugging
-
+
// Let base class handle event
int ret = Fl_Table::handle(event);
-
+
// The following code disables cell selection.. why was it added? -erco 05/18/03
// if ( ret ) { _last_y = Fl::event_y(); return(1); } // base class 'handled' it (eg. column resize)
-
+
int shiftstate = (Fl::event_state() & FL_CTRL) ? FL_CTRL :
- (Fl::event_state() & FL_SHIFT) ? FL_SHIFT : 0;
-
+ (Fl::event_state() & FL_SHIFT) ? FL_SHIFT : 0;
+
// Which row/column are we over?
int R, C; // row/column being worked on
ResizeFlag resizeflag; // which resizing area are we over? (0=none)
@@ -189,128 +189,128 @@ int Fl_Table_Row::handle(int event) {
switch ( event ) {
case FL_PUSH:
if ( Fl::event_button() == 1 ) {
- _last_push_x = Fl::event_x(); // save regardless of context
- _last_push_y = Fl::event_y(); // " "
-
- // Handle selection in table.
- // Select cell under cursor, and enable drag selection mode.
- //
- if ( context == CONTEXT_CELL ) {
- // Ctrl key? Toggle selection state
- switch ( shiftstate ) {
- case FL_CTRL:
- select_row(R, 2); // toggle
- break;
-
- case FL_SHIFT:
- {
- select_row(R, 1);
- if ( _last_row > -1 ) {
- int srow = R, erow = _last_row;
- if ( srow > erow ) {
- srow = _last_row;
- erow = R;
- }
- for ( int row = srow; row <= erow; row++ ) {
- select_row(row, 1);
- }
- }
- break;
- }
-
- default:
- select_all_rows(0); // clear all previous selections
- select_row(R, 1);
- break;
- }
-
- _last_row = R;
- _dragging_select = 1;
- ret = 1; // FL_PUSH handled (ensures FL_DRAG will be sent)
- // redraw(); // redraw() handled by select_row()
- }
+ _last_push_x = Fl::event_x(); // save regardless of context
+ _last_push_y = Fl::event_y(); // " "
+
+ // Handle selection in table.
+ // Select cell under cursor, and enable drag selection mode.
+ //
+ if ( context == CONTEXT_CELL ) {
+ // Ctrl key? Toggle selection state
+ switch ( shiftstate ) {
+ case FL_CTRL:
+ select_row(R, 2); // toggle
+ break;
+
+ case FL_SHIFT:
+ {
+ select_row(R, 1);
+ if ( _last_row > -1 ) {
+ int srow = R, erow = _last_row;
+ if ( srow > erow ) {
+ srow = _last_row;
+ erow = R;
+ }
+ for ( int row = srow; row <= erow; row++ ) {
+ select_row(row, 1);
+ }
+ }
+ break;
+ }
+
+ default:
+ select_all_rows(0); // clear all previous selections
+ select_row(R, 1);
+ break;
+ }
+
+ _last_row = R;
+ _dragging_select = 1;
+ ret = 1; // FL_PUSH handled (ensures FL_DRAG will be sent)
+ // redraw(); // redraw() handled by select_row()
+ }
}
break;
-
+
case FL_DRAG:
{
if ( _dragging_select ) {
- // Dragged off table edges? Handle scrolling
- int offtop = toy - _last_y; // >0 if off top of table
- int offbot = _last_y - (toy + toh); // >0 if off bottom of table
-
- if ( offtop > 0 && row_position() > 0 ) {
- // Only scroll in upward direction
- int diff = _last_y - Fl::event_y();
- if ( diff < 1 ) {
- ret = 1;
- break;
- }
- row_position(row_position() - diff);
- context = CONTEXT_CELL; C = 0; R = row_position(); // HACK: fake it
- if ( R < 0 || R > rows() ) { ret = 1; break; } // HACK: ugly
- }
- else if ( offbot > 0 && botrow < rows() ) {
- // Only scroll in downward direction
- int diff = Fl::event_y() - _last_y;
- if ( diff < 1 ) {
- ret = 1;
- break;
- }
- row_position(row_position() + diff);
- context = CONTEXT_CELL; C = 0; R = botrow; // HACK: fake it
- if ( R < 0 || R > rows() ) { ret = 1; break; } // HACK: ugly
- }
- if ( context == CONTEXT_CELL ) {
- switch ( shiftstate ) {
- case FL_CTRL:
- if ( R != _last_row ) { // toggle if dragged to new row
- select_row(R, 2); // 2=toggle
- }
- break;
-
- case FL_SHIFT:
- default:
- select_row(R, 1);
- if ( _last_row > -1 ) {
- int srow = R, erow = _last_row;
- if ( srow > erow ) {
- srow = _last_row;
- erow = R;
- }
- for ( int row = srow; row <= erow; row++ ) {
- select_row(row, 1);
- }
- }
- break;
- }
- ret = 1; // drag handled
- _last_row = R;
- }
+ // Dragged off table edges? Handle scrolling
+ int offtop = toy - _last_y; // >0 if off top of table
+ int offbot = _last_y - (toy + toh); // >0 if off bottom of table
+
+ if ( offtop > 0 && row_position() > 0 ) {
+ // Only scroll in upward direction
+ int diff = _last_y - Fl::event_y();
+ if ( diff < 1 ) {
+ ret = 1;
+ break;
+ }
+ row_position(row_position() - diff);
+ context = CONTEXT_CELL; C = 0; R = row_position(); // HACK: fake it
+ if ( R < 0 || R > rows() ) { ret = 1; break; } // HACK: ugly
+ }
+ else if ( offbot > 0 && botrow < rows() ) {
+ // Only scroll in downward direction
+ int diff = Fl::event_y() - _last_y;
+ if ( diff < 1 ) {
+ ret = 1;
+ break;
+ }
+ row_position(row_position() + diff);
+ context = CONTEXT_CELL; C = 0; R = botrow; // HACK: fake it
+ if ( R < 0 || R > rows() ) { ret = 1; break; } // HACK: ugly
+ }
+ if ( context == CONTEXT_CELL ) {
+ switch ( shiftstate ) {
+ case FL_CTRL:
+ if ( R != _last_row ) { // toggle if dragged to new row
+ select_row(R, 2); // 2=toggle
+ }
+ break;
+
+ case FL_SHIFT:
+ default:
+ select_row(R, 1);
+ if ( _last_row > -1 ) {
+ int srow = R, erow = _last_row;
+ if ( srow > erow ) {
+ srow = _last_row;
+ erow = R;
+ }
+ for ( int row = srow; row <= erow; row++ ) {
+ select_row(row, 1);
+ }
+ }
+ break;
+ }
+ ret = 1; // drag handled
+ _last_row = R;
+ }
}
break;
}
-
+
case FL_RELEASE:
if ( Fl::event_button() == 1 ) {
- _dragging_select = 0;
- ret = 1; // release handled
- // Clicked off edges of data table?
- // A way for user to clear the current selection.
- //
- int databot = tiy + table_h,
- dataright = tix + table_w;
- if (
- ( _last_push_x > dataright && Fl::event_x() > dataright ) ||
- ( _last_push_y > databot && Fl::event_y() > databot )
- ) {
- select_all_rows(0); // clear previous selections
- }
+ _dragging_select = 0;
+ ret = 1; // release handled
+ // Clicked off edges of data table?
+ // A way for user to clear the current selection.
+ //
+ int databot = tiy + table_h,
+ dataright = tix + table_w;
+ if (
+ ( _last_push_x > dataright && Fl::event_x() > dataright ) ||
+ ( _last_push_y > databot && Fl::event_y() > databot )
+ ) {
+ select_all_rows(0); // clear previous selections
+ }
}
break;
-
+
default:
- break;
+ break;
}
_last_y = Fl::event_y();
return(ret);