Skip to content

Commit 4b096cd

Browse files
authored
Merge pull request sakura-editor#2162 from beru/suppress_broadcast_WM_TAB_WINDOW_NOTIFY
ファイル名変更通知ブロードキャストの頻度を抑制
2 parents 976f404 + 2efc31b commit 4b096cd

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

sakura_core/env/CAppNodeManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct EditNode {
2121
int m_nGroup; //!< グループID //@@@ 2007.06.20 ryoji
2222
HWND m_hWnd;
2323
int m_nId; //!< 無題Id
24-
WCHAR m_szTabCaption[_MAX_PATH]; //!< タブウインドウ用:キャプション名 //@@@ 2003.05.31 MIK
24+
WCHAR m_szTabCaption[_MAX_PATH]{}; //!< タブウインドウ用:キャプション名 //@@@ 2003.05.31 MIK
2525
SFilePath m_szFilePath; //!< タブウインドウ用:ファイル名 //@@@ 2006.01.28 ryoji
2626
bool m_bIsGrep; //!< Grepのウィンドウか //@@@ 2006.01.28 ryoji
2727
UINT m_showCmdRestore; //!< 元のサイズに戻すときのサイズ種別 //@@@ 2007.06.20 ryoji

sakura_core/window/CEditWnd.cpp

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4006,29 +4006,42 @@ void CEditWnd::ChangeFileNameNotify( const WCHAR* pszTabCaption, const WCHAR* _p
40064006

40074007
CRecentEditNode cRecentEditNode;
40084008
int nIndex = cRecentEditNode.FindItemByHwnd( GetHwnd() );
4009+
bool changed = false;
40094010
if( -1 != nIndex )
40104011
{
40114012
EditNode *p = cRecentEditNode.GetItem( nIndex );
40124013
if( p )
40134014
{
4014-
wcsncpy_s( p->m_szTabCaption, _countof(p->m_szTabCaption), pszTabCaption, _TRUNCATE );
4015+
decltype(p->m_szTabCaption) caption;
4016+
wcsncpy_s(caption, _countof(caption), pszTabCaption, _TRUNCATE);
4017+
if (wcscmp(caption, p->m_szTabCaption) != 0) {
4018+
wcscpy_s(p->m_szTabCaption, caption);
4019+
changed = true;
4020+
}
40154021

40164022
// 2006.01.28 ryoji ファイル名、Grepモード追加
4017-
wcsncpy_s( p->m_szFilePath, _countof2(p->m_szFilePath), pszFilePath, _TRUNCATE );
4023+
decltype(p->m_szFilePath) filePath;
4024+
wcsncpy_s(filePath, _countof2(filePath), pszFilePath, _TRUNCATE );
4025+
if (wcscmp(filePath, p->m_szFilePath) != 0) {
4026+
p->m_szFilePath = filePath;
4027+
changed = true;
4028+
}
40184029

40194030
p->m_bIsGrep = bIsGrep;
40204031
}
40214032
}
40224033
cRecentEditNode.Terminate();
40234034

4024-
//ファイル名変更通知をブロードキャストする。
4025-
int nGroup = CAppNodeManager::getInstance()->GetEditNode( GetHwnd() )->GetGroup();
4026-
CAppNodeGroupHandle(nGroup).PostMessageToAllEditors(
4027-
MYWM_TAB_WINDOW_NOTIFY,
4028-
(WPARAM)TWNT_FILE,
4029-
(LPARAM)GetHwnd(),
4030-
GetHwnd()
4031-
);
4035+
if (changed) {
4036+
//ファイル名変更通知をブロードキャストする。
4037+
int nGroup = CAppNodeManager::getInstance()->GetEditNode( GetHwnd() )->GetGroup();
4038+
CAppNodeGroupHandle(nGroup).PostMessageToAllEditors(
4039+
MYWM_TAB_WINDOW_NOTIFY,
4040+
(WPARAM)TWNT_FILE,
4041+
(LPARAM)GetHwnd(),
4042+
GetHwnd()
4043+
);
4044+
}
40324045

40334046
return;
40344047
}

0 commit comments

Comments
 (0)