jiake
19th April 2010 02:18 UTC
Problem of NSD_CreateIPAddress.nsh
Show
FunctionEnd
>
On the custom page, click back, then the font of directory selection page turns large:
Attachment 46797
Click next, the font of the custom page also changes, not the former one.
Attachment 46798
Animaether
19th April 2010 12:35 UTC
huh.. never noticed that before - but confirmed anyway (no idea if it's related to installing XP SP3). That's a weird bug.
'fraid that might (depending on whether a cause can be found and addressed) leave you with the alternative options of creating 4 text controls, or using 1 text control and validating input, etc.
Edit: looks like this is a known problem with SysIPAddress32. It disposes of the font that's used to create it, originally.
Animaether
19th April 2010 12:43 UTC
okay, solved thusly... create a new font and set that on the control before display. E.g.
${NSD_CreateLabel} 0u 0 20% 10% "Input IP address:"
Pop $0
${NSD_CreateIPaddress} 20% 0 80% 10% "127.0.0.1"
Pop $1
CreateFont $R0 "$(^Font)" "$(^FontSize)"
SendMessage $1 ${WM_SETFONT} $R0 1
>
I'll adjust the header in the wiki after grabbing the font info elegantly somewhere.
Edit: adjusted post with the proper font langstrings.
Animaether
19th April 2010 13:16 UTC
Header file in the wiki ( http://nsis.sourceforge.net/NsDialogs_CreateIPaddress ) is now updated.
End-users: download the new version and your scripts using NSD_CreateIPAddress should continue to work just fine - and the installer font should no longer corrupt.
Developers: nsDialogs' framework doesn't allow for any particular post-fixing of its defines. The original define is renamed to NSD_CreateIPAddressControl. The original NSD_CreateIPAddress define is then re-defined to insert a macro which calls the renamed original and applies the font corruption fix and then pushes the control's handle back onto the stack.
jiake
20th April 2010 02:21 UTC
I tried the fixed header file, it works well. Neither click back or the next button, the font is right.
Animaether
20th April 2010 02:34 UTC
excellent - glad it's fixed with that :D