X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/form?a=blobdiff_plain;ds=sidebyside;f=windows.c;h=13dd161150df1b2988c9528b50876c768cf40302;hb=a2bafe4a71fbf31baa32b00581b2a744e96753af;hp=d3a895c4d0091f82932a80363418315bc5638897;hpb=de3f09afccf9f14f00785a164f2d21b8c4f12f74;p=plomrogue diff --git a/windows.c b/windows.c index d3a895c..13dd161 100644 --- a/windows.c +++ b/windows.c @@ -17,13 +17,6 @@ struct WinMeta init_win_meta (WINDOW * screen) { win_meta.active = 0; return win_meta; } -void scroll_pad (struct WinMeta * win_meta, char dir) { -// Scroll pad left or right (if possible). - if ('+' == dir && win_meta->pad_offset + win_meta->width < getmaxx(win_meta->pad) - 1) - win_meta->pad_offset++; - else if ('-' == dir && win_meta->pad_offset > 0) - win_meta->pad_offset--; } - struct Win init_window (struct WinMeta * win_meta, char * title, void * data, void * func) { // Create and populate Win struct with sane default values. struct Win win; @@ -185,7 +178,6 @@ void draw_windows (struct Win * win) { void draw_vertical_scroll_hint (struct WinMeta * win_meta, uint16_t x, uint32_t more_cols, char dir) { // Draw scroll hint line in win at col x of pad display, announce more_cols more columns in direction dir. uint16_t y, offset; - offset = 0; char phrase[] = "more columns"; char * scrolldesc = malloc((3 * sizeof(char)) + strlen(phrase) + 10); // 10 = max chars for uint32_t string sprintf(scrolldesc, " %d %s ", more_cols, phrase); @@ -222,7 +214,7 @@ void draw_all_windows (struct WinMeta * win_meta) { free(all_corners); uint16_t y; if (win_meta->pad_offset > 0) - draw_vertical_scroll_hint(win_meta, win_meta->pad_offset, win_meta->pad_offset + 1, '<'); + draw_vertical_scroll_hint(win_meta, win_meta->pad_offset, win_meta->pad_offset + 1, '<'); if (win_meta->pad_offset + win_meta->width < getmaxx(win_meta->pad) - 1) for (y = 0; y < win_meta->height; y++) draw_vertical_scroll_hint(win_meta, win_meta->pad_offset + win_meta->width - 1, @@ -288,3 +280,8 @@ void shift_active_window (struct WinMeta * win_meta, char dir) { append_window(win_meta, wins[i]); free(wins); win_meta->active = win_shift; } } + +void reset_pad_offset(struct WinMeta * win_meta, uint16_t new_offset) { +// Apply new_offset to windows pad, if it proves to be sane. + if (new_offset >= 0 && new_offset + win_meta->width < getmaxx(win_meta->pad)) + win_meta->pad_offset = new_offset; }