1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 01:02:24 +00:00
Go to file
Simon Tatham 19b12ee56c Try to ensure term_size() after win_resize_request().
When the terminal asks its TermWin for a resize, the resize operation
happens asynchronously (or can do), and sooner or later, the terminal
will see a term_size() telling it the resize has actually taken
effect.

If the resize _doesn't_ take effect for any reason - e.g. because the
window is maximised, or because the X11 window manager is a tiling one
which will refuse requests to change the window size anyway - then the
terminal never got any explicit notification of refusal to resize. Now
it should, in as many cases as I can arrange.

One obvious case of this is the early exit I recently added to
gtkwin_request_resize() when the window is known to be in a maximised
or tiled state preventing a resize: in that situation, when our own
code knows we're not even attempting the resize, we also queue a
toplevel callback to tell the terminal so.

The more interesting case is when the request is refused for a reason
GTK _didn't_ know in advance, e.g. because the user is running an X11
tiling window manager such as i3, which generally refuses windows'
resize requests. In X11, if a window manager refuses an attempt to
change the window's size via ConfigureWindow, ICCCM says it should
respond by sending a synthetic ConfigureNotify event restating the
same size. Such no-op configure events do reach the "configure_event"
handler in a GTK program, but they weren't previously getting as far
as term_size(), because the call to term_size() was triggered from the
GTK "size_allocate" event on the GtkDrawingArea inside the window (via
drawing_area_setup()), so GTK would detect that nothing had changed.

Now we queue a last-ditch toplevel callback which ensures that if the
configure event doesn't also cause a size_allocate and a call to
drawing_area_setup(), then we cause one of our own once the dust has
settled. And drawing_area_setup(), in turn, now unconditionally calls
term_size() even if the size is the same as it was last time, instead
of taking an early exit. (It still does take an early exit to avoid
unnecessary faffing with Cairo surfaces etc, but _after_ term_size()).

This won't be 100% reliable, because it's the window manager's
responsibility to send those synthetic ConfigureNotify events, and a
window manager is a fallible process which could get into a stuck
state. But it covers all the cases I know of that _can_ be sensibly
covered - so now, when terminal.c asks the front end to resize the
window, it ought to find out in a timely manner whether or not that
has happened, in _almost_ all cases.
2021-12-19 10:54:59 +00:00
charset Add missing dependencies on generated source files. 2021-04-18 17:01:50 +01:00
cmake Fix pre-GTK3 build failures in puttyapp / ptermapp. 2021-12-18 11:43:57 +00:00
contrib New script contrib/proveprime.py. 2021-06-12 13:50:51 +01:00
crypto Stop using short exponents for Diffie-Hellman. 2021-11-28 12:19:34 +00:00
doc Compatibility with older versions of cmake. 2021-10-29 18:08:18 +01:00
icons Make Windows versions of the pterm icons. 2021-05-08 17:33:25 +01:00
keygen Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
otherbackends Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
proxy Withdraw support for SHA-512-256 in HTTP Digest. 2021-11-27 11:41:00 +00:00
ssh Stop using short exponents for Diffie-Hellman. 2021-11-28 12:19:34 +00:00
stubs Move some more files into subdirectories. 2021-11-23 18:52:15 +00:00
terminal Stop using a local buffer in term_out. 2021-12-19 10:54:59 +00:00
test Stop using short exponents for Diffie-Hellman. 2021-11-28 12:19:34 +00:00
unix Try to ensure term_size() after win_resize_request(). 2021-12-19 10:54:59 +00:00
utils Remove a redundant file in utils. 2021-11-30 18:48:06 +00:00
windows Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
.gitignore Add .gitignore rules for in-tree builds. 2021-04-19 18:26:56 +01:00
aqsync.c Build outgoing SSH agent requests in a strbuf. 2018-05-25 14:36:16 +01:00
be_list.c Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
Buildscr Merge tag '0.76' into main 2021-07-17 11:49:44 +01:00
Buildscr.cv Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
callback.c Add lots of missing 'static' keywords. 2020-01-29 06:44:18 +00:00
cgtest.c cmdgen: support configurable key fingerprint type. 2021-03-13 11:01:35 +00:00
CHECKLST.txt Compatibility with older versions of cmake. 2021-10-29 18:08:18 +01:00
clicons.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
CMakeLists.txt Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
cmdgen.c cmdgen: add missing null pointer check in --dump mode. 2021-06-12 14:08:10 +01:00
cmdline.c Add -pwfile option, a more secure version of -pw. 2021-09-28 18:04:15 +01:00
config.c Lowercase version of BackendVtable's displayname. 2021-10-24 09:59:05 +01:00
console.c Mention the host name in host-key prompts. 2021-09-16 14:33:59 +01:00
console.h Mention the host name in host-key prompts. 2021-09-16 14:33:59 +01:00
defs.h Move STR() and CAT() into defs.h. 2021-11-26 17:46:06 +00:00
dialog.c dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
dialog.h dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
errsock.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
import.c Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
LATEST.VER Update version number for 0.76 release. 2021-07-10 10:39:20 +01:00
ldisc.c free_prompts: deal with a reference from an Ldisc. 2021-09-16 13:55:10 +01:00
LICENCE It's a new year. 2021-01-11 21:37:51 +00:00
licence.pl Separate the functions of licence.pl. 2021-04-17 13:52:27 +01:00
logging.c sshproxy: share the caller's LogPolicy. 2021-09-13 17:18:31 +01:00
marshal.h marshal.[ch]: remove redundant declaration. 2021-11-19 15:09:17 +00:00
misc.h Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
mksrcarc.sh Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
mkunxarc.sh Integrate the 'doc' subdir into the CMake system. 2021-05-03 17:01:55 +01:00
mpint.h Make mp_unsafe_mod_integer not be unsafe. 2021-08-27 17:43:40 +01:00
network.h Move some more files into subdirectories. 2021-11-23 18:52:15 +00:00
pageant.c New API for plug_closing() with a custom type enum. 2021-11-06 14:48:26 +00:00
pageant.h winpgnt: menu options to delete/reencrypt everything. 2021-04-04 10:02:24 +01:00
pinger.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pscp.c PSCP: fix filename in 'compound pathname' error. 2021-12-12 10:49:31 +00:00
psftp.c Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
psftp.h Remove FLAG_VERBOSE. 2020-01-30 06:40:21 +00:00
psftpcommon.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.c New API for plug_closing() with a custom type enum. 2021-11-06 14:48:26 +00:00
psocks.h Auxiliary application: 'psocks', a simple SOCKS server. 2020-02-23 16:36:27 +00:00
putty.h get_userpass_input: remove an obsolete FIXME. 2021-11-19 15:40:10 +00:00
puttymem.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
README Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
release.pl Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
settings.c Make BugDropStart default to FORCE_OFF, not AUTO. 2021-11-04 15:13:33 +00:00
sign.sh GPG key rollover. 2021-08-14 08:02:27 +01:00
ssh.h Stop using short exponents for Diffie-Hellman. 2021-11-28 12:19:34 +00:00
sshcr.h Assorted benign warning fixes. 2020-01-29 06:44:18 +00:00
sshkeygen.h Side-channel-safe rewrite of the Miller-Rabin test. 2021-08-27 18:04:49 +01:00
sshpubk.c Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
sshrand.c Remove dependency of sshrand.c on SHA-512. 2020-09-13 09:11:31 +01:00
storage.h Reorganise host key checking and confirmation. 2021-10-25 18:12:17 +01:00
timing.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
tree234.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
version.h Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
x11disp.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00

This is the README for PuTTY, a free Windows and Unix Telnet and SSH
client.

PuTTY is built using CMake <https://cmake.org/>. To compile in the
simplest way (on any of Linux, Windows or Mac), run these commands in
the source directory:

  cmake .
  cmake --build .

Documentation (in various formats including Windows Help and Unix
`man' pages) is built from the Halibut (`.but') files in the `doc'
subdirectory using `doc/Makefile'. If you aren't using one of our
source snapshots, you'll need to do this yourself. Halibut can be
found at <https://www.chiark.greenend.org.uk/~sgtatham/halibut/>.

The PuTTY home web site is

    https://www.chiark.greenend.org.uk/~sgtatham/putty/

If you want to send bug reports or feature requests, please read the
Feedback section of the web site before doing so. Sending one-line
reports saying `it doesn't work' will waste your time as much as
ours.

See the file LICENCE for the licence conditions.