diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c index d04bd8d7b792ca059520adc6f05e847e5b393db5..761dab8f86afe7cd48d0b988b90f6dc492bde5ec 100644 --- a/src/syncterm/syncterm.c +++ b/src/syncterm/syncterm.c @@ -112,6 +112,7 @@ int safe_mode=0; FILE* log_fp; extern ini_style_t ini_style; BOOL quitting=FALSE; +int fake_mode = -1; #ifdef _WINSOCKAPI_ @@ -1685,6 +1686,8 @@ int main(int argc, char **argv) gettextinfo(&txtinfo); /* Current mode may have changed while in show_bbslist() */ FREE_AND_NULL(last_bbs); uifcbail(); + if (bbs->screen_mode != SCREEN_MODE_CURRENT) + fake_mode = screen_to_ciolib(bbs->screen_mode); textmode(screen_to_ciolib(bbs->screen_mode)); if (!bbs->hidepopups) init_uifc(TRUE, TRUE); @@ -1694,6 +1697,7 @@ int main(int argc, char **argv) load_font_files(); uifcbail(); textmode(txtinfo.currmode); + fake_mode = -1; init_uifc(TRUE, TRUE); settitle("SyncTERM"); } else { @@ -1734,6 +1738,7 @@ int main(int argc, char **argv) if(doterm(bbs)) quitting=TRUE; + fake_mode = -1; setvideoflags(0); if(log_fp!=NULL) { diff --git a/src/syncterm/syncterm.h b/src/syncterm/syncterm.h index 2e7b48353d9e0491f466e6b76d7c00f1427e6d08..2ee5d3daef532320b7c1a79c066bf0aae962d91a 100644 --- a/src/syncterm/syncterm.h +++ b/src/syncterm/syncterm.h @@ -84,6 +84,7 @@ extern char *output_types[]; extern int output_map[]; extern char *output_descrs[]; extern char *output_enum[]; +extern int fake_mode; void parse_url(char *url, struct bbslist *bbs, int dflt_conn_type, int force_defaults); char *get_syncterm_filename(char *fn, int fnlen, int type, int shared); diff --git a/src/syncterm/window.c b/src/syncterm/window.c index 5faf43e5f0cb7aae392fbdd470baef3f8a42b9ca..69f5b6e9ec4d9dce2e4c172304511f60b82b9d76 100644 --- a/src/syncterm/window.c +++ b/src/syncterm/window.c @@ -2,6 +2,7 @@ #include <gen_defs.h> #include <ciolib.h> +#include <vidmodes.h> #include "uifcinit.h" #include "term.h" #include "syncterm.h" @@ -10,18 +11,28 @@ void get_term_win_size(int *width, int *height, int *nostatus) { struct text_info txtinfo; + int vmode = find_vmode(fake_mode); gettextinfo(&txtinfo); - if(txtinfo.screenwidth < 80) - *width=40; + if (vmode != -1 && txtinfo.screenwidth >= vparams[vmode].cols) { + *width = vparams[vmode].cols; + } else { - if(txtinfo.screenwidth <132) - *width=80; - else - *width=132; + if(txtinfo.screenwidth < 80) + *width=40; + else { + if(txtinfo.screenwidth <132) + *width=80; + else + *width=132; + } } *height=txtinfo.screenheight; + if (vmode != -1) { + if (txtinfo.screenheight >= vparams[vmode].rows) + *height = vparams[vmode].rows; + } if(!*nostatus) (*height)--; if(*height<24) {