-/* $Id: macterm.c,v 1.73 2003/04/12 21:06:34 ben Exp $ */
+/* $Id$ */
/*
* Copyright (c) 1999 Simon Tatham
* Copyright (c) 1999, 2002 Ben Harris
void mac_startsession(Session *s)
{
- char *errmsg;
+ const char *errmsg;
int i;
WinInfo *wi;
term_provide_logctx(s->term, s->logctx);
errmsg = s->back->init(s, &s->backhandle, &s->cfg, s->cfg.host,
- s->cfg.port, &s->realhost, s->cfg.tcp_nodelay);
+ s->cfg.port, &s->realhost, s->cfg.tcp_nodelay,
+ s->cfg.tcp_keepalives);
if (errmsg != NULL)
fatalbox("%s", errmsg);
s->back->provide_logctx(s->backhandle, s->logctx);
const char text = 'W';
FontInfo fi;
#if TARGET_API_MAC_CARBON
- CQDProcsPtr gp = GetPortGrafProcs(GetWindowPort(s->window));;
+ CQDProcsPtr gp = GetPortGrafProcs(GetWindowPort(s->window));
#else
- QDProcsPtr gp = s->window->grafProcs;;
+ QDProcsPtr gp = s->window->grafProcs;
#endif
numer.v = denom.v = 1; /* always */
Session *s;
for (s = sesslist; s != NULL; s = s->next) {
- term_out(s->term);
term_update(s->term);
}
}
*
* x and y are text row and column (zero-based)
*/
-void do_text(Context ctx, int x, int y, char *text, int len,
+void do_text(Context ctx, int x, int y, wchar_t *text, int len,
unsigned long attr, int lattr)
{
Session *s = ctx;
RgnHandle visrgn;
#endif
char mactextbuf[1024];
- UniChar unitextbuf[1024];
wchar_t *unitextptr;
int i, fontwidth;
ByteCount iread, olen;
assert(len <= 1024);
+ /* SGT, 2004-10-14: I don't know how to support combining characters
+ * on the Mac. Hopefully the first person to fail this assertion will
+ * know how to do it better than me... */
+ assert(!(attr & TATTR_COMBINING));
+
SetPort((GrafPtr)GetWindowPort(s->window));
fontwidth = s->font_width;
return;
#endif
- /* Unpack Unicode from the mad format we get passed */
- for (i = 0; i < len; i++)
- unitextbuf[i] = (unsigned char)text[i] | (attr & CSET_MASK);
-
if (s->uni_to_font != NULL) {
err = ConvertFromUnicodeToText(s->uni_to_font, len * sizeof(UniChar),
- unitextbuf, kUnicodeUseFallbacksMask,
+ text, kUnicodeUseFallbacksMask,
0, NULL, NULL, NULL,
1024, &iread, &olen, mactextbuf);
if (err != noErr && err != kTECUsedFallbacksStatus)
olen = 0;
} else if (s->font_charset != CS_NONE) {
/* XXX this is bogus if wchar_t and UniChar are different sizes. */
- unitextptr = (wchar_t *)unitextbuf;
+ unitextptr = (wchar_t *)text;
olen = charset_from_unicode(&unitextptr, &len, mactextbuf, 1024,
s->font_charset, NULL, ".", 1);
} else