diff --git a/base/applications/notepad/dialog.c b/base/applications/notepad/dialog.c index 3befb566503..7a0e0fac6cc 100644 --- a/base/applications/notepad/dialog.c +++ b/base/applications/notepad/dialog.c @@ -68,6 +68,13 @@ void UpdateWindowCaption(BOOL clearModifyAlert) TCHAR szCaption[MAX_STRING_LEN]; TCHAR szNotepad[MAX_STRING_LEN]; TCHAR szFilename[MAX_STRING_LEN]; + BOOL isModified = !!SendMessage(Globals.hEdit, EM_GETMODIFY, 0, 0); + + if (!clearModifyAlert && isModified == Globals.bWasModified) + { + /* We are in the same state as before, don't change the caption */ + return; + } /* Load the name of the application */ LoadString(Globals.hInstance, STRING_NOTEPAD, szNotepad, ARRAY_SIZE(szNotepad)); @@ -84,14 +91,17 @@ void UpdateWindowCaption(BOOL clearModifyAlert) { StringCbPrintf(szCaption, sizeof(szCaption), _T("%s - %s"), szFilename, szNotepad); + + Globals.bWasModified = FALSE; } else { - BOOL isModified = (SendMessage(Globals.hEdit, EM_GETMODIFY, 0, 0) ? TRUE : FALSE); - /* Update the caption based upon if the user has modified the contents of the file or not */ StringCbPrintf(szCaption, sizeof(szCaption), _T("%s%s - %s"), (isModified ? _T("*") : _T("")), szFilename, szNotepad); + + /* We will modify the caption below */ + Globals.bWasModified = isModified; } /* Update the window caption */ diff --git a/base/applications/notepad/main.h b/base/applications/notepad/main.h index 65a8782f909..349be218118 100644 --- a/base/applications/notepad/main.h +++ b/base/applications/notepad/main.h @@ -80,6 +80,7 @@ typedef struct FINDREPLACE find; WNDPROC EditProc; RECT main_rect; + BOOL bWasModified; } NOTEPAD_GLOBALS; extern NOTEPAD_GLOBALS Globals;