diff options
Diffstat (limited to 'yapp/popwin.cpp')
-rw-r--r-- | yapp/popwin.cpp | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/yapp/popwin.cpp b/yapp/popwin.cpp index 8ff4619..9d1ba45 100644 --- a/yapp/popwin.cpp +++ b/yapp/popwin.cpp @@ -139,7 +139,7 @@ void BroadcastMessage(UINT msg, WPARAM wParam, LPARAM lParam) { }
struct PopupWindowData {
- PopupData pd;
+ PopupData *pd;
int new_x, new_y;
bool is_round, av_is_round, mouse_in, close_on_leave;
bool custom_col;
@@ -155,7 +155,7 @@ struct PopupWindowData { LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
PopupWindowData *pwd = (PopupWindowData *)GetWindowLong(hwnd, GWL_USERDATA);
PopupData *pd = 0;
- if(pwd) pd = &pwd->pd;
+ if(pwd) pd = pwd->pd;
switch(uMsg) {
case WM_CREATE:
@@ -163,13 +163,11 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa CREATESTRUCT *cs = (CREATESTRUCT *)lParam;
pwd = (PopupWindowData *)malloc(sizeof(PopupWindowData));
pd = (PopupData *)cs->lpCreateParams;
- pwd->pd = *pd;
- if(pd->pwzTitle) pwd->pd.pwzTitle = wcsdup(pd->pwzTitle);
- if(pd->pwzText) pwd->pd.pwzText = wcsdup(pd->pwzText);
+ pwd->pd = pd;
pwd->hNotify = 0;
- trimW(pwd->pd.pwzTitle);
- trimW(pwd->pd.pwzText);
+ trimW(pwd->pd->pwzTitle);
+ trimW(pwd->pd->pwzText);
pwd->is_round = options.round;
pwd->av_is_round = options.av_round;
@@ -525,8 +523,9 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa SendMessage(hwnd, PM_DIENOTIFY, 0, 0);
- if(pd->pwzTitle) free(pd->pwzTitle);
- if(pd->pwzText) free(pd->pwzText);
+ if(pd && pd->pwzTitle) free(pd->pwzTitle);
+ if(pd && pd->pwzText) free(pd->pwzText);
+ if(pd) free(pd);
free(pwd); pwd = 0; pd = 0;
SetWindowLong(hwnd, GWL_USERDATA, 0);
@@ -670,19 +669,10 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa case PUM_CHANGE:
{
KillTimer(hwnd, ID_CLOSETIMER);
- PopupData *pdn = (PopupData *)lParam;
- if(pd->pwzTitle) { free(pd->pwzTitle); pd->pwzTitle = 0; }
- if(pd->pwzText) { free(pd->pwzText); pd->pwzText = 0; }
-
- pwd->pd = *pdn;
- if(pdn->flags & PDF_UNICODE) {
- if(pdn->pwzTitle) pwd->pd.pwzTitle = wcsdup(pdn->pwzTitle);
- if(pdn->pwzText) pwd->pd.pwzText = wcsdup(pdn->pwzText);
- } else {
- pwd->pd.flags |= PDF_UNICODE;
- if(pd->pszTitle) pwd->pd.pwzTitle = a2w(pd->pszTitle);
- if(pd->pszText) pwd->pd.pwzText = a2w(pd->pszText);
- }
+ if(pd && pd->pwzTitle) free(pd->pwzTitle);
+ if(pd && pd->pwzText) free(pd->pwzText);
+ if(pd) free(pd);
+ pwd->pd = pd = (PopupData *)lParam;
if(pd->timeout != -1) {
if(pd->timeout == 0) {
|