1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 01:02:24 +00:00
putty-source/unix
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
..
utils Break up gtkmisc.c. 2021-04-26 18:00:01 +01:00
agent-client.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
agent-socket.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
askpass.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
cliloop.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
CMakeLists.txt Fix pre-GTK3 build failures in puttyapp / ptermapp. 2021-12-18 11:43:57 +00:00
columns.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
columns.h Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
config-gtk.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
config-unix.c Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
console.c New Seat query, has_mixed_input_stream(). 2021-11-06 14:48:26 +00:00
dialog.c Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
fd-socket.c Convenience wrappers on plug_closing(). 2021-11-06 14:48:26 +00:00
gss.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
gtk-common.c Move STR() and CAT() into defs.h. 2021-11-26 17:46:06 +00:00
gtkcompat.h gtkcompat.h: fix GTK1 implementation of ref_sink. 2019-11-02 08:26:14 +00:00
gtkmisc.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
keygen-noise.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
local-proxy.c Support interactive password prompts in Telnet proxy. 2021-11-19 18:33:51 +00:00
main-gtk-application.c Fix pre-GTK3 build failures in puttyapp / ptermapp. 2021-12-18 11:43:57 +00:00
main-gtk-simple.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
network.c Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
no-gtk.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
noise.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
osxlaunch.c osxlaunch: stop setting DYLD_LIBRARY_PATH. 2017-12-20 10:04:02 +00:00
pageant.c Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
peerinfo.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
platform.h Convenience wrappers on plug_closing(). 2021-11-06 14:48:26 +00:00
plink.c Marshalling macros put_dataz and put_datalit. 2021-11-19 15:09:17 +00:00
printing.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
procnet.c Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
psocks.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
psusan.c Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
pterm-config-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
pterm-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
pterm.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
pterm.c Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
pterm.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pty.c Add memsets after allocation of all Backend implementors. 2021-10-30 17:28:28 +01:00
putty-config-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
putty-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
putty.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
putty.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
putty.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
serial.c Add memsets after allocation of all Backend implementors. 2021-10-30 17:28:28 +01:00
sftp.c Complete rework of terminal userpass input system. 2021-09-14 13:19:33 +01:00
sftpserver.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
sharing.c Pass an Interactor to new_connection(). 2021-10-30 18:19:56 +01:00
storage.c Marshalling macros put_dataz and put_datalit. 2021-11-19 15:09:17 +00:00
unicode.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
unifont.c Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
unifont.h Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
uppity.c Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
uxsel.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
window.c Try to ensure term_size() after win_resize_request(). 2021-12-19 10:54:59 +00:00
x11.c Unix platform_make_x11_server: fix sense of error check. 2021-09-10 10:38:30 +01:00
x11misc.h Basic support for running under GDK Wayland back end. 2018-05-09 09:21:27 +01:00