bug-ncurses
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: why terminal resize changes size of windows?


From: Pavel Stehule
Subject: Re: why terminal resize changes size of windows?
Date: Fri, 11 Feb 2022 03:55:04 +0100



pá 11. 2. 2022 v 3:34 odesílatel Pavel Stehule <pavel.stehule@gmail.com> napsal:


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.


Is it possible to disable this feature? Maybe in the future, by some setting? I am author or pspg https://github.com/okbob/pspg

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]