| 350 | |
| 351 | |
| 352 | void CsvGrid::event_callback2() { |
| 353 | DEBUG_PRINTF("#### CsvGrid::event_callback2\n"); |
| 354 | if( !areEventsAllowed() ) |
| 355 | return; |
| 356 | int R = callback_row(); // returns the row the event occured on |
| 357 | int C = callback_col(); |
| 358 | TableContext context = callback_context(); |
| 359 | int event = Fl::event(); |
| 360 | int row_top, col_left, row_bot, col_right; // the previous selection |
| 361 | |
| 362 | DEBUG_PRINTF(".... 20\n"); |
| 363 | get_selection(row_top, col_left, row_bot, col_right); |
| 364 | DEBUG_PRINTF(".... 30\n"); |
| 365 | int topwin = app.getTopWindow(); |
| 366 | DEBUG_PRINTF(".... topwin=%d\n", topwin); |
| 367 | windows[topwin].showDefaultStatus(); |
| 368 | DEBUG_PRINTF(".... 40\n"); |
| 369 | |
| 370 | // Debug only! |
| 371 | // #include <FL/names.h> |
| 372 | // printf(">>> grid > event_callback2: event = %s (%d) | context = %d\n", fl_eventnames[event], event, context); |
| 373 | // printf("... selection = %d,%d %d,%d\n", row_top, col_left, row_bot, col_right); |
| 374 | // End debug |
| 375 | |
| 376 | switch ( context ) { |
| 377 | case CONTEXT_COL_HEADER: |
| 378 | switch(event) { |
| 379 | case FL_RELEASE: |
| 380 | DEBUG_PRINTF(".... CONTEXT_COL_HEADER > FL_RELEASE\n"); |
| 381 | if( Fl::event_button() == FL_RIGHT_MOUSE && !Fl::event_command() && !Fl::event_shift() && !Fl::event_ctrl() && !Fl::event_alt() ) { |
| 382 | // Col Header Right_Click |
| 383 | app.sort(C); |
| 384 | } |
| 385 | if( Fl::event_button() == FL_LEFT_MOUSE && Fl::event_shift() && !Fl::event_command() && !Fl::event_ctrl() && !Fl::event_alt() ) { |
| 386 | // Col Header Shift-Left_Click |
| 387 | updateSelection(0, std::min(mouse_push_left,C), rows()-1, std::max(mouse_push_left,C)); |
| 388 | } |
| 389 | break; |
| 390 | } |
| 391 | break; // case CONTEXT_COL_HEADER |
| 392 | case CONTEXT_ROW_HEADER: |
| 393 | switch(event) { |
| 394 | case FL_RELEASE: |
| 395 | DEBUG_PRINTF(".... CONTEXT_ROW_HEADER > FL_RELEASE\n"); |
| 396 | if( Fl::event_button() == FL_LEFT_MOUSE && Fl::event_alt() && !Fl::event_command() && !Fl::event_ctrl() && !Fl::event_shift() ) { |
| 397 | // Row Header Alt-Left_Click |
| 398 | if( windows[app.getTopWindow()].table->isFlagged(R) ) { |
| 399 | windows[app.getTopWindow()].table->flagRow(R, false); |
| 400 | } else { |
| 401 | windows[app.getTopWindow()].table->flagRow(R, true); |
| 402 | } |
| 403 | Fl::redraw(); |
| 404 | } |
| 405 | break; |
| 406 | } |
| 407 | break; // case CONTEXT_ROW_HEADER |
| 408 | default: |
| 409 | break; |
no test coverage detected