pá 11. 2. 2022 v 1:35 odesílatel Thomas Dickey <
dickey@his.com> napsal:
On Thu, Feb 10, 2022 at 11:54:00AM +0100, Pavel Stehule wrote:
> Hi
>
> I found an interesting issue. When I resize the terminal, so some windows
> are partially out of screen, the window size is reduced. From this moment,
> the window lost original size, and the size of window is related to size of
> screen.
As I pointed out here:
https://lists.gnu.org/archive/html/bug-ncurses/2020-08/msg00011.html
windows don't extend outside the screen.
When ncurses is handling SIGWINCH, it shrinks windows to fit in the screen.
and this feature was probably the biggest issue when I worked on it. The user of pspg can resize the terminal at any moment. And after resizing I need to recheck all windows if they are the correct size. I understand, so the signal handler can shrink some windows, but what is strange, it can extend some windows too. Maybe the shrinking can be replaced by some flags that can be detected from applications like fully visible, partially visible, invisible. But the size of the window can be immutable.
Regards
Pavel
ok
Thank you for info
Regards
Pavel
>
> It can be easy demonstrated by example:
>
> #include <ncurses.h>
>
> int
> main()
> {
> int c;
> WINDOW *win;
>
> initscr();
>
> clear();
> noecho();
> cbreak();
> curs_set(0);
> keypad(stdscr, TRUE);
>
> win = newwin(20, 40, 15,15);
>
> timeout(250);
>
> while (c != 'q')
> {
> int lines, cols;
>
> clear();
>
> /* termina size */
> mvprintw(10, 10, "terminal: %d, %d", LINES, COLS);
> clrtoeol();
>
> /* stdscr size */
> getmaxyx(stdscr, lines, cols);
> mvprintw(11, 10, "stdscr: %d, %d", lines, cols);
> clrtoeol();
>
> /* win size */
> getmaxyx(win, lines, cols);
> mvprintw(12, 10, "win: %d, %d", lines, cols);
> clrtoeol();
>
> refresh();
>
> wclear(win);
> box(win, 0,0);
> wrefresh(win);
>
> c = getch();
> }
>
> endwin();
> }
>
> when running, try to reduce terminal size to 20 lines, 40 cols. After
> increasing terminal size, the size of window win is increased too.
>
> What is the reason for this behaviour?
>
> Regards
>
> Pavel Stehule
--
Thomas E. Dickey <dickey@invisible-island.net>
https://invisible-island.net
ftp://ftp.invisible-island.net