mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-25 01:02:24 +00:00
Deal with the possibility of no valid font being selected at all
during an entire run of unifontsel (because unifontsel_set_name was either not called at all, or called with a name that didn't correspond to any known font). In this situation we grey out the OK button until a valid font is selected, and we have unifontsel_get_name return NULL rather than failing an assertion if it should be called in that state. The current client code in gtkdlg.c should never encounter a NULL return, since it only calls it after the OK button is clicked, but I've stuck an assertion in there too on general principles. [originally from svn r7953]
This commit is contained in:
parent
f07f782547
commit
ae802c16d8
@ -1226,6 +1226,7 @@ static void fontsel_ok(GtkButton *button, gpointer data)
|
|||||||
(GTK_OBJECT(button), "user-data");
|
(GTK_OBJECT(button), "user-data");
|
||||||
struct uctrl *uc = (struct uctrl *)fontsel->user_data;
|
struct uctrl *uc = (struct uctrl *)fontsel->user_data;
|
||||||
char *name = unifontsel_get_name(fontsel);
|
char *name = unifontsel_get_name(fontsel);
|
||||||
|
assert(name); /* should always be ok after OK pressed */
|
||||||
gtk_entry_set_text(GTK_ENTRY(uc->entry), name);
|
gtk_entry_set_text(GTK_ENTRY(uc->entry), name);
|
||||||
sfree(name);
|
sfree(name);
|
||||||
}
|
}
|
||||||
|
@ -1564,6 +1564,8 @@ static void unifontsel_select_font(unifontsel_internal *fs,
|
|||||||
if (size_is_explicit)
|
if (size_is_explicit)
|
||||||
fs->intendedsize = size;
|
fs->intendedsize = size;
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive(fs->u.ok_button, TRUE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the index of this fontinfo in the selorder list.
|
* Find the index of this fontinfo in the selorder list.
|
||||||
*/
|
*/
|
||||||
@ -2270,6 +2272,8 @@ unifontsel *unifontsel_new(const char *wintitle)
|
|||||||
unifontsel_setup_familylist(fs);
|
unifontsel_setup_familylist(fs);
|
||||||
|
|
||||||
fs->selected = NULL;
|
fs->selected = NULL;
|
||||||
|
fs->selsize = fs->intendedsize = 13; /* random default */
|
||||||
|
gtk_widget_set_sensitive(fs->u.ok_button, FALSE);
|
||||||
|
|
||||||
return (unifontsel *)fs;
|
return (unifontsel *)fs;
|
||||||
}
|
}
|
||||||
@ -2349,7 +2353,8 @@ char *unifontsel_get_name(unifontsel *fontsel)
|
|||||||
unifontsel_internal *fs = (unifontsel_internal *)fontsel;
|
unifontsel_internal *fs = (unifontsel_internal *)fontsel;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
assert(fs->selected);
|
if (!fs->selected)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (fs->selected->size == 0) {
|
if (fs->selected->size == 0) {
|
||||||
name = fs->selected->fontclass->scale_fontname
|
name = fs->selected->fontclass->scale_fontname
|
||||||
|
Loading…
Reference in New Issue
Block a user