From f27a8d3a1effc516fff4f29ac5d798330a0a1afb Mon Sep 17 00:00:00 2001 From: katsuhisa yuasa Date: Sat, 3 Apr 2021 08:50:25 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=A1=E3=83=A2=E3=83=AADC=E3=82=92=E5=88=A9?= =?UTF-8?q?=E7=94=A8=E3=81=97=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E3=81=AF?= =?UTF-8?q?=E3=82=A2=E3=83=B3=E3=83=80=E3=83=BC=E3=83=A9=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E6=8F=8F=E7=94=BB=E3=82=92=E8=A1=8C=E6=8F=8F=E7=94=BB=E3=81=AE?= =?UTF-8?q?=E7=9B=B4=E5=BE=8C=E3=81=AB=E8=A1=8C=E3=81=86=E4=BA=8B=E3=81=A7?= =?UTF-8?q?=E3=81=A1=E3=82=89=E3=81=A4=E3=81=8D=E3=82=92=E6=8A=91=E3=81=88?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/view/CEditView_Paint.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/sakura_core/view/CEditView_Paint.cpp b/sakura_core/view/CEditView_Paint.cpp index f5e32be6f8..f3561db0fd 100644 --- a/sakura_core/view/CEditView_Paint.cpp +++ b/sakura_core/view/CEditView_Paint.cpp @@ -780,6 +780,7 @@ void CEditView::OnPaint2( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp sPos.ForwardLayoutLineRef(1); //レイアウト行++ } }else{ + auto caretY = GetCaret().GetCaretLayoutPos().GetY2(); SColorStrategyInfo sInfo(gr); sInfo.m_pDispPos = &sPos; sInfo.m_pcView = this; @@ -788,6 +789,8 @@ void CEditView::OnPaint2( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp //描画X位置リセット sPos.ResetDrawCol(); + auto nLayoutLine = sPos.GetLayoutLineRef(); + //1行描画 bool bDispResult = DrawLogicLine( &sInfo, @@ -812,6 +815,14 @@ void CEditView::OnPaint2( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp DeleteObject(hdcBgImg); } } + // メモリDCを利用しない場合はアンダーライン描画を行描画の直後に行う事でちらつきを抑える + if (!bUseMemoryDC && nLayoutLine == caretY) + { + if (m_pcEditWnd->GetActivePane() == m_nMyIndex) { + /* アクティブペインは、アンダーライン描画 */ + GetCaret().m_cUnderLine.CaretUnderLineON(true, false); + } + } } } @@ -844,16 +855,15 @@ void CEditView::OnPaint2( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp pPs->rcPaint.top, SRCCOPY ); + // From Here 2007.09.09 Moca 互換BMPによる画面バッファ + // アンダーライン描画をメモリDCからのコピー前処理から後に移動 + if ( m_pcEditWnd->GetActivePane() == m_nMyIndex ){ + /* アクティブペインは、アンダーライン描画 */ + GetCaret().m_cUnderLine.CaretUnderLineON( true, false ); + } + // To Here 2007.09.09 Moca } - // From Here 2007.09.09 Moca 互換BMPによる画面バッファ - // アンダーライン描画をメモリDCからのコピー前処理から後に移動 - if ( m_pcEditWnd->GetActivePane() == m_nMyIndex ){ - /* アクティブペインは、アンダーライン描画 */ - GetCaret().m_cUnderLine.CaretUnderLineON( true, false ); - } - // To Here 2007.09.09 Moca - /* 03/02/18 対括弧の強調表示(描画) ai */ DrawBracketPair( true );