Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
History of file unix/pterm.c at check-in 3628bd7d8c721d3f
|
2014-02-16
| ||
| 10:40 | Enable xterm mouse reporting of wheel actions in GTK. I had somehow missed this completely out of the GTK mouse-button handling and never noticed until now! Of course, like any other mouse action, if you want it to be handled locally rather than passed through then you can hold down Shift. file: [29ab283124] check-in: [7b7fe7cab5] user: simon branch: trunk, size: 116862 | |
|
2013-11-30
| ||
| 12:04 | Make GTK idle and quit function setup idempotent. I found last week that when a local proxy process terminated unexpectedly, Unix PuTTY went into a tight loop calling quit functions, because if idle_toplevel_callback_func is called from inside a subsidiary gtk_main then it will schedule a quit function and _not_ disable itself, so that that quit function keeps being rescheduled on subsequent calls. To fix, I've tried to make the whole handling of idle and quit functions more sensibly robust: we keep our own boolean flag indicating whether each of our functions has already been scheduled with GTK, and if so, we don't schedule the same one again. Also, when idle_toplevel_callback_func schedules a quit function, it should unschedule itself since it's now done everything it can until a gtk_main instance quits. file: [434723f4ed] check-in: [f92a403fe9] user: simon branch: trunk, size: 116562 | |
|
2013-11-17
| ||
| 08:05 | Fix an assortment of dupprintf() format string bugs. I've enabled gcc's format-string checking on dupprintf, by declaring it in misc.h to have the appropriate GNU-specific attribute. This pointed out a selection of warnings, which I've fixed. file: [5bef20d96d] check-in: [44f33ce7e0] user: simon branch: trunk, size: 115447 | |
|
2013-09-15
| ||
| 09:05 | Only run one toplevel callback per event loop iteration. This change attempts to reinstate as a universal property something which was sporadically true of the ad-hockery that came before toplevel callbacks: that if there's a _very long_ queue of things to be done through the callback mechanism, the doing of them will be interleaved with re-checks of other event sources, which might (e.g.) cause a flag to be set which makes the next callback decide not to do anything after all. file: [696a5438d3] check-in: [36d3c24f08] user: simon branch: trunk, size: 115484 | |
|
2013-08-18
| ||
| 05:56 | Don't run toplevel callbacks in modal dialogs. Because some of them can call gtk_main_quit(), which completely confuses the dialog box system. file: [8dc8dfcf2e] check-in: [d89571a733] user: simon branch: trunk, size: 115442 | |
|
2013-08-17
| ||
| 11:06 | Revamp net_pending_errors using toplevel callbacks. Again, I've removed the special-purpose ad-hockery from the assorted front end message loops that dealt with deferred handling of socket errors, and instead uxnet.c and winnet.c arrange that for themselves by calling the new general top-level callback mechanism. file: [d1a724108f] check-in: [441fc5a4dd] user: simon branch: trunk, size: 114844 | |
| 11:06 | Revamp GTK's session close handling using toplevel callbacks. Instead of having a special GTK idle function for dealing with session closing, I now use the new top-level callback mechanism which is slightly simpler for calling a one-off function. Also in this commit, I've arranged for connection_fatal to queue a call to the same session close function after displaying the message box, with the effect that now all the same processing takes place no matter whether the session closes cleanly or uncleanly - e.g. the SSH specials submenu is cleaned out, as it should be. file: [d7c5b8148a] check-in: [030eccd1a1] user: simon branch: trunk, size: 115378 | |
| 11:06 | Revamp the terminal paste mechanism using toplevel callbacks. I've removed the ad-hoc front-end bodgery in the Windows and GTK ports to arrange for term_paste to be called at the right moments, and instead, terminal.c itself deals with knowing when to send the next chunk of pasted data using a combination of timers and the new top-level callback mechanism. As a happy side effect, it's now all in one place so I can actually understand what it's doing! It turns out that what all that confusing code was up to is: send a line of pasted data, and delay sending the next line until either a CR or LF is returned from the server (typically indicating that the pasted text has been received and echoed) or 450ms elapse, whichever comes first. file: [3b6cc51107] check-in: [e18f3877ae] user: simon branch: trunk, size: 115514 | |
| 11:06 | Add a general way to request an immediate top-level callback. This is a little like schedule_timer, in that the callback you provide will be run from the top-level message loop of whatever application you're in; but unlike the timer mechanism, it will happen _immediately_. The aim is to provide a general way to avoid re-entrance of code, in cases where just _doing_ the thing you want done is liable to trigger a confusing recursive call to the function in which you came to the decision to do it; instead, you just request a top-level callback at the message loop's earliest convenience, and do it then. file: [490f8f0bbc] check-in: [0345763d47] user: simon branch: trunk, size: 115882 | |
|
2013-07-20
| ||
| 08:15 | Redo a mis-fix of a memory leak in r9919: I added sfree(data) immediately after conf_deserialise in the Duplicate Session receiver, whereas I should have put it after the subsequent loop that extracts the pty argv if any. file: [b3120833d1] check-in: [3f9156f8b5] user: simon branch: trunk, size: 115355 | |
|
2013-07-19
| ||
| 13:10 | Centralise calls to fcntl into functions that carefully check the error returns. file: [7c1e85d085] check-in: [04c7a24906] user: simon branch: trunk, size: 115354 | |
| 12:44 | Add some missing calls to cleanup_exit. file: [62018d2c35] check-in: [8f4562c3b3] user: simon branch: trunk, size: 115361 | |
|
2013-07-14
| ||
| 05:46 | Fix another giant batch of resource leaks. (Mostly memory, but there's one missing fclose too.) file: [a16e577bf1] check-in: [17fb711a78] user: simon branch: trunk, size: 115353 | |
| 05:45 | Fix an always-false if statement which was causing the window border not to be redrawn when the user reconfigured the background colour. file: [a5023687b8] check-in: [93e0d8851c] user: simon branch: trunk, size: 115247 | |
|
2013-07-11
| ||
| 12:24 | Add some missing null checks for inst->ldisc, which were causing segfaults if a PuTTY or pterm did not close on exit and then you either typed something via input_method_commit_event or changed the line editing or echo settings. file: [c364659ec9] check-in: [4d69ee0b39] user: simon branch: trunk, size: 115243 | |
| 12:24 | Remove another pointless null check, this time of inst->back in the function which has just dereferenced it to get the exit code. file: [b674140d83] check-in: [dea3c6f18f] user: simon branch: trunk, size: 115195 | |
|
2013-07-01
| ||
| 12:56 | A collection of small bug fixes from Chris West, apparently spotted by Coverity: assorted language-use goofs like freeing the wrong thing or forgetting to initialise a string on all code paths. file: [9b51ddc4ed] check-in: [8962699297] user: simon branch: trunk, size: 115209 | |
|
2013-01-13
| ||
| 15:59 | Reorganise setup_fonts_ucs so that in case of error it does nothing and returns its error message as a string, instead of actually printing it on standard error and exiting. Now we can preserve the previous error behaviour when we get a nonexistent font name at startup time, but no longer rudely terminate in mid-session if the user configures a bogus font name in Change Settings. file: [d874b359ff] check-in: [6389889576] user: simon branch: trunk, size: 115208 | |
|
2012-09-19
| ||
| 12:08 | Make --help and --version work consistently across all tools. Well, at least across all command-line tools on both Windows and Unix, and the GTK apps on Unix too. The Windows GUI apps fundamentally can't write to standard output and it doesn't seem sensible to use message boxes for these purposes :-) file: [9b08da33e2] check-in: [75423b66a5] user: simon branch: trunk, size: 114343 | |
|
2012-09-18
| ||
| 16:42 | Two related changes to timing code: First, make absolute times unsigned. This means that it's safe to depend on their overflow behaviour (which is undefined for signed integers). This requires a little extra care in handling comparisons, but I think I've correctly adjusted them all. Second, functions registered with schedule_timer() are guaranteed to be called with precisely the time that was returned by schedule_timer(). Thus, it's only necessary to check these values for equality rather than doing risky range checks, so do that. The timing code still does lots that's undefined, unnecessary, or just wrong, but this is a good start. file: [c44e109a25] check-in: [a2d79b9e07] user: ben branch: trunk, size: 114096 | |
|
2012-07-22
| ||
| 14:51 | Introduce a new utility function smemclr(), which memsets things to zero but does it in such a way that over-clever compilers hopefully won't helpfully optimise the call away if you do it just before freeing something or letting it go out of scope. Use this for (hopefully) every memset whose job is to destroy sensitive data that might otherwise be left lying around in the process's memory. file: [89abcac8c7] check-in: [aee68b8d31] user: simon branch: trunk, size: 113997 | |
|
2012-07-05
| ||
| 18:45 | Turns out that the compose-keys fix in r9567 did in fact break one piece of keyboard handling: if Num Lock is on, numeric keypad keys are eaten by the IM, so we must avoid passing them to the IM in the first place if we're in any non-default numeric keypad mode (application or Nethack). This is a grubby way to do it, but the more obvious approach of just moving the Nethack and app-keypad if statements up to above the IM call doesn't work because those statements depend on the generic Alt-prefix handling that happens just _below_ the IM call. So instead I just repeat the list of keystrokes and modes in an if statement conditionalising the IM call. file: [54ed79dc90] check-in: [7c3afb2e69] user: simon branch: trunk, size: 113999 | |
|
2012-06-18
| ||
| 13:10 | Add the missing code to treat data coming from the input method as keypresses for purposes of hiding the mouse pointer and resetting the scrollback. file: [9aac64d4d9] check-in: [a0c27fcd97] user: simon branch: trunk, size: 111148 | |
|
2012-06-17
| ||
| 02:26 | Support for dead keys and compose sequences on Unix, by instantiating a GtkIMMulticontext and having that filter most keypresses. I think I've got this right so that it doesn't break any previous deliberate keyboard-handling behaviour that's now _after_ the 'if (filter keypress) return' statement. file: [7dcb9fbba3] check-in: [e02da4865e] user: simon branch: trunk, size: 111083 | |
|
2012-06-09
| ||
| 10:09 | Introduce a third setting for the 'bold as colour' mode, which lets you both brighten the colour _and_ bold the font at the same time. (Fixes 'bold-font-colour' and Debian #193352.) file: [dfdfd4bec8] check-in: [8394417bea] user: simon branch: trunk, size: 109693 | |
|
2012-04-22
| ||
| 09:22 | Bug fix from Robert de Bath: if the utf8_override setting is changed in mid-session, it affects translation and hence display, so it should be listed among the settings that require a redraw. file: [c6b4ce7ada] check-in: [15c9c5b0d3] user: simon branch: trunk, size: 109682 | |
|
2011-12-08
| ||
| 13:15 | Arrange to call net_pending_errors on Unix, which we've never actually remembered to do before! Also some related fixes, such as that after we do so we should immediately stop selecting on the socket in question. file: [df45a66d82] check-in: [49322399b9] user: simon branch: trunk, size: 109582 | |
|
2011-10-02
| ||
| 06:01 | Turn 'Filename' into a dynamically allocated type with no arbitrary length limit, just as I did to FontSpec yesterday. file: [75d5a0e48d] check-in: [7756dc109c] user: simon branch: trunk, size: 109048 | |
|
2011-10-01
| ||
| 13:00 | Fix copy-and-paste error in command-line font selection in r9314. file: [2fca222a7b] check-in: [2d4a59148d] user: jacob branch: trunk, size: 109074 | |
| 12:38 | Change the semantics of 'FontSpec' so that it's a dynamically allocated type. The main reason for this is to stop it from taking up a fixed large amount of space in every 'struct value' subunion in conf.c, although that makes little difference so far because Filename is still doing the same thing (and is therefore next on my list). However, the removal of its arbitrary length limit is not to be sneezed at. file: [fccdbdc1fd] check-in: [78529746fb] user: simon branch: trunk, size: 109058 | |
|
2011-09-16
| ||
| 14:18 | Support font fallback even when an X11 server-side font is selected, by introducing a wrapper around an individual unifont which falls back to Pango (which already has built-in fallback) in the case where the selected font doesn't support the glyph in question. The wrapper itself is a (vestigial) subclass of unifont, to minimise disturbance at the call sites. file: [70389bc90b] check-in: [91efaca9f4] user: simon branch: trunk, size: 109162 | |
| 14:18 | Change the unifont API so that text is passed right down to the individual font implementation as wchar_t, rather than having to be converted by the client into the appropriate MBCS/SBCS. This also means I can remove 'real_charset' from the public-facing contents of the unifont structure. file: [d7abd592ba] check-in: [a22d103f26] user: simon branch: trunk, size: 109013 | |
| 14:18 | Add some missing consts in character set handling. file: [b4a570a7f4] check-in: [d7363b4954] user: simon branch: trunk, size: 109312 | |
|
2011-09-13
| ||
| 06:44 | Revamp of EOF handling in all network connections, pipes and other data channels. Should comprehensively fix 'half-closed', in principle, though it's a big and complicated change and so there's a good chance I've made at least one mistake somewhere. All connections should now be rigorous about propagating end-of-file (or end-of-data-stream, or socket shutdown, or whatever) independently in both directions, except in frontends with no mechanism for sending explicit EOF (e.g. interactive terminal windows) or backends which are basically always used for interactive sessions so it's unlikely that an application would be depending on independent EOF (telnet, rlogin). EOF should now never accidentally be sent while there's still buffered data to go out before it. (May help fix 'portfwd-corrupt', and also I noticed recently that the ssh main session channel can accidentally have MSG_EOF sent before the output bufchain is clear, leading to embarrassment when it subsequently does send the output). file: [6f4a207fdf] check-in: [0831792ea4] user: simon branch: trunk, size: 109280 | |
|
2011-08-19
| ||
| 09:55 | Fix bug with setting window title on Unix that came in with r9214. file: [fe6faad9e2] check-in: [56f8573d8f] user: jacob branch: trunk, size: 109172 | |
|
2011-07-14
| ||
| 13:52 | Post-release destabilisation! Completely remove the struct type 'Config' in putty.h, which stores all PuTTY's settings and includes an arbitrary length limit on every single one of those settings which is stored in string form. In place of it is 'Conf', an opaque data type everywhere outside the new file conf.c, which stores a list of (key, value) pairs in which every key contains an integer identifying a configuration setting, and for some of those integers the key also contains extra parts (so that, for instance, CONF_environmt is a string-to-string mapping). Everywhere that a Config was previously used, a Conf is now; everywhere there was a Config structure copy, conf_copy() is called; every lookup, adjustment, load and save operation on a Config has been rewritten; and there's a mechanism for serialising a Conf into a binary blob and back for use with Duplicate Session. User-visible effects of this change _should_ be minimal, though I don't doubt I've introduced one or two bugs here and there which will eventually be found. The _intended_ visible effects of this change are that all arbitrary limits on configuration strings and lists (e.g. limit on number of port forwardings) should now disappear; that list boxes in the configuration will now be displayed in a sorted order rather than the arbitrary order in which they were added to the list (since the underlying data structure is now a sorted tree234 rather than an ad-hoc comma-separated string); and one more specific change, which is that local and dynamic port forwardings on the same port number are now mutually exclusive in the configuration (putting 'D' in the key rather than the value was a mistake in the first place). One other reorganisation as a result of this is that I've moved all the dialog.c standard handlers (dlg_stdeditbox_handler and friends) out into config.c, because I can't really justify calling them generic any more. When they took a pointer to an arbitrary structure type and the offset of a field within that structure, they were independent of whether that structure was a Config or something completely different, but now they really do expect to talk to a Conf, which can _only_ be used for PuTTY configuration, so I've renamed them all things like conf_editbox_handler and moved them out of the nominally independent dialog-box management module into the PuTTY-specific config.c. file: [d11a08f17b] check-in: [a2c0243430] user: simon branch: trunk, size: 109172 | |
|
2011-05-07
| ||
| 05:57 | Fixes (mostly from Colin Watson, a couple redone by me) to make Unix PuTTY compile cleanly under gcc 4.6.0 without triggering any of its new warnings. file: [0e62375e23] check-in: [af856539a4] user: simon branch: trunk, size: 106496 | |
|
2011-01-15
| ||
| 05:39 | Allow setting the WM_CLASS X window property as a configuration option in saved sessions, so that a programmable window manager can distinguish different PuTTYs/pterms on startup and assign them different window management properties. file: [c285a0a1e3] check-in: [b43117417a] user: simon branch: trunk, size: 105570 | |
|
2010-03-14
| ||
| 13:58 | r8854/5 broke compilation with Gtk 1.2. Grow a hack to cope. file: [052836caa9] check-in: [97d481dae0] user: jacob branch: trunk, size: 105410 | |
|
2010-03-06
| ||
| 09:50 | Centralise generation of the control sequences for arrow keys into a function in terminal.c, and replace the cloned-and-hacked handling code in all our front ends with calls to that. This was intended for code cleanliness, but a side effect is to make the GTK arrow-key handling support disabling of application cursor key mode in the Features panel. Previously that checkbox was accidentally ignored, and nobody seems to have noticed before! file: [bc1e1ce603] check-in: [35aecab820] user: simon branch: trunk, size: 105086 | |
|
2010-01-25
| ||
| 08:33 | ...and the rest of r8854. file: [a4a91e4328] check-in: [698420e57a] user: jacob branch: trunk, size: 105431 | |
|
2010-01-23
| ||
| 06:25 | Our handling of timers in Gtk was truncating times on 64-bit systems; one symptom was that the terminal window would not update until a focus-change event. Spotted and patched by Max Kellermann. file: [e3a9dbb3b3] check-in: [d38cce3d87] user: jacob branch: trunk, size: 105430 | |
|
2009-09-13
| ||
| 18:41 | In Unix PuTTY, grey out "Restart Session" when it doesn't apply (as the Windows version does), rather than hiding it completely. file: [98a0c53437] check-in: [239594768a] user: jacob branch: trunk, size: 105428 | |
| 18:37 | Add a couple of ellipses in Unix context menu (like r759 on Windows). file: [9a8f205715] check-in: [0a2d6244f2] user: jacob branch: trunk, size: 105381 | |
| 18:29 | If there are no saved sessions, put a grayed "(No sessions)" entry on the saved sessions submenu of the terminal window context menu (as Pageant does), rather than an empty menu (which often renders poorly). file: [eaabb790e0] check-in: [67bc4c7b05] user: jacob branch: trunk, size: 105375 | |
|
2009-08-21
| ||
| 18:25 | Remove outdated comment. file: [26180f20ef] check-in: [337a48e8d8] user: jacob branch: trunk, size: 105066 | |
|
2009-02-28
| ||
| 10:52 | Debian bug #517535: we were unconditionally interpreting the 'string' field in a GdkEventKey structure as ISO-8859-1, which was correct for GTK 1.2 but in 2.0 that field is encoded according to the current C library locale. Hence, we now process that field by converting it to UTF-8 via trips through both libc and libcharset, and then let lpage_send() convert from UTF-8 back to whatever it's supposed to actually go down the line in. file: [d683705790] check-in: [d5f3c90afa] user: simon branch: trunk, size: 105290 | |
|
2008-12-02
| ||
| 18:06 | gtk_selection_clear_targets() does not exist on GTK 1, so ifdef it. file: [d2e496d221] check-in: [1722b59c4b] user: simon branch: trunk, size: 104207 | |
|
2008-12-01
| ||
| 17:03 | Add missing call to gtk_selection_clear_targets(), without which the list of selection targets offered by GTK PuTTY/pterm grows an extra copy of each of the three supported text formats every time the user makes a selection! file: [be6cbd3edd] check-in: [d7ac9e085e] user: simon branch: trunk, size: 104171 | |
|
2008-11-17
| ||
| 12:36 | Avoid freeing the backend in notify_remote_exit(), since that's called from within a backend function which will expect its own backend pointer to still be valid on return. Instead, move all the real functionality of notify_remote_exit() out into a GTK idle function. file: [b2b43cee31] check-in: [d576de5599] user: simon branch: trunk, size: 104106 | |
|
2008-06-10
| ||
| 15:18 | Manfred Schwarb points out that scroll wheel support stopped working with the switch to GTK2. This turns out to be because, where GTK1 represented the scroll wheel as mouse buttons 4 and 5 and generated GdkEventButton when it was moved, GTK2 has moved wheel actions out into a new event type GdkEventScroll which we were not handling. Now we do, so scroll wheel support should be back in place. file: [a9e6aacad9] check-in: [e42aacd383] user: simon branch: trunk, size: 103846 | |
|
2008-06-04
| ||
| 18:05 | At last, merge the putty-gtk2 branch back into the trunk! file: [cbd87e5a6e] check-in: [8d6cccb962] user: simon branch: trunk, size: 102878 | |
|
2008-03-09
| ||
| 10:32 | Under OS X Leopard, we seem not to consistently get the Tab key translated for us. Be prepared to do it manually as a fallback. file: [1914843e21] check-in: [8b0a99a8f7] user: simon branch: trunk, size: 108015 | |
|
2007-03-19
| ||
| 07:05 | Fix a stupid one-character typo that was breaking 256-colour support on GTK. file: [7451d40d2a] check-in: [ee598e12ce] user: ben branch: trunk, size: 107764 | |
|
2007-02-24
| ||
| 18:50 | Since r7265, a user could not launch a PuTTY session to a specific host by simply specifying a hostname on the command line -- this would bring up the config dialog. Use a slightly more sophisticated notion of whether the user meant to launch a session. file: [e2b3ca8a90] check-in: [3be54b7561] user: jacob branch: trunk, size: 107764 | |
| 07:36 | Gareth pointed out yesterday that the Unix terminal front end treats BELL_DISABLED as BELL_DEFAULT. How embarrassing. file: [01d873383c] check-in: [3e3c1216c5] user: simon branch: trunk, size: 107419 | |
|
2007-02-18
| ||
| 08:02 | Ctrl-Break now sends a Break signal (previously it was equivalent to Ctrl-C). file: [bc83e7b798] check-in: [65285954f0] user: jacob branch: trunk, size: 107418 | |
|
2007-02-10
| ||
| 11:02 | Avoid launching a session from the Default Settings, even if they do represent a launchable session, unless the user can be construed to have really meant it. This means: - starting up PuTTY when the Default Settings are launchable still brings up the config box, and you have to hit Open to actually launch that session - double-clicking on Default Settings from the config box will load them but not launch them. On the other hand: - explicitly loading the Default Settings on the command line using `-load' _does_ still launch them. file: [2867e38790] check-in: [e32793db99] user: simon branch: trunk, size: 107406 | |
|
2007-01-31
| ||
| 06:30 | Colin Watson has fixed the disgusting icons on GTK1. His patch appears to merely fix the background colour (arranging for it to have transparency rather than being on some kind of default grey background), but it turns out to also fix the strange blurry behaviour I see in the GNOME Taskbar, for no very obvious reason. file: [03e1f413a5] check-in: [11d422587d] user: simon branch: trunk, size: 107380 | |
|
2007-01-24
| ||
| 07:53 | The direct link between the terminal and the back end via term_provide_resize_fn() was not being broken when the back end was destroyed on session termination, causing resizing an inactive PuTTY to be a segfault hazard. file: [7b1d9ec29a] check-in: [f75921a917] user: simon branch: trunk, size: 107346 | |
|
2007-01-06
| ||
| 12:27 | No, I tell a lie: GTK 1 _does_ support icons, at least partially. Ooh. file: [e34cc36277] check-in: [c1ecd0cf4d] user: simon branch: trunk, size: 107286 | |
|
2006-12-30
| ||
| 17:00 | Patch from Colin Watson intended to give a clean Unix compile with GCC 4. (Since we choose to compile with -Werror, this is particularly important.) I haven't yet checked that the resulting source actually compiles cleanly with GCC 4, hence not marking `gcc4-warnings' as fixed just yet. file: [168207b520] check-in: [ef14243dce] user: jacob branch: trunk, size: 106464 | |
|
2006-09-03
| ||
| 09:31 | Support for an alternative mechanism for displaying wide characters under X: instead of having two separate fixed-width fonts one of which is twice the width of the other, you can instead have a single font in which some characters are twice as wide as others. This is implemented very simply: if you specify a wide font, it will be used for wide characters, and if you don't then the normal font will be used for wide characters (so they'd better _be_ wide in that font, or there'll be trouble). I got this idea from Jed, whose latest version supports UTF-8 and requires a font of this type. If there are going to be X fonts like that kicking around, there will doubtless be people who want to use them. file: [26eb9a7d78] check-in: [8007266fdc] user: simon branch: trunk, size: 106319 | |
|
2006-08-28
| ||
| 09:29 | Serial back end for Unix. Due to hardware limitations (no Linux box I own has both an X display and a working serial port) I have been unable to give this the full testing it deserves; I've managed to demonstrate the basic functionality of Unix Plink talking to a serial port, but I haven't been able to test the GTK front end. I have no reason to think it will fail, but I'll be more comfortable once somebody has actually tested it. file: [9a9b1c960a] check-in: [d6cb32325e] user: simon branch: trunk, size: 106225 | |
|
2006-03-14
| ||
| 16:01 | Fix minor memory leak. file: [d1ad821558] check-in: [c92727f499] user: jacob branch: trunk, size: 106147 | |
|
2006-03-12
| ||
| 16:17 | Equivalent of r6583 window-border palette-change fix for Gtk. file: [09654be71d] check-in: [06ec31208c] user: jacob branch: trunk, size: 106125 | |
|
2006-03-08
| ||
| 12:10 | David Damerell tells me I should be using Ctrl-hjklyubn rather than Shift-hjklyubn for batch movement in NetHack, because they have subtly different behaviour within the game and the Ctrl-moves are more useful. Unfortunately, PuTTY's NetHack keypad mode doesn't support Ctrl-moves. Therefore, it does now :-) file: [8494a5ff99] check-in: [396c775fc5] user: simon branch: trunk, size: 105738 | |
|
2006-02-19
| ||
| 08:59 | Fix `restart-reset-terminal': terminal now restored to a sensible state when reusing a window to restart a session. file: [2c29d39f8a] check-in: [a9fe99c1ad] user: jacob branch: trunk, size: 105634 | |
|
2006-02-13
| ||
| 16:18 | Preserve more attributes of text copied as RTF. Thanks to Stephen Balousek. file: [9e39d01f8f] check-in: [e24538d25e] user: owen branch: trunk, size: 105596 | |
|
2005-12-09
| ||
| 14:04 | A few small changes to make the PuTTY source base more usable as a basis for other terminal-involving applications: a stub implementation of the printing interface, an additional function in notiming.c, and also I've renamed the front-end function beep() to do_beep() so as not to clash with beep() in lib[n]curses. file: [04e7ef669c] check-in: [bc74216dab] user: simon branch: trunk, size: 105585 | |
|
2005-10-30
| ||
| 14:24 | Revamp SSH authentication code so that user interaction is more abstracted out; replace loops structured around a single interaction per loop with less tortuous code (fixes: `ki-multiprompt-crash', `ssh1-bad-passphrase-crash'; makes `ssh2-password-expiry' and `proxy-password-prompt' easier). The new interaction abstraction has a lot of fields that are unused in the current code (things like window captions); this is groundwork for `gui-auth'. However, ssh.c still writes directly to stderr; that may want to be fixed. In the GUI apps, user interaction is moved to terminal.c. This should make it easier to fix things like UTF-8 username entry, although I haven't attempted to do so. Also, control character filtering can be tailored to be appropriate for individual front-ends; so far I don't promise anything other than not having made it any worse. I've tried to test this fairly exhaustively (although Mac stuff is untested, as usual). It all seems to basically work, but I bet there are new bugs. (One I know about is that you can no longer make the PuTTY window go away with a ^D at the password prompt; this should be fixed.) file: [a59c3a005a] check-in: [fa1347493a] user: jacob branch: trunk, size: 105582 | |
|
2005-10-13
| ||
| 16:56 | Fix 256-colours-match-xterm, based on 256colres.pl from xterm-205. Largely untested -- may not even compile on Windows. file: [23d84b03b3] check-in: [a232015fce] user: ben branch: trunk, size: 105107 | |
|
2005-04-27
| ||
| 16:42 | On monochrome displays, display the cursor in reverse video so that it's visible on reversed out text. This only applies to active block cursors for now. file: [9db3add715] check-in: [58f5d476a6] user: ben branch: trunk, size: 105079 | |
| 16:22 | Tiny manual CSE of previous commit. file: [87ae974812] check-in: [aa5d4730d1] user: ben branch: trunk, size: 105017 | |
| 16:09 | On 1bpp displays, ignore colour attributes. This makes pterm minimally useful there, though (e.g.) switching to using reverse video for the cursor would probably also help. Displays with other silly depths (e.g. 2bpp) aren't catered for, but I suspect they're rare in the X world. file: [2b72972d3f] check-in: [cda1056254] user: ben branch: trunk, size: 105023 | |
| 15:30 | Make palette changes use "best match" colours too. file: [187fdf980f] check-in: [462bcba811] user: ben branch: trunk, size: 104893 | |
|
2005-04-25
| ||
| 17:46 | Ask GDK to give us reasonable approximations if it can't get precisely the colours we asked it for. This means that I can run pterm on an 8-bit PseudoColor display even if I have another program running. file: [5f232610c8] check-in: [dfe65fbf2d] user: ben branch: trunk, size: 104894 | |
|
2005-04-21
| ||
| 08:57 | First crack at `terminal-modes' in SSH. PuTTY now sends ERASE by default, Unix Plink sends everything sensible it can find, and it's fully configurable from the GUI. I'm not entirely sure about the precise set of modes that Unix Plink should look at; informed tweaks are welcome. Also the Mac bits are guesses (but trivial). file: [7072a5196f] check-in: [533d29650c] user: jacob branch: trunk, size: 104895 | |
|
2005-04-06
| ||
| 20:36 | If a new session was saved from Change Settings, a side-effect on Windows was that the global `sesslist' got out of sync with the saved-sessions submenu, causing the latter to launch the wrong sessions. Also, Change Settings wasn't getting a fresh session list, so if the set of sessions had changed since session startup it wouldn't reflect that (at least until a session was saved). Fixed (on all platforms). Therefore, since the global sesslist didn't seem to be useful, I've got rid of it; config.c creates one as needed, as do the frontends. (Not tried compiling Mac changes.) Also, we now build the saved-sessions submenu on demand on Windows and Unix. (This should probably also be done on the Mac.) file: [c73eb446d9] check-in: [11a4164f51] user: jacob branch: trunk, size: 104734 | |
|
2005-03-18
| ||
| 20:26 | Try to make our PGP signing more useful: * All the PuTTY tools for Windows and Unix now contain the fingerprints of the Master Keys. The method for accessing them is crude but universal: a new "-pgpfp" command-line option. (Except Unix PuTTYgen, which takes "--pgpfp" just to be awkward.) * Move the key policy discussion from putty-website/keys.html to putty/doc/pgpkeys.but, and autogenerate the former from the latter. Also tweak the text somewhat and include the fingerprints of the Master Keys themselves. (I've merged the existing autogeneration scripts into a single new one; I've left the old scripts and keys.html around until such time as the webmonster reviews the changes and plumbs in the new script; he should remove the old files then.) file: [b3b84314bc] check-in: [d2a830c19a] user: jacob branch: trunk, size: 104346 | |
|
2005-03-10
| ||
| 04:07 | Protect against multiple Change Settings dialogues. We should probably also arrange to switch to an existing Change Settings if the user selects the menu item and we already have a Change Settings. file: [f24e691919] check-in: [79b9658c13] user: owen branch: trunk, size: 104254 | |
|
2005-03-05
| ||
| 11:56 | Make sure we do notify_remote_exit(ssh->frontend) _before_ connection_fatal(), since the latter is entitled to destroy the backend so `ssh' may no longer be valid once it returns. For the Unix port, switch exit(0) to gtk_main_quit() in notify_remote_exit(), so that we don't exit before the subsequent connection_fatal()! file: [e4305963b1] check-in: [695d639fd8] user: simon branch: trunk, size: 104111 | |
|
2005-02-15
| ||
| 11:05 | The terminal window can now indicate that PuTTY is busy in various ways, by changing its mouse pointer. Currently this is only used in the (slightly- arbitrarily-defined) "heavy" bits of SSH-2 key exchange. We override pointer hiding while PuTTY is busy, but preserve pointer-hiding state. Not yet implemented on the Mac. Also switch to frobbing window-class cursor in Windows rather than relying on SetCursor(). file: [b057fdb5b6] check-in: [14b560857a] user: jacob branch: trunk, size: 104105 | |
|
2004-12-31
| ||
| 07:02 | Renamed and modified unix/pterm.c → unix/gtkwin.c. Rename some of the more stupidly named files in the Unix back end. Notably pterm.c, which was a sensible name right at the start but became a misnomer as soon as I created Unix PuTTY. file: [90acae5250] check-in: [afc775a19a] user: simon branch: trunk, size: 103451 | |
|
2004-12-29
| ||
| 06:32 | Loose end from r5031: the Kex panel should only be displayed in mid-session if we are not using SSHv1. I've done this by introducing a generic `cfg_info' function which every back end can use to communicate an int's worth of data to setup_config_box; in SSH that's the protocol version in use, and in everything else it's currently zero. file: [01a0f97d3d] check-in: [8cec6d493a] user: simon branch: trunk, size: 103484 | |
|
2004-12-19
| ||
| 16:37 | Fix line cursor colours (fallout from `256-colours'), on both Windows and Unix. file: [2b4582de44] check-in: [fc8fba4a2e] user: jacob branch: trunk, size: 103423 | |
|
2004-12-17
| ||
| 08:25 | Jacob has pointed out why SIGCHLD was blocked, so I've updated the comment when I unblock it in pty.c to reflect reality. Also I've moved block_signal() out of pterm.c into signal.c, so I can conveniently use it for unblocking SIGCHLD rather than having to reinvent it in pty.c. file: [3e0d9ae0f2] check-in: [e6e6127715] user: simon branch: trunk, size: 103433 | |
|
2004-11-29
| ||
| 19:07 | Another default-background fix for 256-colour mode file: [cc754b8c17] check-in: [da93f608bb] user: jacob branch: trunk, size: 103657 | |
|
2004-11-28
| ||
| 09:18 | Bah, there's always one thing I miss. Correct the background-colour handling in Unix PuTTY. file: [15cfcbcbca] check-in: [b306166356] user: simon branch: trunk, size: 103655 | |
| 09:13 | Implement xterm 256-colour mode. file: [4b27432527] check-in: [1d10fbc8cf] user: simon branch: trunk, size: 103653 | |
|
2004-11-27
| ||
| 13:34 | Slight improvement to cursor blink timing: since the cursor doesn't blink when the window doesn't have focus, we don't schedule blink timers at that point either. Infrastructure change: term->has_focus should now not be written directly from outside terminal.c. Instead, use the function term_set_focus, which will sort out the blink timers as well. file: [dedf27cb61] check-in: [7a1f0222f8] user: simon branch: trunk, size: 103172 | |
| 07:20 | New timing infrastructure. There's a new function schedule_timer() which pretty much any module can call to request a call-back in the future. So terminal.c can do its own handling of blinking, visual bells and deferred screen updates, without having to rely on term_update() being called 50 times a second (fixes: pterm-timer); and ssh.c and telnet.c both invoke a new module pinger.c which takes care of sending keepalives, so they get sent uniformly in all front ends (fixes: plink-keepalives, unix-keepalives). file: [fe2424c5cf] check-in: [683ee6bed3] user: simon branch: trunk, size: 103168 | |
|
2004-10-17
| ||
| 16:22 | Support the SSH-2 mechanism for sending signals to a running session. Neither of the SSH servers I conveniently have access to (Debian stable OpenSSH -- 3.4p1 -- and lshd) seem to take a blind bit of notice, but the channel requests look fine to me in the packet log. I've included all the signals explicitly defined by draft-ietf-secsh-connect-19, but I've put the more obscure ones in a submenu of the specials menu; there's therefore been some minor upheaval to support such submenus. file: [f0dd399441] check-in: [e613d9b7a0] user: jacob branch: trunk, size: 102424 | |
| 09:44 | Telnet specials menu was not being reinstated after a session was restarted in the same window (Windows version only). Policy change: it's now the backend's responsibility to call update_specials_menu() at the start of a session (or whenever it feels ready), if it has any special commands. Otherwise the menu won't be displayed. file: [2283848e13] check-in: [df3849f621] user: jacob branch: trunk, size: 101653 | |
|
2004-10-16
| ||
| 09:17 | Markus Kuhn's UTF-8 page http://www.cl.cam.ac.uk/~mgk25/unicode.html#activate feels strongly that it should be easy to make _all_ your applications work in UTF-8 mode, without having to remember a switch for each one. Every application should simply note a UTF-8 locale setting and switch into UTF-8 mode automatically. Therefore, for the Unix port only, there's now a checkbox, enabled by default, which causes the drop-down Translation box to be overridden if the locale indicates UTF-8. Anyone who doesn't like this, or doesn't like MGK, is welcome to turn it straight back off. I'm not _completely_ convinced by MGK's argument myself; for xterm/pterm to do _useful_ UTF-8 you also need to specify a decently Unicode-capable font, and there's no way _that_ can be automagically done on noticing a locale setting. But it's a de facto standard (i.e. xterm does it :-) so I might as well at least be _able_ to support it. file: [f4ecd83732] check-in: [c05196ad7c] user: simon branch: trunk, size: 101607 | |
|
2004-10-15
| ||
| 07:25 | And fix _cursor_ display on double-width double-width characters (as it were). file: [08650857b8] check-in: [e281797263] user: simon branch: trunk, size: 101582 | |
| 07:17 | Double-height and double-width line attributes (ESC#3, ESC#4, ESC#6) were not working correctly with double-width Unicode characters (CJK). file: [332bbd21f8] check-in: [ea8e22ac07] user: simon branch: trunk, size: 101558 | |
| 03:51 | Fix cursor display on a combined character cell. file: [68a8899012] check-in: [5b0b76fdd5] user: simon branch: trunk, size: 101543 | |
|
2004-10-14
| ||
| 11:42 | First-stage support for Unicode combining characters. The `chars' array of each `termline' structure now contains optional additional entries after the normal number of columns, which are used to chain a linked list of combining characters off any primary termchar that needs it. This means we support arbitrarily many combining characters per cell (unlike xterm's hard limit of 2). Cut and paste works correctly (selecting a character cell containing multiple code points causes all those code points to be cut and pasted). Display works by simply overlaying all the relevant characters on top of one another; this is good enough for Unix (xterm does the same thing), and mostly seems OK for Windows except that the Windows Unicode fonts have a nasty habit of not containing most of the combining characters and thus overlaying an unknown-code-point box on your perfectly good base glyph. I had no idea how to add support in the Mac do_text(), so I've simply stuck in an assertion that will trigger the first time a combining character is displayed, and hopefully this will bite someone with the clue to fix it. file: [9a8959c24a] check-in: [873b9560c1] user: simon branch: trunk, size: 101500 | |
|
2004-10-13
| ||
| 06:50 | Re-engineering of terminal emulator, phase 1. The active terminal screen is no longer an array of `unsigned long' encoding 16-bit Unicode plus 16 attribute bits. Now it's an array of `termchar' structures, which currently have 32-bit Unicode and 32 attribute bits but which will probably expand further in future. To prevent bloat of the memory footprint, I've introduced a mostly RLE-like compression scheme for storing scrollback: each line is compressed into a compact (but hard to modify) form when it moves into the term->scrollback tree, and is temporarily decompressed when the user wants to scroll back over it. My initial tests suggest that this compression averages about 1/4 of the previous (32 bits per character cell) data size in typical output, which means this is an improvement even without counting the new ability to extend the information stored in each character cell. Another beneficial side effect is that the insane format in which Unicode was passed to front ends through do_text() has now been rendered sane. Testing is incomplete; this _may_ still have instabilities. Windows and Unix front ends both seem to work as far as I've looked, but I haven't yet looked very hard. The Mac front end I've edited (it seemed obvious how to change it) but I can't compile or test it. As an immediate functional effect, the terminal emulator now supports full 32-bit Unicode to whatever extent the host platform allows it to. For example, if you output a 4-or-more-byte UTF-8 character in Unix pterm, it will not display it properly, but it will correctly paste it back out in a UTF8_STRING selection. Windows is more restricted, sadly. file: [81bc9c8cc1] check-in: [fd15c23f41] user: simon branch: trunk, size: 101193 | |
|
2004-09-28
| ||
| 15:42 | Line (as opposed to block) cursors were being displayed when they shouldn't have been, including when they were blinked off. Fixes Debian bug #272877. file: [b223765324] check-in: [f3871b7c8f] user: jacob branch: trunk, size: 100890 | |
|
2004-08-20
| ||
| 09:04 | Patch to use enum constants for cfg.funky_type instead of numeric literals, from "Anthony" <410C2A86.2010003@mail2004.ajrh.net>. file: [312ef198af] check-in: [c811f4d966] user: jacob branch: trunk, size: 100784 | |
|
2004-08-14
| ||
| 08:04 | Implement `Restart Session', in both Unix and Windows PuTTY. Largely because Owen questioned whether it was really easy enough to be labelled `fun' in the bug database :-) file: [cad0cb698f] check-in: [3ba6f1b539] user: simon branch: trunk, size: 100717 | |
|
2004-07-27
| ||
| 10:20 | Fix double-free in X selection code. file: [cbc2ff850a] check-in: [cd12e8a582] user: simon branch: trunk, size: 99841 | |
|
2004-06-20
| ||
| 12:07 | Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off. No very good reason, but I've occasionally wanted to frob it to see if it makes any difference to problems I'm having, and it was easy. Tested that it does actually cause keepalives on Windows (with tcpdump); should also work on Unix. Not implemented on Mac (does nothing), but then neither is TCP_NODELAY. Quite a big checkin, much of which is adding `keepalive' alongside `nodelay' in network function calls. file: [46b6411e90] check-in: [d6cbea6730] user: jacob branch: trunk, size: 99731 | |
|
2004-05-24
| ||
| 06:30 | Arnaud Desitter points out a silly mistake in retrieve_cutbuffer() (don't test for `int *nbytes' being <= 0, test for the integer it points to being <= 0!). file: [b6d982c49b] check-in: [fdd818ac08] user: simon branch: trunk, size: 99700 | |
|
2004-05-22
| ||
| 09:21 | Fix indentation after Richard B's patch in rev 1.137 [r3409]. file: [6c7ec313fd] check-in: [bc17c95964] user: simon branch: trunk, size: 99699 | |
|
2003-08-21
| ||
| 13:39 | Richard B's patch to enable users to explicitly request shadow bold by disabling bold-font-name guessing (if their bold fonts are ugly). I've turned the UI inside out, but the meat is pretty much the same. file: [75e52b54b5] check-in: [ff01a069c4] user: simon branch: trunk, size: 99653 | |
| 13:07 | Richard B's patch to support X cut buffers as well as ordinary selections, meaning that (a) a pterm can leave copied text in the cut buffer after it terminates so that applications can pick it up even though it isn't still around to deliver the selection in person, and (b) pterm can pick up things left in this way by other apps. Downside is that all of this only happens in ISO8859-1, because X is weird like that. file: [c011784a96] check-in: [620a90455a] user: simon branch: trunk, size: 99415 | |
| 13:03 | Richard Boulton's patch for improved correctness in selection handling (generally, selection request timestamps should be set to the timestamp on the event that caused them). file: [3ac07673b0] check-in: [ca4726e5f8] user: simon branch: trunk, size: 97284 | |
|
2003-05-13
| ||
| 14:57 | Real COMPOUND_TEXT support! I was expecting to have to read the spec and implement the required subset of ISO-2022 in libcharset, but it turns out that Xlib provides conversion functions between UTF-8 and compound text, which are just about ideal for us. So now we can paste multilingual stuff both to and from emacs21. Rock on. file: [58d0bd8c65] check-in: [f09b9e07b0] user: simon branch: trunk, size: 96896 | |
| 13:43 | Allow pterm to receive selections in compound text format. Doesn't actually _understand_ compound text yet - anything with non-ASCII-or-8859-1 characters will fail miserably - but it will at least successfully receive plain text if the pasting application doesn't see fit to give it out in any other format. file: [598b1ead89] check-in: [968a183c28] user: simon branch: trunk, size: 94955 | |
| 13:14 | Debian bug #193013 points out that the (default-)one-pixel border is not redrawn when the window background colour is reconfigured mid- session. In addition, the Official Window Background is not reset, meaning that opaque resizes etc will flicker in the old background colour. This checkin should fix both. file: [5ab9a92681] check-in: [58b0de2d23] user: simon branch: trunk, size: 94640 | |
|
2003-05-10
| ||
| 05:15 | pterm will now attempt to guess suitable names for any missing fonts from the ones given; so it'll ask for a font twice as wide as your base one if you don't specify a wide font, it'll ask for a bolded version of your base font if you don't specify a bold font, and similarly for a wide/bold font. Should solve Debian bug #187389; at least it works for me. file: [b2875663c8] check-in: [d3acdabf8d] user: simon branch: trunk, size: 94172 | |
| 04:05 | Stupid braino in get_window_title (thanks Colin): window and icon titles were being reported the wrong way round. Should fix half of Debian bug #191751. file: [61d1beb430] check-in: [d622d5a81e] user: simon branch: trunk, size: 91885 | |
| 03:35 | Fixes for Debian bug #192701 (64-bit gccs warn about casts between ptrs and ints of different size and -Werror makes this serious). The GTK bits are done by Colin's patch to use GINT_TO_POINTER (thanks); the uxnet bits are done by cleaning up the rest of the code. In particular, network.h now typedefs `OSSocket' to be a type capable of holding whatever the OS's socket data type is that underlies our socket abstraction. Individual platforms can make this typedef themselves if they define OSSOCKET_DEFINED to prevent network.h redoing it; so the Unix OSSocket is now int. Default is still void *, so other platforms should be unaffected. file: [d019c2f5a8] check-in: [e1f861acb0] user: simon branch: trunk, size: 91885 | |
|
2003-05-06
| ||
| 14:55 | Reinstate `-T title', in pterm only. file: [ae6b54e7f2] check-in: [0fed8bc460] user: simon branch: trunk, size: 91857 | |
|
2003-05-04
| ||
| 09:18 | Colin's const-fixing Patch Of Death. Seems to build fine on Windows as well as Unix, so it can go in. file: [905b14e623] check-in: [c9f1945192] user: simon branch: trunk, size: 91506 | |
|
2003-04-27
| ||
| 06:10 | Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a Euro-supporting font with a Euro-enabled X key map will now actually generate a Euro character rather than shrugging and doing nothing. file: [e9147bfc40] check-in: [63945cefc6] user: simon branch: trunk, size: 91488 | |
|
2003-04-26
| ||
| 09:22 | Make the `vtmode' config option work under X. In the process I've had to move another of its values out into wincfg.c - paradoxically, this was the `font has X encoding' option! (Because the Unix font handling code expects to be able to tell for _itself_ whether it has a font with X-encoded line drawing glyphs.) file: [b10061e85a] check-in: [42587114a6] user: simon branch: trunk, size: 90532 | |
| 08:55 | Aha, _that's_ why the icon title didn't work properly in pterm: gtk_window_set_title() overwrote both titles at once. Icon title is now working properly under X, and since X was the reason for the whole icon/window title separation _anyway_ they default to being separate. file: [ede430a1b6] check-in: [9772d176d4] user: simon branch: trunk, size: 90469 | |
|
2003-04-25
| ||
| 10:44 | Don't block SIGPIPE until _after_ pterm forks, since otherwise the blockage will propagate to the child process. file: [896c96637f] check-in: [9546ad05f2] user: simon branch: trunk, size: 89937 | |
|
2003-04-23
| ||
| 08:48 | Unix makefile now uses -O2, which massively cuts down key exchange time. This gives rise to a whole bunch of spare warnings, one or two of which might have been actual bugs; now all resolved. file: [be359e2764] check-in: [6c10570c0b] user: simon branch: trunk, size: 89695 | |
|
2003-04-12
| ||
| 12:37 | Support for New Session, Duplicate Session and the Saved Sessions submenu in Unix PuTTY, and Duplicate Session also in pterm. You do _not_ want to know how this is done. Be warned. file: [e623015b6c] check-in: [2a16a8e814] user: simon branch: trunk, size: 89662 | |
| 06:03 | Further fiddlings with the size reconfiguration stuff; now everything seems to work right even when the only thing changed was the window border. file: [98c0cf8e0b] check-in: [b3bd56e4fb] user: simon branch: trunk, size: 83039 | |
| 05:44 | Mid-session reconfiguration of scrollback was failing (in Unix) except when width or height had _also_ been changed. Fixed. file: [befe0506d2] check-in: [8d3c66813d] user: simon branch: trunk, size: 82887 | |
| 04:27 | Implement the ldisc `special' mechanism in Unix, without which local line editing didn't work at all. file: [f8f558f91f] check-in: [82c66f5741] user: simon branch: trunk, size: 82486 | |
| 03:27 | Close On Exit and Warn On Close fixes: (a) pty_reconfig needs to remember changes in COE so it knows whether to print a message, and (b) once the session has already ended, Warn On Close should shut up. file: [3b9118d804] check-in: [ab6d1303e3] user: simon branch: trunk, size: 81974 | |
|
2003-04-11
| ||
| 13:44 | When I implemented the GTK messagebox() function and everything that needed to use it, I completely forgot about askappend(). D'oh. file: [158a28b3e4] check-in: [3e873ea700] user: simon branch: trunk, size: 81957 | |
| 13:36 | Rationalisation of the system of frontend handles. Most modular bits of PuTTY (terminal, backend, logctx etc) take a `void *' handle passed to them from the frontend, and used as a context for all their callbacks. Most of these point at the frontend structure itself (on platforms where this is meaningful), except that the handle passed to the backend has always pointed at the terminal because from_backend() was implemented in terminal.c. This has finally bitten Unix PuTTY, because both backend and logctx have been passing their respective and very different frontend handles to logevent(), so I've fixed it. from_backend() is now a function supplied by the _frontend_ itself, in all cases, and the frontend handle passed to backends must be the same as that passed to everything else. What was from_backend() in terminal.c is now called term_data(), and the typical implementation of from_backend() in a GUI frontend will just extract the terminal handle from the frontend structure and delegate to that. This appears to work on Unix and Windows, but has most likely broken the Mac build. file: [ec587a3909] check-in: [70ba0246e2] user: simon branch: trunk, size: 82309 | |
| 13:15 | Implement Warn On Close. file: [b7e6e58c47] check-in: [2ae43e06b7] user: simon branch: trunk, size: 82514 | |
| 13:10 | `Copy All' ought to de-highlight any existing selection, in line with any other operation that shifts the X selection to stuff other than the highlighted text. file: [1648e338e1] check-in: [6541124864] user: simon branch: trunk, size: 82462 | |
| 12:59 | `Copy All' context-menu item, for what it's worth. file: [9a64f447f2] check-in: [b75870b6d0] user: simon branch: trunk, size: 82410 | |
| 12:40 | Cutting and pasting from the Unix Event Log. file: [cd1674c99f] check-in: [26feaa9728] user: simon branch: trunk, size: 82221 | |
|
2003-04-10
| ||
| 13:00 | Implemented Change Settings under Unix. We are gradually getting there. file: [4898fad1b0] check-in: [bc0d66460b] user: simon branch: trunk, size: 82214 | |
| 06:57 | All the stderr messages in this file now use appname rather than guessing wrongly. file: [9059e683c1] check-in: [bad4bd5783] user: simon branch: trunk, size: 77404 | |
| 03:53 | Minor improvements to subsidiary window placement; with any luck the Event Log should go off the side of the screen rather less often now. file: [47264a11b8] check-in: [6843a0d490] user: simon branch: trunk, size: 77233 | |
|
2003-04-09
| ||
| 13:46 | Event Log for Unix PuTTY. Doesn't yet allow X selection of its contents, and doesn't automatically maintain scroll position at the bottom when new entries are added while the list is open, but it's a start. file: [383901712a] check-in: [e121761c3c] user: simon branch: trunk, size: 77227 | |
|
2003-04-08
| ||
| 09:02 | Rename pterm's -T option to -title, to avoid clashing with PuTTY's -T (don't allocate a pty) option. file: [5899897fed] check-in: [be7fc2e743] user: simon branch: trunk, size: 76882 | |
| 08:49 | While writing gtkdlg.c I learned how to specify a window's initial position in GTK, so I can now implement the other half of -geometry which I'd previously believed to be impossible in GTK. It's still not perfect, because GTK apparently provides no way for us to get hold of the X reparent event in order to support negative geometries in a manner which takes account of the WM borders; but for positive position it's at least an improvement on the previous version! file: [eb84fd721a] check-in: [026dce549a] user: simon branch: trunk, size: 76878 | |
|
2003-04-05
| ||
| 10:05 | Ctrl+rightclick now pops up a context menu in Unix PuTTY and pterm. This menu is not yet fully populated, but it has an About box (yet another licence location :-/ ) and supports the new configurable specials menu (thus making Unix PuTTY do one tiny thing which OpenSSH-in-a-pterm can't :-). file: [472e820148] check-in: [b7304dcb60] user: simon branch: trunk, size: 76391 | |
|
2003-04-04
| ||
| 14:21 | Turned the old `Telnet Command' System-submenu into a more general `Special Command' menu, in which any backend can place its own list of magical things the user might want to ask the backend to do. In particular I've implemented the recently proposed "break" extension in SSH2 using this mechanism. NB this checkin slightly breaks the Mac build, since it needs to provide at least a stub form of update_specials_menu(). file: [688f332fb8] check-in: [53746610b8] user: simon branch: trunk, size: 73534 | |
|
2003-04-01
| ||
| 12:10 | Various error-handling fixes, mostly in Unix PuTTY but one (failure to save a session) crosses over into the platform-independent side. file: [4aab01d69b] check-in: [98cf799b26] user: simon branch: trunk, size: 73369 | |
|
2003-03-31
| ||
| 06:10 | Support for PuTTY-style command-line arguments in Unix PuTTY. I think it's now actually usable as a day-to-day SSH client, even if things like the Event Log are still missing. So I call that a decent lunch hour's work :-) file: [093a3e2dc0] check-in: [a52454784c] user: simon branch: trunk, size: 72375 | |
| 05:42 | And everyone's favourite cosmetic change: Unix PuTTY now doesn't claim to be pterm in the window title :-) file: [303293e50d] check-in: [3fdcb83acc] user: simon branch: trunk, size: 71594 | |
| 05:21 | Checkin of last night's work on GTK message boxes. Unix PuTTY now has proper GUI prompts for host keys etc, so it should now be usable without a controlling tty. file: [f80916e9ac] check-in: [8222ee8773] user: simon branch: trunk, size: 71508 | |
|
2003-03-29
| ||
| 13:52 | Having created and used uxsel, it actually turns out to be practically trivial to put all the pieces together and create a working prototype of Unix PuTTY! It's missing a lot of things - notably GUI request boxes for host keys and logfiles and so forth, the Event Log, mid-session reconfiguration, session loading and saving, sensible population of the character sets drop-down list and probably other fiddly little things too - but it will put up a config box and then create a GUI window containing an SSH connection to the host you specified, so it's _basically_ there. Woo! file: [170db08253] check-in: [c069c8a0c8] user: simon branch: trunk, size: 71246 | |
| 12:30 | pterm now uses the new uxsel module, so it's one step closer to being able to be a PuTTY as well as a pterm. In the process I've also moved icky things like actually reading from the pty fd and printing the `terminated on signal' messages into pty.c where they obviously should have been in the first place. Also there's been one interesting repercussion in the terminal code: terminal.c's from_backend now calls term_out() directly rather than expecting the front end to call it afterwards. This has had the entertaining side effect of fixing a Windows-specific bug whereby activity in a port forwarding through a PuTTY with a blinking cursor caused the cursor to blink to ON (!!!!). So, a surprisingly far-reaching checkin as it turns out... file: [57f3950d21] check-in: [b384cf23f7] user: simon branch: trunk, size: 70992 | |
| 10:14 | Introduced wrapper macros snew(), snewn() and sresize() for the malloc functions, which automatically cast to the same type they're allocating the size of. Should prevent any future errors involving mallocing the size of the wrong structure type, and will also make life easier if we ever need to turn the PuTTY core code from real C into C++-friendly C. I haven't touched the Mac frontend in this checkin because I couldn't compile or test it. file: [fef17ee883] check-in: [48c3c19745] user: simon branch: trunk, size: 72736 | |
|
2003-03-06
| ||
| 06:57 | Richard B's patch to add WINDOWID support to pterm. file: [59aebc5cd1] check-in: [5bae12ff10] user: simon branch: trunk, size: 72787 | |
|
2003-02-01
| ||
| 06:54 | Created new data types `Filename' and `FontSpec', intended to be opaque to all platform-independent modules and only handled within per-platform code. `Filename' is there because the Mac has a magic way to store filenames (though currently this checkin doesn't support it!); `FontSpec' is there so that all the auxiliary stuff such as font height and charset and so on which is needed under Windows but not Unix can be kept where it belongs, and so that I can have a hope in hell of dealing with a font chooser in the forthcoming cross-platform config box code, and best of all it gets the horrid font height wart out of settings.c and into the Windows code where it should be. The Mac part of this checkin is a bunch of random guesses which will probably not quite compile, but which look roughly right to me. Sorry if I screwed it up, Ben :-) file: [f005c2f843] check-in: [497dc397e7] user: simon branch: trunk, size: 72583 | |
|
2003-01-28
| ||
| 06:06 | And another bit missing from the settings changes: pterm's platform default for CloseOnExit was encoded wrongly. Hopefully this should be everything now; I'm really starting to get sick of picking up the pieces after my two checkins yesterday. Perhaps I should have waited until I had a brain before doing them in the first place. file: [c97bc6b747] check-in: [d0361ae286] user: simon branch: trunk, size: 72098 | |
|
2003-01-27
| ||
| 17:03 | xterm apparently supports ESC[90m through ESC[97m to set bright foreground colours, and ESC[100m through ESC[107m to set bright background colours. Hence, so do we. Bright-foreground is distinguishable from bold, and bright-background distinguishable from blink, when it leaves terminal.c; the front end may then choose to display them in the same way if it's configured to do so. This change makes the xterm backend for Turbo Vision (!!!) work properly. Untested on Mac. file: [ce1336794e] check-in: [a7834c6a71] user: simon branch: trunk, size: 72091 | |
| 12:02 | Remove all `enum'-typed variables from the Config structure. Everything in there which is integral is now an actual int, which means my forthcoming revamp of the config box will be able to work with `int *' pointers without fear of doom. file: [439db8a8d6] check-in: [b7a1f42e84] user: simon branch: trunk, size: 71993 | |
|
2003-01-25
| ||
| 10:23 | Fix Unix breakage from term_mouse() revamp too. file: [12c83d336b] check-in: [e2ba46c004] user: simon branch: trunk, size: 72057 | |
| 10:16 | Change the term_mouse interface a little so that it gets passed both the raw and the cooked mouse button, with the mapping being done in advance by the front-end. This is useful because it allows the front-end to use information other than the raw button (e.g. the modifier state) to decide which cooked button to generate. . Front ends other than the Mac one are untested, but they just call translate_button() themselves and pass the result to term_mouse(). file: [0b0244948d] check-in: [b60ae0056c] user: ben branch: trunk, size: 72073 | |
|
2003-01-14
| ||
| 12:43 | Miscellaneous fixes to finish up `remove-statics'. rlogin.c had a holdout static I hadn't noticed; unicode.c had one too; and a large number of statics that were perfectly OK due to being constants have been made `const', with assorted `const' repercussions all over the place. I now declare `remove-statics' to be fixed. file: [8d65a790f7] check-in: [47dac3d92b] user: simon branch: trunk, size: 71998 | |
| 12:28 | Deglobalise the Unicode module. Despite all my grand plans, I've just done this the very simple way - bundle all the globals into a data structure and pass pointers around. One particularly ugly wart is that wc_to_mb now takes a pointer to this structure as an argument (optional, may be NULL, and unused in any Unicode layer that's even marginally less of a mess than the Windows one). I do need to do this properly at some point, but for now this should just about be adequate. As usual, the Mac port has not been updated. file: [01e0de26a7] check-in: [483cb38b72] user: simon branch: trunk, size: 71980 | |
| 05:24 | Ctrl-PgUp and Ctrl-PgDn now scroll by one line on Unix and Windows file: [7567d777cd] check-in: [62e9596ee2] user: owen branch: trunk, size: 71856 | |
|
2003-01-12
| ||
| 09:45 | Ahem. Doing loads of stuff to inst->cfg would probably be best done _after_ allocating inst. Oops. file: [be21e1c44e] check-in: [c1d670c1f5] user: simon branch: trunk, size: 71590 | |
| 09:36 | Ahem. Global replace of `cfg' with `inst->cfg' is all very well, but let's try to make sure it doesn't happen inside any strings! The -cfg option for cursor foreground colour nearly had a nasty accident there. file: [c84d06e6ef] check-in: [3522aa05fd] user: simon branch: trunk, size: 71590 | |
| 09:32 | Having laid all the groundwork, we can now remove the global `cfg' completely from putty.h. It's now static in each of the command-line front ends, shared only between window.c and windlg.c in PuTTY proper (I've tested this by doing #define cfg cfgsillyname in those two files only, and it still links so nobody else is using that symbol!), and part of the `inst' structure in pterm. I think that only leaves the Unicode module as the last stubborn holdout in the anti-global-variables campaign. file: [3aca7effcf] check-in: [c3e7c65a17] user: simon branch: trunk, size: 71602 | |
| 09:10 | The logging module now contains a local copy of cfg too. file: [c0d8fc86cd] check-in: [425e784a06] user: simon branch: trunk, size: 70725 | |
| 08:59 | The Unicode module no longer depends on `cfg', since it gets the relevant bits of it passed in to init_ucs(). (Actually I pass in all of it in the Windows version, since it's a bit hairy in there.) file: [4fee469b05] check-in: [c14614baa6] user: simon branch: trunk, size: 70719 | |
| 08:48 | The back ends now contain their own copies of the Config structure, and have a function to pass in a new one. (Well, actually several back ends don't actually bother to do this because they need nothing out of Config after the initial setup phase, but they could if they wanted to.) file: [97e0e2bf32] check-in: [f4d72755c1] user: simon branch: trunk, size: 70700 | |
|
2003-01-09
| ||
| 12:06 | I'm sick of all those #ifdefs in settings.c, and in any case plink and pterm need at least one default setting to be _different_ (pterm needs the default term type to be `xterm', while plink needs it to be taken from $TERM). So here's a completely new alternative mechanism for platform- and app-specific default settings. Ben will probably want to check the integrity of the Mac port, since I've fiddled with it without testing that it still compiles. file: [0748b46336] check-in: [22de118cfc] user: simon branch: trunk, size: 70687 | |
|
2003-01-03
| ||
| 11:52 | Work around a weird bug in gdk_draw_text_wc(). file: [d0a52927f4] check-in: [f98d345130] user: simon branch: trunk, size: 70306 | |
|
2003-01-02
| ||
| 10:17 | Fixes to direct-to-font mode: I'd inadvertently enabled it for any font whose encoding comes up as CS_NONE - but this is also true for iso10646-1 fonts, since libcharset doesn't support wide-character encodings! Hence UTF-8 cut and paste was enabled in ordinary modes, but disabled in UTF-8 mode, which was a bit embarrassing. Now we have a dedicated flag variable indicating direct-to-font mode. file: [6833f40618] check-in: [fb856615d4] user: simon branch: trunk, size: 69568 | |
|
2003-01-01
| ||
| 16:25 | Proper support for using the font's own character encoding. If we know what that encoding actually is, we can do our best to support additional charsets (VT100 linedrawing, SCO ACS, UTF-8 mode) using the available characters; if we don't, we fall back to a mode where we disable all Unicode cut-and-paste and assume any Unicode character is undisplayable. file: [6a406f9d41] check-in: [82f2469b77] user: simon branch: trunk, size: 69189 | |
| 15:53 | Support for double-width (CJK) characters, using the xterm-like options -fw and -fwb to specify wide and wide-bold fonts. file: [466c04fd1a] check-in: [21b2cdb2c9] user: simon branch: trunk, size: 68465 | |
|
2002-12-31
| ||
| 06:20 | First draft of Unicode support in pterm. It's pretty complete: it does UTF-8 copy and paste (falling back to normal strings if necessary), it understands X font encodings and translates things accordingly so that if you have a Unicode font you can ask for virtually any single-byte encoding and get it (Mac-Roman pterm, anyone?), and so on. There's work left to be done (wide fonts for CJK spring to mind), but I reckon this is a pretty good start. file: [a12ebdd4b1] check-in: [94580ef671] user: simon branch: trunk, size: 66930 | |
|
2002-12-04
| ||
| 06:40 | #include <signal.h>. Compiled fine without it on Debian 3.0, but not on 2.2. Wonder what changed. file: [3cdc2c8f33] check-in: [861d27cdcc] user: simon branch: trunk, size: 61099 | |
|
2002-11-23
| ||
| 14:02 | Add a Config * argument to ldisc_create(), and use it in place of the global cfg throughout ldisc.c. Not tested other than on Mac, but all other ports just pass &cfg as this argument for now. file: [a0f0403a07] check-in: [94b6511b43] user: ben branch: trunk, size: 61079 | |
| 13:01 | Add a "Config *" argument to term_init(), and use that instead of the global cfg throughout the terminal emulator. Not tested in PuTTY and pterm, but they just pass in &cfg. file: [f75c79d9f3] check-in: [40ee80fefa] user: ben branch: trunk, size: 61072 | |
|
2002-11-09
| ||
| 15:46 | Rename CharWidth() to char_width(). The former name clashes with an API function in Mac OS. file: [201fcf7854] check-in: [b80c92ed92] user: ben branch: trunk, size: 61066 | |
|
2002-11-05
| ||
| 07:20 | Fix command-line error handling in pterm. (Hint: wrapping a multi- statement macro in `do ... while (0)' and putting a `continue' within it don't go well together. Oops.) file: [94340f21e8] check-in: [e60a008b47] user: simon branch: trunk, size: 61065 | |
|
2002-11-02
| ||
| 10:16 | Improve shadow bold mode: set the default shadow bold offset to +1 not -1 (it turns out _most_ X fonts prefer the former, though irritatingly my favourite real X font used to prefer the latter which was why I made the X version of my Font Of Choice do so too), and also clip to the boundaries of the rectangle we should be drawing text in. This still doesn't completely prevent display corruption in the case where text drawn in one sweep is partially overwritten in a future one, but gnome-terminal has this problem too, and now we've got the right default SB offset _and_ offer the opportunity to reconfigure it I think this is pretty good for now. file: [821e500cf3] check-in: [3114a70d88] user: simon branch: trunk, size: 60786 | |
| 08:35 | RJK's general signal-handling robustness patch. Should fix the weird spin behaviour occasionally seen after pterm's child process dies. file: [9d50725456] check-in: [e1fb5ab154] user: simon branch: trunk, size: 60521 | |
|
2002-10-31
| ||
| 13:49 | First attempt at a Unix port of Plink. Seems to basically work; doesn't yet use the SSH agent, no way to specify arbitrary config options, no manpage yet, couple of other fiddly things need doing, but it makes SSH connections and doesn't fall over horribly so I say it's a good start. Now to run it under valgrind... file: [0987cdabb5] check-in: [b651a46968] user: simon branch: trunk, size: 60068 | |
|
2002-10-30
| ||
| 12:22 | RJK's `pterm --help' patch. I _must_ find a better alternative to this init sequence - it surely can't be right that `pterm --help' with no DISPLAY complains at the lack of DISPLAY rather than giving a help message! file: [62dbe3e394] check-in: [8cab4c281e] user: simon branch: trunk, size: 59949 | |
|
2002-10-28
| ||
| 15:58 | terminal.c should call the frontend beep() routine even with mode==BELL_VISUAL, otherwise taskbar flashing won't happen on visual bells. It's up to the frontend routine to spot BELL_VISUAL and avoid making any noise. file: [a36ea0a591] check-in: [29d816b14b] user: simon branch: trunk, size: 58606 | |
| 11:34 | Fix Alt+numberpad in pterm. For a start, there was a bug whereby if a pterm came up while Alt was down, then releasing it would cause a ^@ to be generated. Also, though, I've decided that Alt plus a single numberpad key should not generate a low-numbered control code, because that's too easy to do by mistake and the codes are too powerful. Anyone who really _wants_ to create a ^C or ^D from the numberpad can do Alt-03 or Alt-04 easily enough; two-digit codes and more such as Alt-65 are unaffected. file: [4f7a087ac8] check-in: [d50e64724d] user: simon branch: trunk, size: 58335 | |
| 03:38 | First bug discovered as a result of global-removal: pasting into pterm caused a crash because I had the wrong prototype for the selection_received event handler. Should be fixed. file: [d909f537eb] check-in: [2b272e1f86] user: simon branch: trunk, size: 57849 | |
|
2002-10-26
| ||
| 07:58 | Yet more global-removal. The static variables in logging.c are now absent, and also (I think) all the frontend request functions (such as request_resize) take a context pointer, so that multiple windows can be handled sensibly. I wouldn't swear to this, but I _think_ that only leaves the Unicode stuff as the last stubborn holdout. file: [29b3ce572b] check-in: [8fba443d8c] user: simon branch: trunk, size: 57837 | |
| 06:08 | Reorganised the Unicode layer somewhat: moved luni_send and lpage_send out into the line discipline, making them _clients_ of the Unicode layer rather than part of it. This means they can access ldisc->term, which in turn means I've been able to remove the temporary global variable `term'. We're slowly getting there. file: [de05b0f4f6] check-in: [457ce6905a] user: simon branch: trunk, size: 55074 | |
| 05:33 | Port forwarding module now passes backend handles around properly. As a result I've now been able to turn the global variables `back' and `backhandle' into module-level statics in the individual front ends. Now _that's_ progress! file: [f375dc0bf0] check-in: [06cff2eb6c] user: simon branch: trunk, size: 54772 | |
| 05:16 | Line discipline module now uses dynamically allocated data. Also fixed one or two other minor problems. file: [3625fcf32d] check-in: [d16199ae68] user: simon branch: trunk, size: 54653 | |
|
2002-10-25
| ||
| 17:00 | Oops; remembering to call term_provide_resize_fn in the Unix front end would probably help. Thanks Colin. file: [2b77136258] check-in: [40732d161f] user: simon branch: trunk, size: 54475 | |
| 06:58 | Fix the nasty flashing-light-grey-on-resize problem, after MCV helpfully alerted me to the existence of gdk_window_set_background(). file: [4f1282d052] check-in: [5fa48e3449] user: simon branch: trunk, size: 54416 | |
| 06:50 | pty backend now supports the changed function interface, so pterm now compiles and runs again after the major destabilisation. Unfortunately it wasn't feasible to actually encapsulate all of the pty backend's data, since the utmp helper and the need to fork and drop privileges before doing anything else at all rather confuses matters. So the data handle passed around to the pty backend is a null pointer, and the pty backend is just as global-ridden as it always has been. Shame, but such is life. file: [2204e7becd] check-in: [feb8faf680] user: simon branch: trunk, size: 53939 | |
|
2002-10-23
| ||
| 09:21 | Implement handling of all Close On Exit modes. Default is to close only on clean exit, which is a departure from most xterm-alikes but Ian reckons people will love me for it. If this turns out to be wrong, we can always change the default for Unix. file: [7594e783c2] check-in: [e33f2e8338] user: simon branch: trunk, size: 53896 | |
|
2002-10-22
| ||
| 11:11 | Major destabilisation, phase 1. In this phase I've moved (I think) all the global and function-static variables out of terminal.c into a dynamically allocated data structure. Note that this does not yet confer the ability to run more than one of them in the same process, because other things (the line discipline, the back end) are still global, and also in particular the address of the dynamically allocated terminal-data structure is held in a global variable `term'. But what I've got here represents a reasonable stopping point at which to check things in. In _theory_ this should all still work happily, on both Unix and Windows. In practice, who knows? file: [dfed1790b1] check-in: [c56a5fa8ee] user: simon branch: trunk, size: 52273 | |
| 08:27 | Make -ut work the right way round! :-) file: [8af4c47ba2] check-in: [b42bbd8274] user: simon branch: trunk, size: 51940 | |
|
2002-10-20
| ||
| 08:23 | Implement Richard's really clever idea about bell overload mode: it's automatically deactivated by any keypress, so that command-line beeps from (e.g.) filename completion don't suddenly stop occurring, but it still provides a rapid response to an accidental spewing of a binary to your terminal. file: [0e5c8b6e44] check-in: [89a7cd7830] user: simon branch: trunk, size: 51940 | |
| 07:44 | ScrollOnKey wasn't working because I failed to set seen_key_event in pterm.c. file: [0ce3da22e3] check-in: [ba3068e889] user: simon branch: trunk, size: 51937 | |
|
2002-10-18
| ||
| 10:26 | Reject unrecognised command-line options; thanks rjk. file: [6b1a5314ef] check-in: [6b1f39e18f] user: simon branch: trunk, size: 51916 | |
|
2002-10-17
| ||
| 11:58 | Oops - that fix wasn't _quite_ right, since it killed all non-function keys completely :-/ file: [de59dc4017] check-in: [13faee9f62] user: simon branch: trunk, size: 51830 | |
| 11:51 | Make the shadow bold offset configurable, after discovering that 7x13 goes the other way to all other X fonts I've ever seen. (Arrgh.) file: [17dced76d1] check-in: [4245aa8933] user: simon branch: trunk, size: 51810 | |
| 11:45 | This should fix the bug causing Alt-Shift to generate Escape. file: [c27adbbcfd] check-in: [2163edba1a] user: simon branch: trunk, size: 52094 | |
|
2002-10-16
| ||
| 17:54 | Add the -xrm command-line option, to allow specification of an arbitrary X resource which doesn't have a dedicated command-line option. file: [5fde656eb9] check-in: [a258b8a88b] user: simon branch: trunk, size: 52082 | |
| 11:00 | A few more command-line options. file: [8aa322120a] check-in: [c544ce865f] user: simon branch: trunk, size: 51998 | |
| 09:32 | Implement reading of X resources, and -name to change the name under which to look them up. file: [a799fe028a] check-in: [dc7f9c04de] user: simon branch: trunk, size: 50308 | |
| 07:17 | Fix utmp and pty handling so that GTK never complains about running set[ug]id. All privs-requiring pty operations are done at the very start of the run, then privs are dropped before initialising GTK. Utmp is handled by forking a still-privileged subprocess at this point, and later asking it (through a pipe) to stamp utmp. The subprocess cleans up utmp on exit, which has the additional advantage that if the main pterm process suffers some sort of unexpected termination (up to and including SIGKILL) the subprocess can still mop up utmp. file: [321d6db447] check-in: [7f9a81d03e] user: simon branch: trunk, size: 49603 | |
| 04:40 | Bug `shift-backspace': whichever of ^H and ^? is configured for Backspace, Shift-Backspace should do the _other_ one. Thanks to Justin Bradford. file: [bd0263c058] check-in: [74ba290d86] user: simon branch: trunk, size: 49519 | |
|
2002-10-15
| ||
| 13:42 | Support bold-as-font, by means of a separate bold font (if one was supplied) or shadow bolding (if not). As usual, can't yet be turned on without a recompile. file: [13030e5d7c] check-in: [b2569827d3] user: simon branch: trunk, size: 49305 | |
| 13:18 | Support underline and vertical-line cursors as well as block. file: [709faa9722] check-in: [3931a8354d] user: simon branch: trunk, size: 48250 | |
| 12:41 | If we can't load the specified font, give an error message rather than segfaulting. file: [6d7860c7bd] check-in: [d6f20644bd] user: simon branch: trunk, size: 46347 | |
| 12:24 | Scrollbar can now be configured to go on the left (although the current configuration mechanism doesn't support it). file: [2c4aec9326] check-in: [94f7e9d448] user: simon branch: trunk, size: 46237 | |
| 12:18 | Support ALT + numeric keypad for typing in strange character codes. file: [c7d56efe8b] check-in: [5a7aebaff7] user: simon branch: trunk, size: 46127 | |
| 11:50 | Support scrolling with the mouse wheel (X servers apparently usually send a button 4 press for an upward wheel movement and a button 5 press for a downward one). Untested since my own trackball's button 4 does nothing obvious. Someone with a mouse wheel should give this a workout. file: [d7c1b8e194] check-in: [622fd3d843] user: simon branch: trunk, size: 43624 | |
| 11:38 | Support for blinking text and blinking cursor. Won't actually be accessible until there's a way to configure it on, but it worked in tests. file: [857721da1b] check-in: [a0a5506f59] user: simon branch: trunk, size: 43411 | |
| 11:24 | Use the appalling gnome-terminal hack for server-controlled resizes rather than the gtk_window_set_policy approach; the GNOME people say that the former is the Right Thing in spite of the latter looking obviously plausible. file: [c9a6032e34] check-in: [6cb6d56d5f] user: simon branch: trunk, size: 43373 | |
| 10:44 | Remove some rogue diagnostics. file: [b919b39b52] check-in: [842a63a48e] user: simon branch: trunk, size: 41368 | |
| 10:16 | Don't forget to initialise the pixel size parameters of the window as passed to the pty... file: [794018a75d] check-in: [f47218505b] user: simon branch: trunk, size: 41488 | |
| 09:55 | Richard's patch to make the scrollbar configurably absent. (Still want a new option to configure it to be on the LHS though. And some lunatic is bound to ask for an xterm-style scrollbar too... :-) file: [d7acb44fa3] check-in: [c816ac1e38] user: simon branch: trunk, size: 41337 | |
| 09:31 | Support for all the server-side window configuration requests, including server-controlled resizing. Irritatingly I've had to use a deprecated option to gtk_window_set_policy() to make this work, resulting in me raising GNOME bug #95818 to ask for it to be un- deprecated again... file: [af2b956e86] check-in: [ef25478d2b] user: simon branch: trunk, size: 41138 | |
| 08:07 | Introduce the ability to control whether the shell run in pterm is a login shell or not. Also moved these new pieces of configuration into the Config structure, though they won't stay there forever since they will need to be moved out into platform-dependent config. file: [c23c3f5696] check-in: [889a957cfd] user: simon branch: trunk, size: 39293 | |
| 07:42 | Finish up utmp processing: add the -ut- command-line option to suppress stamping it at all. (I suppose this ought to be part of the cfg structure really.) file: [bf5de22489] check-in: [48d2913a94] user: simon branch: trunk, size: 39299 | |
| 07:29 | Support for utmp, wtmp and lastlog. Probably not terribly portable as yet, but seems to work plausibly on Linux. file: [8efd663abc] check-in: [04380af359] user: simon branch: trunk, size: 39182 | |
| 04:30 | Trim wide text properly at the RH edge of the screen. file: [512e25db62] check-in: [1d7a84f45a] user: simon branch: trunk, size: 39120 | |
|
2002-10-14
| ||
| 19:22 | Support for line attributes: ESC #3, #4 and #6 for double-width and double-height text. file: [ea580d11a9] check-in: [3a57c840d6] user: simon branch: trunk, size: 39047 | |
| 18:39 | Don't cause the mouse pointer to reappear just because it's changed shape. file: [a5eb4cdff5] check-in: [b5dce740cb] user: simon branch: trunk, size: 37782 | |
| 18:32 | Only engage a GTK idle function when absolutely necessary, otherwise the whole app spins on it and takes up CPU all the time. file: [3fda32b15f] check-in: [7a5991bb3f] user: simon branch: trunk, size: 37700 | |
| 17:14 | Set up the palette _before_ trying to paint the window black. file: [7f58d96f5b] check-in: [65d1404fa3] user: simon branch: trunk, size: 37468 | |
| 05:33 | Add the -log option, which activates full session logging. Should be handy next time I need to debug any weird terminal problems... file: [7b267c25bf] check-in: [c3440c092b] user: simon branch: trunk, size: 37468 | |
| 05:21 | Support server requests for colour palette changes. file: [078456417c] check-in: [12a36f9ab5] user: simon branch: trunk, size: 37052 | |
| 05:14 | Don't forget to call term_paste() when we get the chance, or big pastes won't go through. (Not sure whether I should remove this weird behaviour completely for pterm. It's a bit bizarre.) file: [e0321f65cb] check-in: [03a780c15b] user: simon branch: trunk, size: 36320 | |
| 05:06 | Support NetHack keypad mode. :-) file: [077d1a8744] check-in: [e8759a8b36] user: simon branch: trunk, size: 36156 | |
| 04:58 | Support for hiding the mouse pointer on keypresses. Currently activated by `-hide' on the command line. file: [06ef5d36de] check-in: [26a987d390] user: simon branch: trunk, size: 35274 | |
| 04:18 | xterm-class programs should exit when their primary child process dies, rather than waiting around until the last open handle on the pty closes. file: [f8f9e93f81] check-in: [fe669158ac] user: simon branch: trunk, size: 34562 | |
|
2002-10-13
| ||
| 19:05 | Window title configurability: -T to set it from the command line, support for the xterm escape sequences to set it, and support for the xterm escape sequence to query it. file: [7a59006567] check-in: [bcb2aa106a] user: simon branch: trunk, size: 34138 | |
| 18:48 | gnome-terminal insists on receiving the selection as COMPOUND_TEXT rather than STRING, so we can now supply that too. Pasting both ways between pterm and gnome-terminal now works. file: [ccfac1f0a1] check-in: [525fd6d0f4] user: simon branch: trunk, size: 33627 | |
| 07:54 | Added two simple command-line arguments: -fn (so I can have my Font Of Choice back :-) and -e to run a command other than $SHELL. file: [c3823f104c] check-in: [7a2269ba51] user: simon branch: trunk, size: 33426 | |
| 07:44 | Resizing of pterm now works, and the size information is correctly sent on to the pty. file: [7869b9a948] check-in: [2fb4abdb44] user: simon branch: trunk, size: 32750 | |
| 07:17 | Deal with the appalling mouse pointer colours. (Why doesn't GTK let us select our own mouse pointer fg and bg for standard pointers? It's ludicrous that we can only do it for pixmap-derived ones. :-( ) file: [d740d1df6a] check-in: [c8de8d4871] user: simon branch: trunk, size: 32243 | |
| 06:27 | Shift-Ins pastes. file: [4d72d9c2ea] check-in: [4b2f26182c] user: simon branch: trunk, size: 29753 | |
| 06:24 | Selection now supported in pterm. Required small modifications outside the unix subdir, owing to more things needing to become platform-dependent. file: [405ec8eed1] check-in: [e4d89ad7c0] user: simon branch: trunk, size: 29662 | |
| 04:57 | Fix underline, which I cleverly broke while adding support for the window border. Oops. file: [2d179aa3d4] check-in: [ebd5e8cfd3] user: simon branch: trunk, size: 25400 | |
| 04:54 | Scrollbar now exists and functions; so do Shift-PgUp / Shift-PgDn. file: [b63d6bd39b] check-in: [3bcb27e451] user: simon branch: trunk, size: 25352 | |
|
2002-10-10
| ||
| 09:42 | Stop hard-coding a nonstandard font. We now default to `fixed', and pick up the font's real width and height. This means I now _can't_ use my font of choice until I implement some command-line options; I wonder what feature will appear next :-) file: [1dd2ecb1bc] check-in: [3628bd7d8c] user: simon branch: trunk, size: 22593 | |
| 07:40 | And that's it! pty.c is now a real pty backend rather than a loopback interface; pterm now runs $SHELL and gives every impression of being not a bad terminal emulator. I'm quite pleased with that. :-) file: [fc6b234790] check-in: [df838b2e56] user: simon branch: trunk, size: 21792 | |
| 07:14 | Half-decent keyboard handling for pterm. Not very well done - it would have been better to abstract the general key-handling rules away from the platform-specific keysyms rather than doing clone- and-hack as I've done - but it'll serve for now. Now all I need is a real pty back end and pterm should be a just-about-usable prototype. file: [d54b8eb3a9] check-in: [85cfc8acc0] user: simon branch: trunk, size: 21017 | |
| 05:40 | A sensible minimum of do_text() and do_cursor() is now implemented. This means pterm actually _looks_ like the PuTTY terminal emulator engine, instead of merely giving evidence to the expert eye that said engine is hidden in there somewhere :-) file: [26b488fd96] check-in: [3d9a36b500] user: simon branch: trunk, size: 11584 | |
|
2002-10-09
| ||
| 13:09 | First phase of porting. pterm now compiles and runs under Linux+gtk. The current pty.c backend is temporarily a loopback device for terminal emulator testing, the display handling is only just enough to show that terminal.c is functioning, the keyboard handling is laughable, and most features are absent. Next step: bring output and input up to a plausibly working state, and put a real pty on the back to create a vaguely usable prototype. Oh, and a scrollbar would be nice too. In _theory_ the Windows builds should still work fine after this... file: [92513883b7] check-in: [2d8039929a] user: simon branch: trunk, size: 10245 | |
|
2002-10-07
| ||
| 11:45 | Added: Begin destabilisation in the wake of 0.53! This checkin contains the beginning of a Unix port. It's nowhere near done, and currently it won't even compile on Unix. But this represents the start of the process of separating out platform-specific code, and also contains the mkfiles.pl changes required to support a Unix makefile and a non-flat source tree. file: [acb347e7ef] check-in: [1baf2504b1] user: simon branch: trunk, size: 4894 | |