Skip to content

Commit

Permalink
キーワードヘルプの説明文に"\n"を表示できるようにする
Browse files Browse the repository at this point in the history
  • Loading branch information
berryzplus committed Sep 12, 2020
1 parent 17bcab7 commit 803c8d9
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions sakura_core/window/CTipWnd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@

#include "StdAfx.h"
#include "CTipWnd.h"

#include <string>
#include <regex>

#include "env/CShareData.h"
#include "env/DLLSHAREDATA.h"
#include "util/window.h"
Expand Down Expand Up @@ -151,6 +155,16 @@ void CTipWnd::ComputeWindowSize(
const int cx4 = DpiScaleX( 4 );
const int cy4 = DpiScaleY( 4 );

std::wregex re1( LR"(([^\\])\\n)" );
std::wregex re2( LR"((\\)\\)" );
if( m_cInfo.IsValid()
&& ( std::regex_search( m_cInfo.GetStringPtr(), re1 ) || std::regex_search( m_cInfo.GetStringPtr(), re2 ) ) ){
auto text = std::regex_replace( m_cInfo.GetStringPtr(), re1, L"$1\n" );
text = std::regex_replace( text, re1, L"$1\n" );
text = std::regex_replace( text, re2, L"$1" );
m_cInfo.SetString( text.c_str(), text.length() );
}

// 計測対象をメンバ変数からローカル変数に取得
const WCHAR* pszText = m_cInfo.GetStringPtr();
const size_t cchText = m_cInfo.GetStringLength();
Expand All @@ -166,7 +180,7 @@ void CTipWnd::ComputeWindowSize(
const bool isEndOfText = ( pszText[i] == '\0' );
// iの位置にNUL終端、または"\n"がある場合
if ( isEndOfText
|| ( i + 1 < cchText && pszText[i] == '\\' && pszText[i + 1] == 'n' ) ) {
|| pszText[i] == '\n' ) {
// 計測結果を格納する矩形
CMyRect rc;
// 計測対象の文字列がブランクでない場合
Expand Down Expand Up @@ -197,7 +211,7 @@ void CTipWnd::ComputeWindowSize(
}

// 次の行の開始位置を設定する
nLineBgn = i + 2; // "\\n" の文字数
nLineBgn = i + 1; // "\n" の文字数
i = nLineBgn;
}else{
// 現在位置の文字がTCHAR単位で何文字に当たるか計算してインデックスを進める
Expand Down Expand Up @@ -247,7 +261,7 @@ void CTipWnd::DrawTipText(
const bool isEndOfText = ( pszText[i] == '\0' );
// iの位置にNUL終端、または"\n"がある場合
if ( isEndOfText
|| ( i + 1 < cchText && pszText[i] == '\\' && pszText[i + 1] == 'n' ) ) {
|| pszText[i] == '\n' ) {
int nHeight;
// 計測対象の文字列がブランクでない場合
if ( 0 < i - nLineBgn ) {
Expand All @@ -269,7 +283,7 @@ void CTipWnd::DrawTipText(
}

// 次の行の開始位置を設定する
nLineBgn = i + 2; // "\\n" の文字数
nLineBgn = i + 1; // "\n" の文字数
i = nLineBgn;
}else{
// 現在位置の文字がTCHAR単位で何文字に当たるか計算してインデックスを進める
Expand Down

0 comments on commit 803c8d9

Please sign in to comment.