mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 13:45:50 +00:00
[NOTEPAD] Use wait cursor (#5659)
- Add WaitCursor helper function to display the wait cursor while heavy operation. - Manage the wait cursor by using a lock count. CORE-18837
This commit is contained in:
parent
7497f028f4
commit
0ef9cfb04e
3 changed files with 49 additions and 1 deletions
|
@ -111,6 +111,33 @@ void UpdateWindowCaption(BOOL clearModifyAlert)
|
||||||
SetWindowText(Globals.hMainWnd, szCaption);
|
SetWindowText(Globals.hMainWnd, szCaption);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID WaitCursor(BOOL bBegin)
|
||||||
|
{
|
||||||
|
static HCURSOR s_hWaitCursor = NULL;
|
||||||
|
static HCURSOR s_hOldCursor = NULL;
|
||||||
|
static INT s_nLock = 0;
|
||||||
|
|
||||||
|
if (bBegin)
|
||||||
|
{
|
||||||
|
if (s_nLock++ == 0)
|
||||||
|
{
|
||||||
|
if (s_hWaitCursor == NULL)
|
||||||
|
s_hWaitCursor = LoadCursor(NULL, IDC_WAIT);
|
||||||
|
s_hOldCursor = SetCursor(s_hWaitCursor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetCursor(s_hWaitCursor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (--s_nLock == 0)
|
||||||
|
SetCursor(s_hOldCursor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID DIALOG_StatusBarAlignParts(VOID)
|
VOID DIALOG_StatusBarAlignParts(VOID)
|
||||||
{
|
{
|
||||||
static const int defaultWidths[] = {120, 120, 120};
|
static const int defaultWidths[] = {120, 120, 120};
|
||||||
|
@ -220,11 +247,14 @@ static BOOL DoSaveFile(VOID)
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
DWORD cchText;
|
DWORD cchText;
|
||||||
|
|
||||||
|
WaitCursor(TRUE);
|
||||||
|
|
||||||
hFile = CreateFileW(Globals.szFileName, GENERIC_WRITE, FILE_SHARE_WRITE,
|
hFile = CreateFileW(Globals.szFileName, GENERIC_WRITE, FILE_SHARE_WRITE,
|
||||||
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
if (hFile == INVALID_HANDLE_VALUE)
|
if (hFile == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
ShowLastError();
|
ShowLastError();
|
||||||
|
WaitCursor(FALSE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,6 +289,7 @@ static BOOL DoSaveFile(VOID)
|
||||||
SetFileName(Globals.szFileName);
|
SetFileName(Globals.szFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WaitCursor(FALSE);
|
||||||
return bRet;
|
return bRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,6 +338,8 @@ VOID DoOpenFile(LPCTSTR szFileName)
|
||||||
if (!DoCloseFile())
|
if (!DoCloseFile())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
WaitCursor(TRUE);
|
||||||
|
|
||||||
hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
|
hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
|
||||||
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
if (hFile == INVALID_HANDLE_VALUE)
|
if (hFile == INVALID_HANDLE_VALUE)
|
||||||
|
@ -347,6 +380,7 @@ VOID DoOpenFile(LPCTSTR szFileName)
|
||||||
done:
|
done:
|
||||||
if (hFile != INVALID_HANDLE_VALUE)
|
if (hFile != INVALID_HANDLE_VALUE)
|
||||||
CloseHandle(hFile);
|
CloseHandle(hFile);
|
||||||
|
WaitCursor(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID DIALOG_FileNew(VOID)
|
VOID DIALOG_FileNew(VOID)
|
||||||
|
@ -355,6 +389,8 @@ VOID DIALOG_FileNew(VOID)
|
||||||
if (!DoCloseFile())
|
if (!DoCloseFile())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
WaitCursor(TRUE);
|
||||||
|
|
||||||
SetWindowText(Globals.hEdit, NULL);
|
SetWindowText(Globals.hEdit, NULL);
|
||||||
SendMessage(Globals.hEdit, EM_EMPTYUNDOBUFFER, 0, 0);
|
SendMessage(Globals.hEdit, EM_EMPTYUNDOBUFFER, 0, 0);
|
||||||
Globals.iEoln = EOLN_CRLF;
|
Globals.iEoln = EOLN_CRLF;
|
||||||
|
@ -362,13 +398,20 @@ VOID DIALOG_FileNew(VOID)
|
||||||
|
|
||||||
NOTEPAD_EnableSearchMenu();
|
NOTEPAD_EnableSearchMenu();
|
||||||
DIALOG_StatusBarUpdateAll();
|
DIALOG_StatusBarUpdateAll();
|
||||||
|
|
||||||
|
WaitCursor(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID DIALOG_FileNewWindow(VOID)
|
VOID DIALOG_FileNewWindow(VOID)
|
||||||
{
|
{
|
||||||
TCHAR pszNotepadExe[MAX_PATH];
|
TCHAR pszNotepadExe[MAX_PATH];
|
||||||
|
|
||||||
|
WaitCursor(TRUE);
|
||||||
|
|
||||||
GetModuleFileName(NULL, pszNotepadExe, _countof(pszNotepadExe));
|
GetModuleFileName(NULL, pszNotepadExe, _countof(pszNotepadExe));
|
||||||
ShellExecute(NULL, NULL, pszNotepadExe, NULL, NULL, SW_SHOWNORMAL);
|
ShellExecute(NULL, NULL, pszNotepadExe, NULL, NULL, SW_SHOWNORMAL);
|
||||||
|
|
||||||
|
WaitCursor(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID DIALOG_FileOpen(VOID)
|
VOID DIALOG_FileOpen(VOID)
|
||||||
|
|
|
@ -57,3 +57,4 @@ VOID DoOpenFile(LPCTSTR szFileName);
|
||||||
VOID DoShowHideStatusBar(VOID);
|
VOID DoShowHideStatusBar(VOID);
|
||||||
VOID DoCreateEditWindow(VOID);
|
VOID DoCreateEditWindow(VOID);
|
||||||
void UpdateWindowCaption(BOOL clearModifyAlert);
|
void UpdateWindowCaption(BOOL clearModifyAlert);
|
||||||
|
VOID WaitCursor(BOOL bBegin);
|
||||||
|
|
|
@ -433,6 +433,8 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
FINDREPLACE *pFindReplace = (FINDREPLACE *) lParam;
|
FINDREPLACE *pFindReplace = (FINDREPLACE *) lParam;
|
||||||
Globals.find = *(FINDREPLACE *) lParam;
|
Globals.find = *(FINDREPLACE *) lParam;
|
||||||
|
|
||||||
|
WaitCursor(TRUE);
|
||||||
|
|
||||||
if (pFindReplace->Flags & FR_FINDNEXT)
|
if (pFindReplace->Flags & FR_FINDNEXT)
|
||||||
NOTEPAD_FindNext(pFindReplace, FALSE, TRUE);
|
NOTEPAD_FindNext(pFindReplace, FALSE, TRUE);
|
||||||
else if (pFindReplace->Flags & FR_REPLACE)
|
else if (pFindReplace->Flags & FR_REPLACE)
|
||||||
|
@ -441,6 +443,8 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
NOTEPAD_ReplaceAll(pFindReplace);
|
NOTEPAD_ReplaceAll(pFindReplace);
|
||||||
else if (pFindReplace->Flags & FR_DIALOGTERM)
|
else if (pFindReplace->Flags & FR_DIALOGTERM)
|
||||||
NOTEPAD_FindTerm();
|
NOTEPAD_FindTerm();
|
||||||
|
|
||||||
|
WaitCursor(FALSE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -587,7 +591,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh
|
||||||
wndclass.lpfnWndProc = NOTEPAD_WndProc;
|
wndclass.lpfnWndProc = NOTEPAD_WndProc;
|
||||||
wndclass.hInstance = Globals.hInstance;
|
wndclass.hInstance = Globals.hInstance;
|
||||||
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_NPICON));
|
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_NPICON));
|
||||||
wndclass.hCursor = LoadCursor(0, IDC_ARROW);
|
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||||
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||||
wndclass.lpszMenuName = MAKEINTRESOURCE(MAIN_MENU);
|
wndclass.lpszMenuName = MAKEINTRESOURCE(MAIN_MENU);
|
||||||
wndclass.lpszClassName = className;
|
wndclass.lpszClassName = className;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue