--- rxvt-unicode/src/main.C 2008/11/04 16:43:50 1.313 +++ rxvt-unicode/src/main.C 2010/03/30 23:54:29 1.323 @@ -239,6 +239,7 @@ if (display) { selection_clear (); + selection_clear (true); #ifdef USE_XIM im_destroy (); @@ -273,6 +274,7 @@ free (allocated [i]); free (selection.text); + free (selection.clip_text); // TODO: manage env vars in child only(!) free (env_display); free (env_term); @@ -648,7 +650,7 @@ ws.ws_row = nrow; ws.ws_xpixel = width; ws.ws_ypixel = height; - (void)ioctl (pty->pty, TIOCSWINSZ, &ws); + ioctl (pty->pty, TIOCSWINSZ, &ws); #if 0 // TIOCSWINSZ is supposed to do this automatically and correctly @@ -690,6 +692,7 @@ prop = (*fs)[1]->properties (); prop.height += lineSpace; + prop.width += letterSpace; fs->set_prop (prop, false); @@ -971,6 +974,9 @@ #endif } + if (set_hint) + XSetWMNormalHints (dpy, parent[0], &szHint); + fix_screen = ncol != prev_ncol || nrow != prev_nrow; if (fix_screen || newwidth != old_width || newheight != old_height) @@ -986,19 +992,11 @@ if (bgPixmap.window_size_sensitive ()) update_background (); #endif - - scr_clear (); } - if (set_hint) - XSetWMNormalHints (dpy, parent[0], &szHint); - if (fix_screen || old_height == 0) scr_reset (); - // TODO, with nvidia-8178, resizes kill the alpha channel, report if not fixed in newer version - //scr_touch (false); - #ifdef HAVE_BG_PIXMAP // TODO: this don't seem to have any effect - do we still need it ? If so - in which case exactly ? // if (bgPixmap.pixmap) @@ -1079,18 +1077,17 @@ bool rxvt_term::IMisRunning () { - char *p; Atom atom; Window win; char server[IMBUFSIZ]; /* get current locale modifier */ - if ((p = XSetLocaleModifiers (NULL)) != NULL) + if (char *p = XSetLocaleModifiers (0)) { strcpy (server, "@server="); - strncat (server, & (p[4]), IMBUFSIZ - 9); /* skip "@im=" */ + strncat (server, p + 4, IMBUFSIZ - 9); /* skip "@im=" */ - if ((p = strchr (server + 1, '@')) != NULL) /* first one only */ + if (p = strchr (server + 1, '@')) /* first one only */ *p = '\0'; atom = XInternAtom (dpy, server, False); @@ -1167,7 +1164,7 @@ if (text) { - void *str; + wchar_t *str; if (!text->encoding_is_wchar && text->string.multi_byte) { @@ -1175,14 +1172,14 @@ if (term->rs[Rs_imLocale]) SET_LOCALE (term->rs[Rs_imLocale]); - str = rxvt_temp_buf ((text->length + 1) * sizeof (wchar_t)); - mbstowcs ((wchar_t *)str, text->string.multi_byte, text->length + 1); + str = rxvt_temp_buf (text->length + 1); + mbstowcs (str, text->string.multi_byte, text->length + 1); if (term->rs[Rs_imLocale]) SET_LOCALE (term->locale); } else - str = (void *)text->string.wide_char; + str = text->string.wide_char; HOOK_INVOKE ((term, HOOK_XIM_PREEDIT_DRAW, DT_INT, call_data->caret,