… | |
… | |
252 | delete drawable; |
252 | delete drawable; |
253 | // destroy all windows |
253 | // destroy all windows |
254 | if (parent[0]) |
254 | if (parent[0]) |
255 | XDestroyWindow (xdisp, parent[0]); |
255 | XDestroyWindow (xdisp, parent[0]); |
256 | |
256 | |
|
|
257 | for (int i = 0; i < TOTAL_COLORS; i++) |
|
|
258 | if (ISSET_PIXCOLOR (i)) |
|
|
259 | { |
|
|
260 | pix_colors_focused [i].free (this); |
|
|
261 | #if OFF_FOCUS_FADING |
|
|
262 | pix_colors_unfocused [i].free (this); |
|
|
263 | #endif |
|
|
264 | } |
|
|
265 | |
257 | clear (); |
266 | clear (); |
258 | } |
267 | } |
259 | |
268 | |
260 | // TODO: free pixcolours, colours should become part of rxvt_display |
|
|
261 | delete pix_colors_focused; |
269 | delete pix_colors_focused; |
262 | #if OFF_FOCUS_FADING |
270 | #if OFF_FOCUS_FADING |
263 | delete pix_colors_unfocused; |
271 | delete pix_colors_unfocused; |
264 | #endif |
272 | #endif |
265 | |
273 | |
… | |
… | |
932 | |
940 | |
933 | #if OFF_FOCUS_FADING |
941 | #if OFF_FOCUS_FADING |
934 | if (rs[Rs_fade]) |
942 | if (rs[Rs_fade]) |
935 | { |
943 | { |
936 | rgba c; |
944 | rgba c; |
937 | pix_colors [Color_fade].get (this, c); |
945 | pix_colors [Color_fade].get (c); |
938 | pix_colors_focused [idx].fade (this, atoi (rs[Rs_fade]), pix_colors_unfocused [idx], c); |
946 | pix_colors_focused [idx].fade (this, atoi (rs[Rs_fade]), pix_colors_unfocused [idx], c); |
939 | } |
947 | } |
940 | #endif |
948 | #endif |
941 | |
949 | |
942 | /*TODO: handle Color_BD, scrollbar background, etc. */ |
950 | /*TODO: handle Color_BD, scrollbar background, etc. */ |
… | |
… | |
950 | #endif /* XTERM_COLOR_CHANGE */ |
958 | #endif /* XTERM_COLOR_CHANGE */ |
951 | |
959 | |
952 | void |
960 | void |
953 | rxvt_term::recolour_cursor () |
961 | rxvt_term::recolour_cursor () |
954 | { |
962 | { |
955 | XColor xcol[2]; |
963 | XColor fg, bg; |
956 | |
964 | |
957 | xcol[0].pixel = ISSET_PIXCOLOR (Color_pointer_fg) |
965 | (ISSET_PIXCOLOR (Color_pointer_fg) |
958 | ? pix_colors_focused[Color_pointer_fg] |
966 | ? pix_colors_focused[Color_pointer_fg] |
959 | : pix_colors_focused[Color_fg]; |
967 | : pix_colors_focused[Color_fg]).get (fg); |
|
|
968 | |
960 | xcol[1].pixel = ISSET_PIXCOLOR (Color_pointer_bg) |
969 | (ISSET_PIXCOLOR (Color_pointer_bg) |
961 | ? pix_colors_focused[Color_pointer_bg] |
970 | ? pix_colors_focused[Color_pointer_bg] |
962 | : pix_colors_focused[Color_bg]; |
971 | : pix_colors_focused[Color_bg]).get (bg); |
963 | |
972 | |
964 | XQueryColors (xdisp, cmap, xcol, 2); |
|
|
965 | XRecolorCursor (xdisp, TermWin_cursor, xcol + 0, xcol + 1); |
973 | XRecolorCursor (xdisp, TermWin_cursor, &fg, &bg); |
966 | } |
974 | } |
967 | |
975 | |
968 | /*----------------------------------------------------------------------*/ |
976 | /*----------------------------------------------------------------------*/ |
969 | /* |
977 | /* |
970 | * find if fg/bg matches any of the normal (low-intensity) colors |
978 | * find if fg/bg matches any of the normal (low-intensity) colors |
… | |
… | |
1006 | if (color.set (this, name)) |
1014 | if (color.set (this, name)) |
1007 | return true; |
1015 | return true; |
1008 | |
1016 | |
1009 | rxvt_warn ("can't get colour '%s', continuing without.\n", name); |
1017 | rxvt_warn ("can't get colour '%s', continuing without.\n", name); |
1010 | return false; |
1018 | return false; |
|
|
1019 | } |
|
|
1020 | |
|
|
1021 | void |
|
|
1022 | rxvt_term::alias_color (int dst, int src) |
|
|
1023 | { |
|
|
1024 | pix_colors[dst].set (this, rs[Rs_color + dst] = rs[Rs_color + src]); |
1011 | } |
1025 | } |
1012 | |
1026 | |
1013 | /* -------------------------------------------------------------------- * |
1027 | /* -------------------------------------------------------------------- * |
1014 | * - WINDOW RESIZING - * |
1028 | * - WINDOW RESIZING - * |
1015 | * -------------------------------------------------------------------- */ |
1029 | * -------------------------------------------------------------------- */ |
… | |
… | |
1094 | } |
1108 | } |
1095 | |
1109 | |
1096 | if (fix_screen || old_height == 0) |
1110 | if (fix_screen || old_height == 0) |
1097 | scr_reset (); |
1111 | scr_reset (); |
1098 | |
1112 | |
|
|
1113 | // TODO, with nvidia-8178, resizes kill the alpha channel, report if not fixed in newer version |
|
|
1114 | //scr_touch (false); |
|
|
1115 | |
1099 | #ifdef XPM_BACKGROUND |
1116 | #ifdef XPM_BACKGROUND |
1100 | if (pixmap) |
1117 | if (pixmap) |
1101 | scr_touch (false); |
1118 | scr_touch (false); |
1102 | #endif |
1119 | #endif |
1103 | |
1120 | |
… | |
… | |
1139 | #ifdef USE_XIM |
1156 | #ifdef USE_XIM |
1140 | |
1157 | |
1141 | void |
1158 | void |
1142 | rxvt_term::im_set_color (unsigned long &fg, unsigned long &bg) |
1159 | rxvt_term::im_set_color (unsigned long &fg, unsigned long &bg) |
1143 | { |
1160 | { |
1144 | fg = pix_colors[Color_fg]; |
1161 | fg = pix_colors [Color_fg]; |
1145 | bg = pix_colors[Color_bg]; |
1162 | bg = pix_colors [Color_bg]; |
1146 | } |
1163 | } |
1147 | |
1164 | |
1148 | void |
1165 | void |
1149 | rxvt_term::im_set_size (XRectangle &size) |
1166 | rxvt_term::im_set_size (XRectangle &size) |
1150 | { |
1167 | { |