Changeset 6037308 in mainline


Ignore:
Timestamp:
2013-04-12T20:45:31Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c80be58
Parents:
a2bdcf87
Message:

Mouse seeking in text editor.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/edit/edit.c

    ra2bdcf87 r6037308  
    119119static void cursor_setvis(bool visible);
    120120
     121static void key_handle_press(kbd_event_t *ev);
    121122static void key_handle_unmod(kbd_event_t const *ev);
    122123static void key_handle_ctrl(kbd_event_t const *ev);
     
    124125static void key_handle_shift_ctrl(kbd_event_t const *ev);
    125126static void key_handle_movement(unsigned int key, bool shift);
     127
     128static void pos_handle(pos_event_t *ev);
    126129
    127130static int file_save(char const *fname);
     
    183186{
    184187        cons_event_t ev;
    185         kbd_event_t *kev;
    186188        bool new_file;
    187189        int rc;
     
    249251                pane.rflags = 0;
    250252
    251                 if (ev.type == CEV_KEY && ev.ev.key.type == KEY_PRESS) {
    252                         kev = &ev.ev.key;
    253 
    254                         /* Handle key press. */
    255                         if (((kev->mods & KM_ALT) == 0) &&
    256                             ((kev->mods & KM_SHIFT) == 0) &&
    257                              (kev->mods & KM_CTRL) != 0) {
    258                                 key_handle_ctrl(kev);
    259                         } else if (((kev->mods & KM_ALT) == 0) &&
    260                             ((kev->mods & KM_CTRL) == 0) &&
    261                              (kev->mods & KM_SHIFT) != 0) {
    262                                 key_handle_shift(kev);
    263                         } else if (((kev->mods & KM_ALT) == 0) &&
    264                             ((kev->mods & KM_CTRL) != 0) &&
    265                              (kev->mods & KM_SHIFT) != 0) {
    266                                 key_handle_shift_ctrl(kev);
    267                         } else if ((kev->mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0) {
    268                                 key_handle_unmod(kev);
    269                         }
     253                switch (ev.type) {
     254                case CEV_KEY:
     255                        if (ev.ev.key.type == KEY_PRESS)
     256                                key_handle_press(&ev.ev.key);
     257                        break;
     258                case CEV_POS:
     259                        pos_handle(&ev.ev.pos);
     260                        break;
    270261                }
    271262
     
    289280
    290281        return 0;
     282}
     283
     284/* Handle key press. */
     285static void key_handle_press(kbd_event_t *ev)
     286{
     287        if (((ev->mods & KM_ALT) == 0) &&
     288            ((ev->mods & KM_SHIFT) == 0) &&
     289             (ev->mods & KM_CTRL) != 0) {
     290                key_handle_ctrl(ev);
     291        } else if (((ev->mods & KM_ALT) == 0) &&
     292            ((ev->mods & KM_CTRL) == 0) &&
     293             (ev->mods & KM_SHIFT) != 0) {
     294                key_handle_shift(ev);
     295        } else if (((ev->mods & KM_ALT) == 0) &&
     296            ((ev->mods & KM_CTRL) != 0) &&
     297             (ev->mods & KM_SHIFT) != 0) {
     298                key_handle_shift_ctrl(ev);
     299        } else if ((ev->mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0) {
     300                key_handle_unmod(ev);
     301        }
    291302}
    292303
     
    462473        default:
    463474                break;
     475        }
     476}
     477
     478static void pos_handle(pos_event_t *ev)
     479{
     480        coord_t bc;
     481        spt_t pt;
     482
     483        if (ev->type == POS_PRESS && ev->vpos < (unsigned)pane.rows) {
     484                bc.row = pane.sh_row + ev->vpos;
     485                bc.column = pane.sh_column + ev->hpos;
     486                sheet_get_cell_pt(doc.sh, &bc, dir_before, &pt);
     487
     488                caret_move(pt, false, true);
    464489        }
    465490}
Note: See TracChangeset for help on using the changeset viewer.