[BUG_FIXED] Fix systemtray close crash bug.

[CHANGE_BEHAVIOUR] Change systemtray feature behaviour.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@560 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
Don Ho 2009-11-12 22:29:51 +00:00
parent 1e41a66293
commit bdbb2711e1
3 changed files with 60 additions and 64 deletions

View File

@ -393,7 +393,7 @@ void Notepad_plus::destroy()
bool Notepad_plus::saveGUIParams() bool Notepad_plus::saveGUIParams()
{ {
NppGUI & nppGUI = (NppGUI &)(NppParameters::getInstance())->getNppGUI(); NppGUI & nppGUI = (NppGUI &)(NppParameters::getInstance())->getNppGUI();
nppGUI._statusBarShow = _statusBar.isVisible(); //nppGUI._statusBarShow = _statusBar.isVisible();
nppGUI._toolbarShow = _rebarTop.getIDVisible(REBAR_BAR_TOOLBAR); nppGUI._toolbarShow = _rebarTop.getIDVisible(REBAR_BAR_TOOLBAR);
nppGUI._toolBarStatus = _toolBar.getState(); nppGUI._toolBarStatus = _toolBar.getState();
@ -9204,10 +9204,14 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
case WM_QUERYENDSESSION: case WM_QUERYENDSESSION:
case WM_CLOSE: case WM_CLOSE:
{ {
if (!_isPrelaunch) if (_isPrelaunch)
{ {
_pTrayIco->doTrayIcon(REMOVE); SendMessage(_hSelf, WM_SYSCOMMAND, SC_MINIMIZE, 0);
} }
else
{
if (_pTrayIco)
_pTrayIco->doTrayIcon(REMOVE);
const NppGUI & nppgui = pNppParam->getNppGUI(); const NppGUI & nppgui = pNppParam->getNppGUI();
Session currentSession; Session currentSession;
@ -9256,18 +9260,9 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
if (nppgui._rememberLastSession && _rememberThisSession) if (nppgui._rememberLastSession && _rememberThisSession)
saveSession(currentSession); saveSession(currentSession);
if (!_isPrelaunch)
{
//Sends WM_DESTROY, Notepad++ will end //Sends WM_DESTROY, Notepad++ will end
::DestroyWindow(hwnd); ::DestroyWindow(hwnd);
} }
else
{
SendMessage(_hSelf, WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
return TRUE; return TRUE;
} }
@ -9282,7 +9277,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
case WM_SYSCOMMAND: case WM_SYSCOMMAND:
{ {
NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI()); NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI());
if ((nppgui._isMinimizedToTray) && (wParam == SC_MINIMIZE)) if ((nppgui._isMinimizedToTray || _isPrelaunch) && (wParam == SC_MINIMIZE))
{ {
if (!_pTrayIco) if (!_pTrayIco)
_pTrayIco = new trayIconControler(_hSelf, IDI_M30ICON, IDC_MINIMIZED_TRAY, ::LoadIcon(_hInst, MAKEINTRESOURCE(IDI_M30ICON)), TEXT("")); _pTrayIco = new trayIconControler(_hSelf, IDI_M30ICON, IDC_MINIMIZED_TRAY, ::LoadIcon(_hInst, MAKEINTRESOURCE(IDI_M30ICON)), TEXT(""));

View File

@ -164,6 +164,7 @@ notepad++ [--help] [-multiInst] [-noPlugins] [-lLanguage] [-nLineNumber] [-cColu
-systemtray : Launch Notepad++ directly in system tray\r\ -systemtray : Launch Notepad++ directly in system tray\r\
fullFilePathName : file name to open (absolute or relative path name)\r\ fullFilePathName : file name to open (absolute or relative path name)\r\
"); ");
void doException(Notepad_plus & notepad_plus_plus); void doException(Notepad_plus & notepad_plus_plus);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)