static void scroll_dn(View* view, unsigned csr, unsigned last) {
while (csr > last) {
/* delete the first row and shift the others */
- free(view->rows[0]);
- memmove(&view->rows[0], &view->rows[1], sizeof(Row*) * (view->nrows-1));
- view->rows[view->nrows-1] = calloc(1, sizeof(Row) + (view->ncols * sizeof(UGlyph)));
- view->rows[view->nrows-1]->off = (view->rows[view->nrows-2]->off + view->rows[view->nrows-2]->rlen);
- /* fill in row content */
- fill_row(view, view->nrows-1, view->rows[view->nrows-1]->off);
+ if (view->nrows > 1) {
+ free(view->rows[0]);
+ memmove(&view->rows[0], &view->rows[1], sizeof(Row*) * (view->nrows-1));
+ view->rows[view->nrows-1] = calloc(1, sizeof(Row) + (view->ncols * sizeof(UGlyph)));
+ view->rows[view->nrows-1]->off = (view->rows[view->nrows-2]->off + view->rows[view->nrows-2]->rlen);
+ /* fill in row content */
+ fill_row(view, view->nrows-1, view->rows[view->nrows-1]->off);
+ } else {
+ view->rows[0]->off += view->rows[0]->rlen;
+ fill_row(view, 0, view->rows[0]->off);
+ }
last = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen - 1;
}
}
void view_update(View* view, size_t* csrx, size_t* csry) {
size_t csr = view->selection.end;
/* scroll the view and reflow the screen lines */
+ sync_view(view, view->selection.end);
reflow(view);
/* find the cursor on the new screen */
for (size_t y = 0; y < view->nrows; y++) {
}
view->selection.beg = view->selection.end;
view->selection.col = buf_getcol(&(view->buffer), view->selection.end);
- //sync_view(view, view->selection.end);
+ sync_view(view, view->selection.end);
}
void view_delete(View* view) {
if (count == 1) {
view_setcursor(getview(id), row, col);
} else if (count == 2) {
+ puts("select");
//view_select(getview(id), row, col);
} else if (count == 3) {
+ puts("select bigword");
//view_selword(getview(id), row, col);
}
}
static void mouse_middle(enum RegionId id, size_t count, size_t row, size_t col) {
- //if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+ if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+ puts("cut");
// cut();
- //else
+ else
+ puts("exec");
// view_exec(getview(id), row, col);
}
static void mouse_right(enum RegionId id, size_t count, size_t row, size_t col) {
- //if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+ if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+ puts("paste");
// paste();
- //else
+ else
+ puts("find");
// view_find(getview(id), row, col);
}
view_resize(getview(TAGS), tagrows, Regions[TAGS].width / fwidth);
/* Place the edit region relative to status */
Regions[EDIT].y = 5 + Regions[TAGS].y + Regions[TAGS].height;
- Regions[EDIT].height = fheight * ((height - Regions[EDIT].y - 5) / 4);
+ Regions[EDIT].height = (height - Regions[EDIT].y - 5);
view_resize(getview(EDIT), Regions[EDIT].height / fheight, Regions[EDIT].width / fwidth);
}