- sbtop -= lines * (cols+1);
- if (sbtop < text)
- sbtop = text;
- scroll_size += scroll_top - sbtop;
- scroll_top = sbtop;
-
- update_sbar();
- }
- }
-
- if (scroll_size < 0) {
- size += scroll_size;
- scroll_size = 0;
- }
-
- if (lines > 0) {
- if (scroll_size)
- memmove (scroll_top, scroll_top + size, scroll_size*TSIZE);
- for (i = 0; i < size; i++)
- scroll_top[i+scroll_size] = erase_char;
- if (selstart > scroll_top &&
- selstart < scroll_top + size + scroll_size) {
- selstart -= size;
- if (selstart < scroll_top)
- selstart = scroll_top;
- }
- if (selend > scroll_top &&
- selend < scroll_top + size + scroll_size) {
- selend -= size;
- if (selend < scroll_top)
- selend = scroll_top;
- }
- if (scrtop_is_disptop)
- disptop = scrtop;
- else
- if (disptop > scroll_top &&
- disptop < scroll_top + size + scroll_size) {
- disptop -= size;
- if (disptop < scroll_top)
- disptop = scroll_top;
- }
- } else {
- if (scroll_size)
- memmove (scroll_top + size, scroll_top, scroll_size*TSIZE);
- for (i = 0; i < size; i++)
- scroll_top[i] = erase_char;
- if (selstart > scroll_top &&
- selstart < scroll_top + size + scroll_size) {
- selstart += size;
- if (selstart > scroll_top + size + scroll_size)
- selstart = scroll_top + size + scroll_size;
- }
- if (selend > scroll_top &&
- selend < scroll_top + size + scroll_size) {
- selend += size;
- if (selend > scroll_top + size + scroll_size)
- selend = scroll_top + size + scroll_size;
- }
- if (scrtop_is_disptop)
- disptop = scrtop;
- else if (disptop > scroll_top &&
- disptop < scroll_top + size + scroll_size) {
- disptop += size;
- if (disptop > scroll_top + size + scroll_size)
- disptop = scroll_top + size + scroll_size;