Revision: 10231 https://osdn.net/projects/ttssh2/scm/svn/commits/10231 Author: zmatsuo Date: 2022-09-03 00:12:02 +0900 (Sat, 03 Sep 2022) Log Message: ----------- UseTextColor=on 時の動作を変更 - 描画時に参照する色を変更するようにした - 従来はテーブルの中身を変更していた Modified Paths: -------------- trunk/teraterm/teraterm/vtdisp.c -------------- next part -------------- Modified: trunk/teraterm/teraterm/vtdisp.c =================================================================== --- trunk/teraterm/teraterm/vtdisp.c 2022-09-02 15:11:51 UTC (rev 10230) +++ trunk/teraterm/teraterm/vtdisp.c 2022-09-02 15:12:02 UTC (rev 10231) @@ -1743,11 +1743,6 @@ for (i = IdBack ; i <= IdFore+8 ; i++) ANSIColor[i] = ts.ANSIColor[i]; - - if ((ts.ColorFlag & CF_USETEXTCOLOR)!=0) { - ANSIColor[IdBack ] = BGVTColor[1]; // use background color for "Black" - ANSIColor[IdFore ] = BGVTColor[0]; // use text color for "white" - } } void InitColorTable(void) @@ -2490,19 +2485,6 @@ /* Change caret shape */ ChangeCaret(); - if ((ts.ColorFlag & CF_USETEXTCOLOR)==0) - { - ANSIColor[IdFore ] = ts.ANSIColor[IdFore ]; - ANSIColor[IdBack ] = ts.ANSIColor[IdBack ]; - } - else { // use text (background) color for "white (black)" - ANSIColor[IdFore ] = ts.VTColor[0]; - ANSIColor[IdBack ] = ts.VTColor[1]; - - ANSIColor[IdFore ] = BGVTColor[0]; - ANSIColor[IdBack ] = BGVTColor[1]; - } - /* change background color */ DispChangeBackground(); } @@ -2760,6 +2742,26 @@ } } + // UseTextColor=on \x82̂Ƃ\xAB\x82̏\x88\x97\x9D + // \x94w\x8Ci\x90F(Back)\x82\xF0\x8Dl\x97\xB6\x82\xB9\x82\xB8\x82ɕ\xB6\x8E\x9A\x90F(Fore)\x82\xBE\x82\xAF\x82\xF0\x95ύX\x82\xB7\x82\xE9\x83A\x83v\x83\x8A\x82\xF0\x8Eg\x82\xC1\x82Ă\xA2\x82\xC4 + // \x95\xB6\x8E\x9A\x82\xAA\x8C\xA9\x82\xA6\x82Ȃ\xA2\x8F\xF3\x91ԂɂȂ\xC1\x82\xBD\x82\xE7\x92ʏ핶\x8E\x9A\x90F\x82\xA9\x94\xBD\x93]\x91\xAE\x90\xAB\x95\xB6\x8E\x9A\x90F\x82\xF0\x8Eg\x97p\x82\xB7\x82\xE9 + if ((ts.ColorFlag & CF_USETEXTCOLOR) !=0) { + if ((Attr2Flag & Attr2Fore) && (Attr2Flag & Attr2Back)) { + const int is_target_color = (Attr.Fore == IdFore || Attr.Fore == IdBack || Attr.Fore == 15); +// const int is_target_color = 1; + if (Attr.Fore == Attr.Back && is_target_color) { + if (!reverse) { + TextColor = BGVTColor[0]; + BackColor = BGVTColor[1]; + } + else { + TextColor = BGVTReverseColor[0]; + BackColor = BGVTReverseColor[1]; + } + } + } + } + // \x95`\x89掞(DrawStrW())\x82ɎQ\x8FƂ\xB7\x82\xE9 if (reverse) { BGReverseText = TRUE; @@ -3546,15 +3548,9 @@ switch (num) { case CS_VT_NORMALFG: BGVTColor[0] = color; - if ((ts.ColorFlag & CF_USETEXTCOLOR)!=0) { - ANSIColor[IdFore ] = BGVTColor[0]; // use text color for "white" - } break; case CS_VT_NORMALBG: BGVTColor[1] = color; - if ((ts.ColorFlag & CF_USETEXTCOLOR)!=0) { - ANSIColor[IdBack ] = BGVTColor[1]; // use background color for "Black" - } break; case CS_VT_BOLDFG: BGVTBoldColor[0] = color; break; case CS_VT_BOLDBG: BGVTBoldColor[1] = color; break; @@ -3598,15 +3594,9 @@ switch(num) { case CS_VT_NORMALFG: BGVTColor[0] = ts.VTColor[0]; - if ((ts.ColorFlag & CF_USETEXTCOLOR)!=0) { - ANSIColor[IdFore ] = ts.VTColor[0]; // use text color for "white" - } break; case CS_VT_NORMALBG: BGVTColor[1] = ts.VTColor[1]; - if ((ts.ColorFlag & CF_USETEXTCOLOR)!=0) { - ANSIColor[IdBack ] = ts.VTColor[1]; // use background color for "Black" - } break; case CS_VT_BOLDFG: BGVTBoldColor[0] = ts.VTBoldColor[0]; break; case CS_VT_BOLDBG: BGVTBoldColor[1] = ts.VTBoldColor[1]; break; @@ -3651,25 +3641,7 @@ DispSetNearestColors(0, 255, NULL); break; default: - if (num == IdBack) { - if (ts.ColorFlag & CF_USETEXTCOLOR) { - ANSIColor[IdBack] = BGVTColor[1]; // use background color for "Black" - } - else { - ANSIColor[IdBack] = ts.ANSIColor[IdBack]; - } - DispSetNearestColors(num, num, NULL); - } - else if (num == IdFore) { - if (ts.ColorFlag & CF_USETEXTCOLOR) { - ANSIColor[IdFore] = BGVTColor[0]; // use text color for "white" - } - else { - ANSIColor[IdFore] = ts.ANSIColor[IdFore]; - } - DispSetNearestColors(num, num, NULL); - } - else if (num <= 15) { + if (num <= 15) { ANSIColor[num] = ts.ANSIColor[num]; DispSetNearestColors(num, num, NULL); }