[BUG_FIXED] (Author: Jocelyn Legault) Fix a heap corruption of ColourPicker.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@681 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
7107532531
commit
c8f5903ce5
@ -348,7 +348,7 @@ void RegExtDlg::writeNppPath()
|
||||
TCHAR nppPath[MAX_PATH];
|
||||
::GetModuleFileName(_hInst, nppPath, MAX_PATH);
|
||||
|
||||
TCHAR nppPathParam[256] = TEXT("\"");
|
||||
TCHAR nppPathParam[MAX_PATH] = TEXT("\"");
|
||||
lstrcat(lstrcat(nppPathParam, nppPath), TEXT("\" \"%1\""));
|
||||
|
||||
::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppPathParam, (lstrlen(nppPathParam)+1)*sizeof(TCHAR));
|
||||
@ -377,7 +377,7 @@ void RegExtDlg::writeNppPath()
|
||||
TCHAR nppPath[MAX_PATH];
|
||||
::GetModuleFileName(_hInst, nppPath, MAX_PATH);
|
||||
|
||||
TCHAR nppPathParam[256] = TEXT("\"");
|
||||
TCHAR nppPathParam[MAX_PATH] = TEXT("\"");
|
||||
lstrcat(lstrcat(nppPathParam, nppPath), TEXT("\",0"));
|
||||
|
||||
::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppPathParam, (lstrlen(nppPathParam)+1)*sizeof(TCHAR));
|
||||
|
@ -1232,7 +1232,7 @@ bool FindReplaceDlg::processFindNext(const TCHAR *txt2find, const FindOption *op
|
||||
int flags = Searching::buildSearchFlags(pOptions);
|
||||
|
||||
(*_ppEditView)->execute(SCI_SETSEARCHFLAGS, flags);
|
||||
//::SendMessageA(_hParent, WM_SETTEXT, 0, (LPARAM)pText);
|
||||
|
||||
int posFind = (*_ppEditView)->searchInTarget(pText, stringSizeFind, startPosition, endPosition);
|
||||
if (posFind == -1) //no match found in target, check if a new target should be used
|
||||
{
|
||||
|
@ -45,6 +45,16 @@ void ColourPicker::init(HINSTANCE hInst, HWND parent)
|
||||
|
||||
}
|
||||
|
||||
void ColourPicker::destroy()
|
||||
{
|
||||
if (_pColourPopup)
|
||||
{
|
||||
delete _pColourPopup;
|
||||
_pColourPopup = NULL;
|
||||
}
|
||||
::DestroyWindow(_hSelf);
|
||||
}
|
||||
|
||||
void ColourPicker::drawBackground(HDC hDC)
|
||||
{
|
||||
RECT rc;
|
||||
@ -93,22 +103,26 @@ LRESULT ColourPicker::runProc(UINT Message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
case WM_LBUTTONDBLCLK :
|
||||
case WM_LBUTTONDOWN :
|
||||
{
|
||||
if (!_pColourPopup)
|
||||
{
|
||||
RECT rc;
|
||||
POINT p;
|
||||
|
||||
Window::getClientRect(rc);
|
||||
::InflateRect(&rc, -2, -2);
|
||||
p.x = rc.left;
|
||||
p.y = rc.top + rc.bottom;
|
||||
|
||||
::ClientToScreen(_hSelf, &p);
|
||||
|
||||
if (!_pColourPopup)
|
||||
{
|
||||
_pColourPopup = new ColourPopup(_currentColour);
|
||||
_pColourPopup->init(_hInst, _hSelf);
|
||||
_pColourPopup->doDialog(p);
|
||||
}
|
||||
else
|
||||
{
|
||||
_pColourPopup->doDialog(p);
|
||||
_pColourPopup->display(true);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
case WM_RBUTTONDOWN:
|
||||
@ -141,9 +155,7 @@ LRESULT ColourPicker::runProc(UINT Message, WPARAM wParam, LPARAM lParam)
|
||||
_currentColour = (COLORREF)wParam;
|
||||
redraw();
|
||||
|
||||
_pColourPopup->destroy();
|
||||
delete _pColourPopup;
|
||||
_pColourPopup = NULL;
|
||||
_pColourPopup->display(false);
|
||||
::SendMessage(_hParent, WM_COMMAND, MAKELONG(0, CPN_COLOURPICKED), (LPARAM)_hSelf);
|
||||
return TRUE;
|
||||
}
|
||||
@ -159,18 +171,8 @@ LRESULT ColourPicker::runProc(UINT Message, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
|
||||
case WM_PICKUP_CANCEL :
|
||||
case WM_DESTROY :
|
||||
{
|
||||
if (_pColourPopup)
|
||||
{
|
||||
_pColourPopup->destroy();
|
||||
delete _pColourPopup;
|
||||
_pColourPopup = NULL;
|
||||
|
||||
_pColourPopup->display(false);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default :
|
||||
return ::CallWindowProc(_buttonDefaultProc, _hSelf, Message, wParam, lParam);
|
||||
|
@ -22,7 +22,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
class ColourPopup;
|
||||
|
||||
//#define CP_CLASS_NAME "colourPickerButton"
|
||||
#define CPN_COLOURPICKED (BN_CLICKED)
|
||||
|
||||
class ColourPicker : public Window
|
||||
@ -31,16 +30,12 @@ public :
|
||||
ColourPicker() : Window(), _currentColour(RGB(0xFF, 0x00, 0x00)), _pColourPopup(NULL), _isEnabled(true) {};
|
||||
~ColourPicker(){};
|
||||
virtual void init(HINSTANCE hInst, HWND parent);
|
||||
virtual void destroy() {
|
||||
DestroyWindow(_hSelf);
|
||||
};
|
||||
virtual void destroy();
|
||||
void setColour(COLORREF c) {
|
||||
_currentColour = c;
|
||||
//drawSelf();
|
||||
};
|
||||
|
||||
COLORREF getColour() const {return _currentColour;};
|
||||
|
||||
bool isEnabled() {return _isEnabled;};
|
||||
void setEnabled(bool enabled) {_isEnabled = enabled;};
|
||||
|
||||
|
@ -87,10 +87,7 @@ BOOL CALLBACK ColourPopup::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
|
||||
{
|
||||
::SendDlgItemMessage(_hSelf, IDC_COLOUR_LIST, LB_ADDSTRING, nColor, (LPARAM) "");
|
||||
::SendDlgItemMessage(_hSelf, IDC_COLOUR_LIST, LB_SETITEMDATA , nColor, (LPARAM) colourItems[nColor]);
|
||||
//if (g_bgColor == colourItems[nColor])
|
||||
//::SendDlgItemMessage(_hSelf, IDC_COLOUR_LIST, LB_SETCURSEL, nColor, 0);
|
||||
}
|
||||
//::SetCapture(_hSelf);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user