Changeset c8444d8 in mainline
- Timestamp:
- 2012-08-16T09:06:58Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5882487, 69cf3a4
- Parents:
- b8b742e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/edit/edit.c
rb8b742e rc8444d8 429 429 } 430 430 431 static void key_handle_movement(unsigned int key, bool select) 431 /** Move caret while preserving or resetting selection. */ 432 static void caret_movement(int drow, int dcolumn, enum dir_spec align_dir, 433 bool select) 432 434 { 433 435 spt_t pt; … … 441 443 had_sel = !spt_equal(&caret_pt, &pt); 442 444 443 switch (key) { 444 case KC_LEFT: 445 caret_move(0, -1, dir_before); 446 break; 447 case KC_RIGHT: 448 caret_move(0, 0, dir_after); 449 break; 450 case KC_UP: 451 caret_move(-1, 0, dir_before); 452 break; 453 case KC_DOWN: 454 caret_move(+1, 0, dir_before); 455 break; 456 case KC_HOME: 457 caret_move(0, -ED_INFTY, dir_before); 458 break; 459 case KC_END: 460 caret_move(0, +ED_INFTY, dir_before); 461 break; 462 case KC_PAGE_UP: 463 caret_move(-pane.rows, 0, dir_before); 464 break; 465 case KC_PAGE_DOWN: 466 caret_move(+pane.rows, 0, dir_before); 467 break; 468 default: 469 break; 470 } 445 caret_move(drow, dcolumn, align_dir); 471 446 472 447 if (select == false) { … … 490 465 /* Redraw because text was unselected. */ 491 466 pane.rflags |= REDRAW_TEXT; 467 } 468 } 469 470 static void key_handle_movement(unsigned int key, bool select) 471 { 472 switch (key) { 473 case KC_LEFT: 474 caret_movement(0, -1, dir_before, select); 475 break; 476 case KC_RIGHT: 477 caret_movement(0, 0, dir_after, select); 478 break; 479 case KC_UP: 480 caret_movement(-1, 0, dir_before, select); 481 break; 482 case KC_DOWN: 483 caret_movement(+1, 0, dir_before, select); 484 break; 485 case KC_HOME: 486 caret_movement(0, -ED_INFTY, dir_before, select); 487 break; 488 case KC_END: 489 caret_movement(0, +ED_INFTY, dir_before, select); 490 break; 491 case KC_PAGE_UP: 492 caret_movement(-pane.rows, 0, dir_before, select); 493 break; 494 case KC_PAGE_DOWN: 495 caret_movement(+pane.rows, 0, dir_before, select); 496 break; 497 default: 498 break; 492 499 } 493 500 } … … 1090 1097 spt_t pt; 1091 1098 coord_t coord; 1092 int num_rows;1093 1099 1094 1100 tag_get_pt(&pane.caret_pos, &pt); 1095 1101 spt_get_coord(&pt, &coord); 1096 coord.row = row; 1097 coord.column = 1; 1098 1099 /* Clamp coordinates. */ 1100 if (coord.row < 1) coord.row = 1; 1101 sheet_get_num_rows(&doc.sh, &num_rows); 1102 if (coord.row > num_rows) coord.row = num_rows; 1103 1104 /* 1105 * Select the point before the character at the designated 1106 * coordinates. The character can be wider than one cell (e.g. tab). 1107 */ 1108 sheet_get_cell_pt(&doc.sh, &coord, dir_before, &pt); 1109 sheet_remove_tag(&doc.sh, &pane.caret_pos); 1110 sheet_place_tag(&doc.sh, &pt, &pane.caret_pos); 1111 1112 /* Set the new value for @c ideal_column. */ 1113 spt_get_coord(&pt, &coord); 1114 pane.ideal_column = coord.column; 1115 1116 caret_update(); 1102 1103 caret_movement(row - coord.row, 0, dir_before, false); 1117 1104 } 1118 1105
Note:
See TracChangeset
for help on using the changeset viewer.