1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 01:48:00 +00:00
putty-source/unix
Simon Tatham 16d5bb7269 GTK: fix y computation in align_next_to.
The protocol selector widgets were misaligned in GTK as well as on
Windows, but for a completely different reason. (I guess both bugs
must have been introduced at the same time when I reworked the system
to tolerate more than two aligned widgets in commit b5ab90143a2df7f.)

To vertically align N widgets, you have to first figure out what range
of y-coordinates they jointly occupy, and then centre each one within
that range. We were trying to do both jobs in the same pass, which
meant trying to place the first widget before finding out where the
last one will be. To do this, we were separately computing the
y-range's start and width, the former by taking max of the
y-coordinates _seen so far_, and the latter by taking max of _all_ the
widgets' heights.

This has two problems. One is that if you later find out that the
y-coordinate of the top of the range needs to be lower than you'd
previously realised, it's too late to go back and reposition the
widgets you've already placed. But that's a theoretical issue that
would only come up with more complicated column layouts than we've
actually used. (And probably more complicated than would even be
_sensible_ to use.)

The other, more immediate, problem: the y-coordinates we were using
for already-placed widgets in the set were the ones _after_ we
adjusted each one for vertical centring. So if the first widget is
short and the second taller (say, heights 20 and 30 pixels), then the
first widget will be offset downwards by 5 pixels, but the second
widget will use that offset y-coordinate as the _top_ of the range to
fit itself into, and hence, will also be 5 pixels downward from where
it should have been.

I think only the second of those problems is immediately concerning,
but it's easier to fix both at once. I've removed the y-adjustment for
vertical centring from the main layout loop, and put it in a separate
pass run after the main layout finishes.
2022-09-06 11:39:01 +01:00
..
utils Implement AES-GCM using the @openssh.com protocol IDs. 2022-08-16 20:33:58 +01:00
agent-client.c Formatting: realign labels and case/default statements. 2022-08-03 20:48:46 +01:00
agent-socket.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
askpass.c Formatting: standardise on "func(\n", not "func\n(". 2022-08-03 20:48:46 +01:00
cliloop.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
CMakeLists.txt Reorganise the stubs collection. 2022-09-01 20:43:23 +01:00
columns.c GTK: fix y computation in align_next_to. 2022-09-06 11:39:01 +01:00
columns.h Improve the align_next_to mechanism. 2022-05-05 19:04:34 +01:00
config-gtk.c Replace integer context2 encoding in conf_editbox_handler. 2022-09-01 20:43:23 +01:00
config-unix.c Restructure dlgcontrol as a struct with an anon union. 2022-05-01 10:00:32 +01:00
console.c Centralise most details of host-key prompting. 2022-07-07 18:05:32 +01:00
dialog.c Formatting: standardise on "func(\n", not "func\n(". 2022-08-03 20:48:46 +01:00
fd-socket.c New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
gss.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
gtk-common.c Update source file names in comments and docs. 2022-01-22 15:51:31 +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 Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
local-proxy.c New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
main-gtk-application.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
main-gtk-simple.c Formatting: realign run-on parenthesised stuff. 2022-08-03 20:48:46 +01:00
network.c Formatting: realign labels and case/default statements. 2022-08-03 20:48:46 +01:00
no-gtk.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
noaskpass.c Better header comment for noaskpass.c. 2022-05-20 19:35:59 +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 Certificate-aware handling of key fingerprints. 2022-08-05 18:08:59 +01:00
peerinfo.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
platform.h New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
plink.c Formatting: normalise back to 4-space indentation. 2022-08-03 20:48:46 +01:00
printing.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00: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 Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
pterm.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pty.c Formatting: realign labels and case/default statements. 2022-08-03 20:48:46 +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 Update source file names in comments and docs. 2022-01-22 15:51:31 +00: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 Formatting: realign labels and case/default statements. 2022-08-03 20:48:46 +01:00
sftpserver.c Formatting: realign run-on parenthesised stuff. 2022-08-03 20:48:46 +01:00
sharing.c Pass an Interactor to new_connection(). 2021-10-30 18:19:56 +01:00
storage.c Formatting: realign labels and case/default statements. 2022-08-03 20:48:46 +01:00
unicode.c Remove uni_tbl from struct unicode_data. 2022-06-01 09:28:25 +01:00
unifont.c Formatting: standardise on "func(\n", not "func\n(". 2022-08-03 20:48:46 +01:00
unifont.h Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
uppity.c Formatting: miscellaneous. 2022-08-03 20:48:46 +01:00
uxsel.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
window.c Formatting: miscellaneous. 2022-08-03 20:48:46 +01:00
x11.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
x11misc.h Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00