mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 09:58:01 +00:00
817e4ad2dd
Now every call to do_config_box is replaced with a call to create_config_box, which returns immediately having constructed the new GTK window object, and is passed a callback function which it will arrange to be called when the dialog terminates (whether by OK or by Cancel). That callback is now what triggers the construction of a session window after 'Open' is pressed in the initial config box, or the actual mid-session reconfiguration action after 'Apply' is pressed in a Change Settings box. We were already prepared to ignore the re-selection of 'Change Settings' from the context menu of a window that already had a Change Settings box open (and not accidentally create a second config box for the same window); but now we do slightly better, by finding the existing config box and un-minimising and raising it, in case the user had forgotten it was there. That's a useful featurelet, but not the main purpose of this change. The mani point, of course, is that now the multi-window GtkApplication based front ends now don't do anything confusing to the nesting of gtk_main() when config boxes are involved. Whether you're changing the settings of one (or more than one) of your already-running sessions, preparing to start up a new PuTTY connection, or both at once, we stay in the same top-level instance of gtk_main() and all sessions' top- level callbacks continue to run sensibly.
58 lines
1.3 KiB
C
58 lines
1.3 KiB
C
/*
|
|
* pterm main program.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "putty.h"
|
|
|
|
const char *const appname = "pterm";
|
|
const int use_event_log = 0; /* pterm doesn't need it */
|
|
const int new_session = 0, saved_sessions = 0; /* or these */
|
|
const int dup_check_launchable = 0; /* no need to check host name in conf */
|
|
const int use_pty_argv = TRUE;
|
|
|
|
Backend *select_backend(Conf *conf)
|
|
{
|
|
return &pty_backend;
|
|
}
|
|
|
|
void initial_config_box(Conf *conf, post_dialog_fn_t after, void *afterctx)
|
|
{
|
|
/*
|
|
* This is a no-op in pterm, except that we'll ensure the protocol
|
|
* is set to -1 to inhibit the useless Connection panel in the
|
|
* config box. So we do that and then just immediately call the
|
|
* post-dialog function with a positive result.
|
|
*/
|
|
conf_set_int(conf, CONF_protocol, -1);
|
|
after(afterctx, 1);
|
|
}
|
|
|
|
void cleanup_exit(int code)
|
|
{
|
|
exit(code);
|
|
}
|
|
|
|
int process_nonoption_arg(const char *arg, Conf *conf, int *allow_launch)
|
|
{
|
|
return 0; /* pterm doesn't have any. */
|
|
}
|
|
|
|
char *make_default_wintitle(char *hostname)
|
|
{
|
|
return dupstr("pterm");
|
|
}
|
|
|
|
void setup(int single)
|
|
{
|
|
extern void pty_pre_init(void); /* declared in pty.c */
|
|
|
|
cmdline_tooltype = TOOLTYPE_NONNETWORK;
|
|
default_protocol = -1;
|
|
|
|
if (single)
|
|
pty_pre_init();
|
|
}
|