mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-18 11:31:00 -05:00
Support custom clipboard names under X.
This required me to turn the drop-lists into combo boxes and add an extra string-typed Conf setting alongside each enumerated value.
This commit is contained in:
31
settings.c
31
settings.c
@ -448,7 +448,7 @@ static void wprefs(void *sesskey, const char *name,
|
||||
}
|
||||
|
||||
static void write_clip_setting(void *handle, const char *savekey,
|
||||
Conf *conf, int confkey)
|
||||
Conf *conf, int confkey, int strconfkey)
|
||||
{
|
||||
int val = conf_get_int(conf, confkey);
|
||||
switch (val) {
|
||||
@ -462,21 +462,33 @@ static void write_clip_setting(void *handle, const char *savekey,
|
||||
case CLIPUI_EXPLICIT:
|
||||
write_setting_s(handle, savekey, "explicit");
|
||||
break;
|
||||
case CLIPUI_CUSTOM:
|
||||
{
|
||||
char *sval = dupcat("custom:", conf_get_str(conf, strconfkey),
|
||||
(const char *)NULL);
|
||||
write_setting_s(handle, savekey, sval);
|
||||
sfree(sval);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void read_clip_setting(void *handle, const char *savekey,
|
||||
int def, Conf *conf, int confkey)
|
||||
int def, Conf *conf, int confkey, int strconfkey)
|
||||
{
|
||||
char *setting = read_setting_s(handle, savekey);
|
||||
int val;
|
||||
|
||||
conf_set_str(conf, strconfkey, "");
|
||||
if (!setting) {
|
||||
val = def;
|
||||
} else if (!strcmp(setting, "implicit")) {
|
||||
val = CLIPUI_IMPLICIT;
|
||||
} else if (!strcmp(setting, "explicit")) {
|
||||
val = CLIPUI_EXPLICIT;
|
||||
} else if (!strncmp(setting, "custom:", 7)) {
|
||||
val = CLIPUI_CUSTOM;
|
||||
conf_set_str(conf, strconfkey, setting + 7);
|
||||
} else {
|
||||
val = CLIPUI_NONE;
|
||||
}
|
||||
@ -676,9 +688,12 @@ void save_open_settings(void *sesskey, Conf *conf)
|
||||
}
|
||||
write_setting_i(sesskey, "MouseAutocopy",
|
||||
conf_get_int(conf, CONF_mouseautocopy));
|
||||
write_clip_setting(sesskey, "MousePaste", conf, CONF_mousepaste);
|
||||
write_clip_setting(sesskey, "CtrlShiftIns", conf, CONF_ctrlshiftins);
|
||||
write_clip_setting(sesskey, "CtrlShiftCV", conf, CONF_ctrlshiftcv);
|
||||
write_clip_setting(sesskey, "MousePaste", conf,
|
||||
CONF_mousepaste, CONF_mousepaste_custom);
|
||||
write_clip_setting(sesskey, "CtrlShiftIns", conf,
|
||||
CONF_ctrlshiftins, CONF_ctrlshiftins_custom);
|
||||
write_clip_setting(sesskey, "CtrlShiftCV", conf,
|
||||
CONF_ctrlshiftcv, CONF_ctrlshiftcv_custom);
|
||||
write_setting_s(sesskey, "LineCodePage", conf_get_str(conf, CONF_line_codepage));
|
||||
write_setting_i(sesskey, "CJKAmbigWide", conf_get_int(conf, CONF_cjk_ambig_wide));
|
||||
write_setting_i(sesskey, "UTF8Override", conf_get_int(conf, CONF_utf8_override));
|
||||
@ -1103,11 +1118,11 @@ void load_open_settings(void *sesskey, Conf *conf)
|
||||
gppi(sesskey, "MouseAutocopy", CLIPUI_DEFAULT_AUTOCOPY,
|
||||
conf, CONF_mouseautocopy);
|
||||
read_clip_setting(sesskey, "MousePaste", CLIPUI_DEFAULT_MOUSE,
|
||||
conf, CONF_mousepaste);
|
||||
conf, CONF_mousepaste, CONF_mousepaste_custom);
|
||||
read_clip_setting(sesskey, "CtrlShiftIns", CLIPUI_DEFAULT_INS,
|
||||
conf, CONF_ctrlshiftins);
|
||||
conf, CONF_ctrlshiftins, CONF_ctrlshiftins_custom);
|
||||
read_clip_setting(sesskey, "CtrlShiftCV", CLIPUI_NONE,
|
||||
conf, CONF_ctrlshiftcv);
|
||||
conf, CONF_ctrlshiftcv, CONF_ctrlshiftcv_custom);
|
||||
/*
|
||||
* The empty default for LineCodePage will be converted later
|
||||
* into a plausible default for the locale.
|
||||
|
Reference in New Issue
Block a user