From 6429ab2452ac483e2f527753ce1d050a4919943f Mon Sep 17 00:00:00 2001 From: eccles Date: Mon, 12 Jan 2004 23:23:36 +0000 Subject: [PATCH] Now ignores WM_COMMAND messages received while the dialog is in the process of being created. git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3388 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/InstallOptions/InstallerOptions.cpp | 26 +++++++++++--------- Plugins/InstallOptions.dll | Bin 12288 -> 12288 bytes 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp index f456f8b8..ff1fdd08 100644 --- a/Contrib/InstallOptions/InstallerOptions.cpp +++ b/Contrib/InstallOptions/InstallerOptions.cpp @@ -30,15 +30,16 @@ void *WINAPI MALLOC(int len) { return (void*)GlobalAlloc(GPTR,len); } void WINAPI FREE(void *d) { if (d) GlobalFree((HGLOBAL)d); } -static int WINAPI popstring(char *str) +void WINAPI popstring(char *str) { - stack_t *th; - if (!g_stacktop || !*g_stacktop) return 1; - th=(*g_stacktop); - if (str) lstrcpy(str,th->text); - *g_stacktop = th->next; - FREE(th); - return 0; + if (g_stacktop && *g_stacktop) + { + stack_t *th = *g_stacktop; + *g_stacktop = th->next; + if (str) + lstrcpy(str, th->text); + FREE(th); + } } #define strcpy(x,y) lstrcpy(x,y) @@ -558,7 +559,8 @@ LRESULT WINAPI WMCommandProc(HWND hWnd, UINT id, HWND hwndCtl, UINT codeNotify) { char szBrowsePath[MAX_PATH]; int nIdx = FindControlIdx(id); - if (nIdx < 0) + // Ignore if the dialog is in the process of being created + if (g_done || nIdx < 0) break; if (pFields[nIdx].nType == FIELD_BROWSEBUTTON) --nIdx; @@ -870,6 +872,9 @@ int WINAPI createCfgDlg() HFONT hFont = (HFONT)mySendMessage(mainwnd, WM_GETFONT, 0, 0); + // Prevent WM_COMMANDs from being processed while we are building + g_done = 1; + RECT dialog_r; int mainWndWidth, mainWndHeight; hConfigWindow=CreateDialog(m_hInstance,MAKEINTRESOURCE(IDD_DIALOG1),mainwnd,cfgDlgProc); @@ -1268,8 +1273,7 @@ void WINAPI showCfgDlg() // quit soon, which means the ini might get flushed late and cause crap. :) anwyay. if (!g_is_cancel) SaveSettings(); - if (lpWndProcOld) - SetWindowLong(hMainWindow,DWL_DLGPROC,(long)lpWndProcOld); + SetWindowLong(hMainWindow,DWL_DLGPROC,(long)lpWndProcOld); DestroyWindow(hConfigWindow); // by ORTIM: 13-August-2002 diff --git a/Plugins/InstallOptions.dll b/Plugins/InstallOptions.dll index 5873e6ca6d867bf7f335e812ad7d11509822166a..e29e34cc353cbb1fb8f28bb0407bda4b25ad78bf 100644 GIT binary patch delta 1816 zcmYL}e{_@88OQGpX=zK-q_t_A+FDvzL7?)7v}{Sh02;MA_Ci{l;ruOjBh8le!7a`^ z7v?u=JJ}uS4X~Ltr{53DS#SD2_(Wpq_<9KQSZ_vP=BK#;MEhb5`Q}Jctn&ADwZPKo z*Y*kAa-a@a9*i|$%_%Ag_+>8hWmdy^tUa>^zRMDsm_rnqPjOk(6$p%c-@Ds*OYhaSC$(akg*omCmb7$S;d?*P3h%e0N zZAQ(>uI7xw`otx3E(~87<-Fy?dSDqENCzO*0e8PS@~#-ff$r@RUPqtN-M{UxqC4iu zW-)Ge0&}EWING)`&ZB+i$XYSrm~N+C6{h;Hu$HiD z>qWyimswFkrPcax&gZmyR|T)f`-KIeQ;phE)>tqDo@VU@GyHE{=Dgz?4_bTy*b)^d zfroBtFA5kr8%+QIL?;NnGhF2ha2~p*XFT)YX~hBHa`7Qtz(p|Ha8&4{kZ4zXt*I-vb9!d4X8D<|StJzIO7ylK8@|o2 znFM1W6#C5_BPERwHpR(^5X0YcoIP1IrQpV}xCF{3K>`^+Yr#K@m$L0e)ACM5`$E$@ z>n2-#oUGRio?>4WRc8&08Jt7}U}ZK$KI3GIuHg1d|J#`MO3K}-(~T)tZ=e=Uxq9og zm29o8qTH{8Wk&73l+D)Wq^w2rrfi1hU?170!wGE6RtbM#rNwH&esL*}Xj@Y!D>UZQ zULO+Y_Y!L@rnyh+q5ia5(QP3<7`lh`7FU@hopO^-hn`G~7LS8(mF!JV{d8Dw#l%ch z2|!pp#}XGRCS`_qim4e=ku*`NlNLw;sZDB^wn)3BBhsMsg>*%#w$HP7*{|DSO-aq~ zYsRA-RE)|{C8|aQc~Cu?kCvbn=np7@IuS#g(4SE+I)sj+PtZB^JsOW~xDrpt6nk(3 zz85#)hj0si8b6OCcq4uZzZS+j@Ls$hAH^r|8T>i^5B?6@$Q@)7nMpjPj`&D3X(chz zLk^OYj7tqIO8(l-Y=oXrwgY*KG9IB(hjR9G72|d*tw&@_zYic|;zQsp~FRlj|W@n=9;!y1HC1 zyWVp3x{U67+>6~Y_YU`a?mqVocZG*~)_IP4&UnT=X-cUwL#a``%H2w{vR3I-UQ_le zhm>Q=3FV}6PWei?tbD87QpTxfwLq;Q3uq| z)ueh+{Z@rutGC2Uyl$`0yWHFEeZjlI+wJY~iVjZ%pih`|>6(;fFSAdz2kl||0sCS5 zN&BFE6Z#u^8y!adXaJo>Npul$bej-=CU)alc)pPSx40EA$6>q<{}K1#*YPg=HV(gs z-^T+&_+fk#PawI(Mkx@x|wdLyXZdpG5rTUOTVVW^eWAA*c@e!*$z+(Ku~-@hGa>dxT%tq Jcy8uu_!HWW-PiyC delta 1753 zcmXw3Yj9IV6uz6LHR&s9Y|{rVLJO5rEH~NRo9Df$PFt{AY#V7Dwb%iX8U`OjQjpeZ zu!%IpI+R5$qC71=1`!PkRgeH;@G%Y!AQc!X!w9#uWl#_*w5*#r{ud5gt?5_3edZrW_qlw<-^JaxS18UYNVfu#kHG!lGWi8;2EOpiid`U`dZs98mYwIc z<+bv0(xg0~&{1+<;>z4jcPVv+&daNq4P6V|)cD5$$2sL?q%U!)LU)&xCFLgH8mF|Y zG1DoZCv{0xpojD%)q}^$P*NXwC)|5aB>q8k5)%n5NZw27gPh|(6_{yvLo{BJVfXXZ5i00Z); zHz^H7H2&qxq4+135yJgU0Vn;{77bPoc(pFMkHwmI$Bt-Z$gN;8H*juW!;&fK%P1%s z{)iu5$UFKOKqgWB4E@(5ly;0#kG9qgngdLA>K&7J5Owxs;3uWo6Tw1K zon4amAWI9)LHo2Uqv)9Jm^X#CC}XJ->B=tDCbBTaAF_(5cfXuALJnpdCX_H?U}R{L zOMaH2<|fvsp%jh_DSjhX=xOq2&dl^ETd~#8eA`h^N-de53-Jkxx5Rq;*_HnD*v8Ig4lWFj z=Out{KIQZLJxTFj3E5XTNjy7I((t9NZtNETdm@A_^G^!FXwCcC44KthVSJ+ z<`3{=e70epA!_*9FlewFPa4k}FB^xA*NtOF1yn;FoCqzj5>~@H_#|wC3*llIfFZaZ zZiFAf!|)`$1h2zUn1IyiUX+W9Pzl1wh8{t6s1YqdFCs5m*^XABwWtSeLm#01=n%Su zhR`*12dQxeF2F`C;Rd`2ug073UVIpz!GGW@_)nZ7Oce}5x$u}UPgo-OgkE8nFfOE+ zbf)>H&8F{6r%cyPpFU$?Kf@3ntt z|J^=fzi#KmWU*MBEzS`ah+eT>TqV9Ct`*-Cw~M>PJ>oawx8iZ}w0KdxB94m*l1j>v zCQH*LgH$2aOJ1o}>TH*Yv_aY;?UcTfewI#2SEU=0+QB<44u@lwqsHNM9CUD#IPP1f z@n`%IzMsFqKVUE$yoOf8YD2f74laN%z*gvkop2r80Jp$>@F?tu18{^jKLM#w2Fgcv z^dOp#n$b(>734!9v>t6jJJ3$_Ia(A!KcaJJ1dSmDPR4p%giEmjo3I1d;JLU7FUBo+ zB@W?taX-F{ui-mbAtVbLK`)dENDzf8CPIU-f{73m)(RViZA^+oLR2^|{3Z+t!vYo3 QO_?TBcyZZVY!;RO0=6@}8vp