… | |
… | |
259 | free (env_windowid); |
259 | free (env_windowid); |
260 | free (env_display); |
260 | free (env_display); |
261 | free (env_term); |
261 | free (env_term); |
262 | free (env_colorfgbg); |
262 | free (env_colorfgbg); |
263 | free (locale); |
263 | free (locale); |
264 | #if 0 |
264 | free (incr_buf); |
265 | free (codeset); |
|
|
266 | #endif |
|
|
267 | |
265 | |
268 | delete envv; |
266 | delete envv; |
269 | delete argv; |
267 | delete argv; |
270 | } |
268 | } |
271 | |
269 | |
… | |
… | |
355 | |
353 | |
356 | init_xlocale (); |
354 | init_xlocale (); |
357 | |
355 | |
358 | scr_reset (); /* initialize screen */ |
356 | scr_reset (); /* initialize screen */ |
359 | |
357 | |
360 | #if 1 |
358 | #if 0 |
361 | XSynchronize (display->display, True); |
359 | XSynchronize (display->display, True); |
362 | #endif |
360 | #endif |
363 | |
361 | |
364 | #ifdef HAVE_SCROLLBARS |
362 | #ifdef HAVE_SCROLLBARS |
365 | if (options & Opt_scrollBar) |
363 | if (options & Opt_scrollBar) |
… | |
… | |
831 | } |
829 | } |
832 | |
830 | |
833 | return true; |
831 | return true; |
834 | } |
832 | } |
835 | |
833 | |
|
|
834 | void rxvt_term::set_string_property (Atom prop, const char *str, int len) |
|
|
835 | { |
|
|
836 | // TODO: SMART_WINDOW_TITLE |
|
|
837 | XChangeProperty (display->display, TermWin.parent[0], |
|
|
838 | prop, XA_STRING, 8, PropModeReplace, |
|
|
839 | (const unsigned char *)str, len >= 0 ? len : strlen (str)); |
|
|
840 | } |
|
|
841 | |
|
|
842 | void rxvt_term::set_utf8_property (Atom prop, const char *str, int len) |
|
|
843 | { |
|
|
844 | // TODO: SMART_WINDOW_TITLE |
|
|
845 | wchar_t *ws = rxvt_mbstowcs (str, len); |
|
|
846 | char *s = rxvt_wcstoutf8 (ws); |
|
|
847 | |
|
|
848 | XChangeProperty (display->display, TermWin.parent[0], |
|
|
849 | prop, xa[XA_UTF8_STRING], 8, PropModeReplace, |
|
|
850 | (const unsigned char *)s, strlen (s)); |
|
|
851 | |
|
|
852 | free (s); |
|
|
853 | free (ws); |
|
|
854 | } |
|
|
855 | |
836 | /*----------------------------------------------------------------------*/ |
856 | /*----------------------------------------------------------------------*/ |
837 | /*----------------------------------------------------------------------*/ |
857 | /*----------------------------------------------------------------------*/ |
838 | /* xterm sequences - title, iconName, color (exptl) */ |
858 | /* xterm sequences - title, iconName, color (exptl) */ |
839 | void |
859 | void |
840 | rxvt_term::set_title (const char *str) |
860 | rxvt_term::set_title (const char *str) |
841 | { |
861 | { |
842 | #ifdef SMART_WINDOW_TITLE |
862 | set_string_property (XA_WM_NAME, str); |
843 | char *name; |
863 | #if ENABLE_FRILLS |
844 | |
864 | set_utf8_property (display->atom ("_NET_WM_NAME"), str); |
845 | if (!XFetchName (display->display, TermWin.parent[0], &name)) |
|
|
846 | name = NULL; |
|
|
847 | |
|
|
848 | if (name == NULL || strcmp (name, str)) |
|
|
849 | #endif |
|
|
850 | XStoreName (display->display, TermWin.parent[0], str); |
|
|
851 | |
|
|
852 | #ifdef SMART_WINDOW_TITLE |
|
|
853 | if (name) |
|
|
854 | XFree (name); |
|
|
855 | #endif |
865 | #endif |
856 | } |
866 | } |
857 | |
867 | |
858 | void |
868 | void |
859 | rxvt_term::set_icon_name (const char *str) |
869 | rxvt_term::set_icon_name (const char *str) |
860 | { |
870 | { |
861 | #ifdef SMART_WINDOW_TITLE |
871 | set_string_property (XA_WM_ICON_NAME, str); |
862 | char *name; |
872 | #if ENABLE_FRILLS |
863 | |
873 | set_utf8_property (display->atom ("_NET_WM_ICON_NAME"), str); |
864 | if (!XGetIconName (display->display, TermWin.parent[0], &name)) |
|
|
865 | name = NULL; |
|
|
866 | |
|
|
867 | if (name == NULL || strcmp (name, str)) |
|
|
868 | #endif |
|
|
869 | XSetIconName (display->display, TermWin.parent[0], str); |
|
|
870 | |
|
|
871 | #ifdef SMART_WINDOW_TITLE |
|
|
872 | if (name) |
|
|
873 | XFree (name); |
|
|
874 | #endif |
874 | #endif |
875 | } |
875 | } |
876 | |
876 | |
877 | #ifdef XTERM_COLOR_CHANGE |
877 | #ifdef XTERM_COLOR_CHANGE |
878 | void |
878 | void |