diff options
Diffstat (limited to 'plugins/SmileyAdd/src')
| -rw-r--r-- | plugins/SmileyAdd/src/AniSmileyObject.cpp | 6 | ||||
| -rw-r--r-- | plugins/SmileyAdd/src/dlgboxsubclass.cpp | 4 | ||||
| -rw-r--r-- | plugins/SmileyAdd/src/general.h | 4 | ||||
| -rw-r--r-- | plugins/SmileyAdd/src/richcall.cpp | 68 | 
4 files changed, 37 insertions, 45 deletions
diff --git a/plugins/SmileyAdd/src/AniSmileyObject.cpp b/plugins/SmileyAdd/src/AniSmileyObject.cpp index 42a63d3549..0412aa5cd8 100644 --- a/plugins/SmileyAdd/src/AniSmileyObject.cpp +++ b/plugins/SmileyAdd/src/AniSmileyObject.cpp @@ -440,11 +440,13 @@ static void CALLBACK timerProc(HWND, UINT, UINT_PTR, DWORD)  void DestroyAniSmileys(void)
  {
 -	if (timerId && (timerId+1)) 
 -	{
 +	if (timerId && (timerId+1)) {
  		KillTimer(NULL, timerId);
  		timerId = 0;
  	}
 +
 +	for (int i=0; i < regAniSmileys.getCount(); i++)
 +		delete regAniSmileys[i];
  	regAniSmileys.destroy();
  }
 diff --git a/plugins/SmileyAdd/src/dlgboxsubclass.cpp b/plugins/SmileyAdd/src/dlgboxsubclass.cpp index 9184bf10ab..656c7130cf 100644 --- a/plugins/SmileyAdd/src/dlgboxsubclass.cpp +++ b/plugins/SmileyAdd/src/dlgboxsubclass.cpp @@ -506,8 +506,8 @@ static int MsgDlgHook(WPARAM, LPARAM lParam)  	case MSG_WINDOW_EVT_CLOSE:
  		if (wndEvtData->cbSize >= sizeof(MessageWindowEventData) && wndEvtData->hwndLog)
  		{
 -			CloseRichCallback(wndEvtData->hwndLog, true);
 -			CloseRichOwnerCallback(wndEvtData->hwndWindow, true);
 +			CloseRichCallback(wndEvtData->hwndLog);
 +			CloseRichOwnerCallback(wndEvtData->hwndWindow);
  		}
  		break;
  	}
 diff --git a/plugins/SmileyAdd/src/general.h b/plugins/SmileyAdd/src/general.h index 8cc13c5619..93d9a2e7d6 100644 --- a/plugins/SmileyAdd/src/general.h +++ b/plugins/SmileyAdd/src/general.h @@ -216,8 +216,8 @@ void DestroyGdiPlus(void);  void ReportError(const TCHAR* errmsg);
  HICON GetDefaultIcon(bool copy = true);
 -void CloseRichCallback(HWND hwnd, bool force);
 -void CloseRichOwnerCallback(HWND hwnd, bool force);
 +void CloseRichCallback(HWND hwnd);
 +void CloseRichOwnerCallback(HWND hwnd);
  bool SetRichCallback(HWND hwnd, HANDLE hContact, bool subany, bool subnew);
  void SetRichOwnerCallback(HWND hwnd, HWND hwndInput, HWND hwndLog);
  void ProcessAllInputAreas(bool restoreText);
 diff --git a/plugins/SmileyAdd/src/richcall.cpp b/plugins/SmileyAdd/src/richcall.cpp index 463276baf4..23c1383f9f 100644 --- a/plugins/SmileyAdd/src/richcall.cpp +++ b/plugins/SmileyAdd/src/richcall.cpp @@ -217,7 +217,7 @@ static LRESULT CALLBACK RichEditSubclass(HWND hwnd, UINT uMsg, WPARAM wParam, LP  	switch(uMsg) {
  	case WM_DESTROY:
 -		CloseRichCallback(hwnd, false);
 +		CloseRichCallback(hwnd);
  		break;
  	case WM_COPY:
 @@ -261,10 +261,6 @@ static LRESULT CALLBACK RichEditSubclass(HWND hwnd, UINT uMsg, WPARAM wParam, LP  	LRESULT result = mir_callNextSubclass(hwnd, RichEditSubclass, uMsg, wParam, lParam); 
  	switch(uMsg) {
 -	case WM_DESTROY:
 -		CloseRichCallback(hwnd, true);
 -		break;
 -
  	case WM_MOUSEMOVE:
  		SetTooltip(LOWORD(lParam), HIWORD(lParam), hwnd, rdt);
  		break;
 @@ -348,16 +344,14 @@ static LRESULT CALLBACK RichEditSubclass(HWND hwnd, UINT uMsg, WPARAM wParam, LP  	return result;
  }
 -void CloseRichCallback(HWND hwnd, bool force)
 +void CloseRichCallback(HWND hwnd)
  {
  	int ind = g_RichEditList.getIndex((RichEditData*)&hwnd);
  	if ( ind != -1 ) {
  		RichEditData* rdt = g_RichEditList[ind];
 -		if (force) {
 -			if (rdt->hToolTip) DestroyWindow(rdt->hToolTip);
 -			delete rdt;
 -			g_RichEditList.remove(ind);
 -		}
 +		if (rdt->hToolTip) DestroyWindow(rdt->hToolTip);
 +		delete rdt;
 +		g_RichEditList.remove(ind);
  	}
  }
 @@ -400,6 +394,17 @@ static LRESULT CALLBACK RichEditOwnerSubclass(HWND hwnd, UINT uMsg, WPARAM wPara  		return 0;
  	switch(uMsg) {
 +	case WM_COMMAND:
 +		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == 1624) {
 +			RichEditData* rdt = g_RichEditList.find((RichEditData*)&rdto->hwndInput);
 +			if (rdt && (!rdt->inputarea || opt.InputSmileys)) {
 +				rdt->dontReplace = true;
 +				CHARRANGE sel = allsel;
 +				ReplaceSmileysWithText(rdt->hwnd, sel, false);
 +			}
 +		}
 +		break;
 +
  	case WM_DESTROY:
  		if ( !Miranda_Terminated()) {
  			CHARRANGE sel = allsel;
 @@ -408,36 +413,21 @@ static LRESULT CALLBACK RichEditOwnerSubclass(HWND hwnd, UINT uMsg, WPARAM wPara  			if (rdto->hwndLog)
  				ReplaceSmileysWithText(rdto->hwndLog, sel, false);
  		}
 -		else {
 -			RichEditData* rdt = g_RichEditList.find((RichEditData*)&rdto->hwndInput);
 -			if (rdt && (!rdt->inputarea || opt.InputSmileys)) {
 -				CHARRANGE sel = allsel;
 -				rdt->dontReplace = true;
 -				ReplaceSmileysWithText(rdt->hwnd, sel, false);
 -			}
 -		}
 -		CloseRichOwnerCallback(hwnd, false);
 -		break;
 -	case WM_COMMAND:
 -		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == 1624) {
 -			RichEditData* rdt = g_RichEditList.find((RichEditData*)&rdto->hwndInput);
 -			if (rdt && (!rdt->inputarea || opt.InputSmileys)) {
 -				rdt->dontReplace = true;
 -				CHARRANGE sel = allsel;
 -				ReplaceSmileysWithText(rdt->hwnd, sel, false);
 -			}
 +		RichEditData* rdt = g_RichEditList.find((RichEditData*)&rdto->hwndInput);
 +		if (rdt && (!rdt->inputarea || opt.InputSmileys)) {
 +			CHARRANGE sel = allsel;
 +			rdt->dontReplace = true;
 +			ReplaceSmileysWithText(rdt->hwnd, sel, false);
  		}
 +
 +		CloseRichOwnerCallback(hwnd);
  		break;
  	}
  	LRESULT result = mir_callNextSubclass(hwnd, RichEditOwnerSubclass, uMsg, wParam, lParam); 
  	switch(uMsg) {
 -	case WM_DESTROY:
 -		CloseRichOwnerCallback(hwnd, true);
 -		break;
 -
  	case WM_COMMAND:
  		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == 1624) {
  			RichEditData* rdt = g_RichEditList.find((RichEditData*)&rdto->hwndInput);
 @@ -452,16 +442,16 @@ static LRESULT CALLBACK RichEditOwnerSubclass(HWND hwnd, UINT uMsg, WPARAM wPara  	return result;
  }
 -void CloseRichOwnerCallback(HWND hwnd, bool force)
 +void CloseRichOwnerCallback(HWND hwnd)
  {
  	int ind = g_RichEditOwnerList.getIndex((RichEditOwnerData*)&hwnd);
  	if (ind == -1)
  		return;
  	RichEditOwnerData* rdto = g_RichEditOwnerList[ind];
 -	if (rdto && force) {
 -		CloseRichCallback(rdto->hwndInput, true);
 -		CloseRichCallback(rdto->hwndLog, true);
 +	if (rdto) {
 +		CloseRichCallback(rdto->hwndInput);
 +		CloseRichCallback(rdto->hwndLog);
  		delete rdto;
  		g_RichEditOwnerList.remove(ind);
 @@ -504,10 +494,10 @@ void  RichEditData_Destroy(void)  {
  	int i;
  	for (i=g_RichEditList.getCount(); i--; ) 
 -		CloseRichCallback(g_RichEditList[i]->hwnd, true);
 +		CloseRichCallback(g_RichEditList[i]->hwnd);
  	g_RichEditList.destroy();
  	for (i=g_RichEditOwnerList.getCount(); i--; ) 
 -		CloseRichOwnerCallback(g_RichEditOwnerList[i]->hwnd, true);
 +		CloseRichOwnerCallback(g_RichEditOwnerList[i]->hwnd);
  	g_RichEditOwnerList.destroy();
  }
  | 
