Changeset 884b461 in mainline


Ignore:
Timestamp:
2009-09-16T21:09:07Z (15 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
743e17b
Parents:
c29f20b
Message:

Optimize redraw upon character deletion.

File:
1 edited

Legend:

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

    rc29f20b r884b461  
    208208        case KC_ENTER:
    209209                insert_char('\n');
    210                 pane.rflags |= REDRAW_TEXT;
    211210                caret_update();
    212211                break;
     
    237236        case KC_BACKSPACE:
    238237                delete_char_before();
    239                 pane.rflags |= REDRAW_TEXT;
    240238                caret_update();
    241239                break;
    242240        case KC_DELETE:
    243241                delete_char_after();
    244                 pane.rflags |= REDRAW_TEXT;
    245242                caret_update();
    246243                break;
     
    248245                if (ev->c >= 32 || ev->c == '\t') {
    249246                        insert_char(ev->c);
    250                         pane.rflags |= REDRAW_ROW;
    251247                        caret_update();
    252248                }
     
    513509
    514510        (void) sheet_insert(&doc.sh, &pt, dir_before, cbuf);
     511
     512        pane.rflags |= REDRAW_ROW;
     513        if (c == '\n')
     514                pane.rflags |= REDRAW_TEXT;
    515515}
    516516
     
    528528
    529529        (void) sheet_delete(&doc.sh, &sp, &ep);
     530
     531        pane.rflags |= REDRAW_ROW;
     532        if (coord.column < 1)
     533                pane.rflags |= REDRAW_TEXT;
    530534}
    531535
     
    534538{
    535539        spt_t sp, ep;
    536         coord_t coord;
     540        coord_t sc, ec;
    537541
    538542        tag_get_pt(&pane.caret_pos, &sp);
    539         spt_get_coord(&sp, &coord);
    540 
    541         sheet_get_cell_pt(&doc.sh, &coord, dir_after, &ep);
     543        spt_get_coord(&sp, &sc);
     544
     545        sheet_get_cell_pt(&doc.sh, &sc, dir_after, &ep);
     546        spt_get_coord(&ep, &ec);
    542547
    543548        (void) sheet_delete(&doc.sh, &sp, &ep);
     549
     550        pane.rflags |= REDRAW_ROW;
     551        if (ec.row != sc.row)
     552                pane.rflags |= REDRAW_TEXT;
    544553}
    545554
Note: See TracChangeset for help on using the changeset viewer.