No more flickering, cross your fingers for no bugs...

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1905 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2002-12-06 15:43:35 +00:00
parent 00faa19aac
commit 2887407beb
6 changed files with 18 additions and 19 deletions

View file

@ -11,6 +11,7 @@
// For page showing plug-ins // For page showing plug-ins
#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8) #define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8)
#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd)
#define NOTIFY_BYE_BYE 'x' #define NOTIFY_BYE_BYE 'x'
typedef struct _stack_t { typedef struct _stack_t {

View file

@ -175,6 +175,7 @@ int bCancelEnabled = FALSE; // by ORTIM: 13-August-2002
int bCancelShow = FALSE; // by ORTIM: 13-August-2002 int bCancelShow = FALSE; // by ORTIM: 13-August-2002
FieldType *pFields = NULL; FieldType *pFields = NULL;
#define DEFAULT_RECT 1018
int nRectId = 0; int nRectId = 0;
int nNumFields = 0; int nNumFields = 0;
int g_done; int g_done;
@ -462,7 +463,7 @@ bool ReadSettings(void) {
nNumFields = GetPrivateProfileInt("Settings", "NumFields", 0, pszFilename); nNumFields = GetPrivateProfileInt("Settings", "NumFields", 0, pszFilename);
nRectId = GetPrivateProfileInt("Settings", "Rect", 1018, pszFilename); nRectId = GetPrivateProfileInt("Settings", "Rect", DEFAULT_RECT, pszFilename);
bBackEnabled = GetPrivateProfileInt("Settings", "BackEnabled", 0xFFFF0000, pszFilename); bBackEnabled = GetPrivateProfileInt("Settings", "BackEnabled", 0xFFFF0000, pszFilename);
// by ORTIM: 13-August-2002 // by ORTIM: 13-August-2002
@ -751,7 +752,7 @@ int createCfgDlg()
} }
childwnd=FindWindowEx(hMainWindow,NULL,"#32770",NULL); // find window to replace childwnd=FindWindowEx(hMainWindow,NULL,"#32770",NULL); // find window to replace
if (!childwnd) childwnd=GetDlgItem(hMainWindow,nRectId); if (!childwnd || nRectId != DEFAULT_RECT) childwnd=GetDlgItem(hMainWindow,nRectId);
if (!childwnd) if (!childwnd)
{ {
popstring(NULL); popstring(NULL);
@ -1003,10 +1004,9 @@ void showCfgDlg()
{ {
lpWndProcOld = (void *) SetWindowLong(hMainWindow,GWL_WNDPROC,(long)ParentWndProc); lpWndProcOld = (void *) SetWindowLong(hMainWindow,GWL_WNDPROC,(long)ParentWndProc);
SendMessage(hMainWindow, WM_NOTIFY_CUSTOM_READY, 0, 0);
ShowWindow(hConfigWindow, SW_SHOWNA); ShowWindow(hConfigWindow, SW_SHOWNA);
InvalidateRect(hConfigWindow,0,0);
SetFocus(hNextButton); SetFocus(hNextButton);
LockWindowUpdate(0);
g_done=0; g_done=0;

View file

@ -251,10 +251,9 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
AddFolderFromReg(HKEY_LOCAL_MACHINE); AddFolderFromReg(HKEY_LOCAL_MACHINE);
AddFolderFromReg(HKEY_CURRENT_USER); AddFolderFromReg(HKEY_CURRENT_USER);
SendMessage(hwParent, WM_NOTIFY_CUSTOM_READY, 0, 0);
ShowWindow(hwndDlg, SW_SHOWNA); ShowWindow(hwndDlg, SW_SHOWNA);
InvalidateRect(hwndDlg,0,0);
SetFocus(GetDlgItem(hwParent, IDOK)); SetFocus(GetDlgItem(hwParent, IDOK));
LockWindowUpdate(0);
} }
break; break;
case WM_COMMAND: case WM_COMMAND:

Binary file not shown.

Binary file not shown.

View file

@ -73,6 +73,8 @@ static int num_sections;
// update message used by DirProc and SelProc for space display // update message used by DirProc and SelProc for space display
#define WM_IN_UPDATEMSG (WM_USER+0xf) #define WM_IN_UPDATEMSG (WM_USER+0xf)
#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd)
#define WM_TREEVIEW_KEYHACK (WM_USER+0x13) #define WM_TREEVIEW_KEYHACK (WM_USER+0x13)
static int m_page=-1,m_abort,m_retcode,m_delta=1; static int m_page=-1,m_abort,m_retcode,m_delta=1;
@ -122,8 +124,8 @@ static BOOL NSISCALL SetDlgItemTextFromLang_(HWND dlg, int id, int lid) {
#define GetUIItem(it) GetDlgItem(hwndDlg,it) #define GetUIItem(it) GetDlgItem(hwndDlg,it)
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT #ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
#define HandleStaticBkColor() _HandleStaticBkColor(uMsg, wParam, lParam) #define HandleStaticBkColor() _HandleStaticBkColor(hwndDlg, uMsg, wParam, lParam)
static BOOL NSISCALL _HandleStaticBkColor(UINT uMsg, WPARAM wParam, LPARAM lParam) { static BOOL NSISCALL _HandleStaticBkColor(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
if (uMsg == WM_CTLCOLORSTATIC) { if (uMsg == WM_CTLCOLORSTATIC) {
COLORREF color = GetWindowLong((HWND)lParam, GWL_USERDATA); COLORREF color = GetWindowLong((HWND)lParam, GWL_USERDATA);
if (color) { if (color) {
@ -527,13 +529,6 @@ nextPage:
{ {
HWND hwndtmp; HWND hwndtmp;
#ifdef NSIS_SUPPORT_CODECALLBACKS
// lock display for custom pages to prevent flickering
// the custom page must unlock the display
if (this_page->id<0 && uMsg != WM_INITDIALOG) LockWindowUpdate(m_curwnd);
else LockWindowUpdate(0);
#endif
SetDlgItemTextFromLang(hwndDlg,IDOK,this_page->next); SetDlgItemTextFromLang(hwndDlg,IDOK,this_page->next);
hwndtmp=GetDlgItem(hwndDlg,IDC_BACK); hwndtmp=GetDlgItem(hwndDlg,IDC_BACK);
@ -545,16 +540,17 @@ nextPage:
process_string_fromtab(g_tmp+mystrlen(g_tmp),this_page->caption); process_string_fromtab(g_tmp+mystrlen(g_tmp),this_page->caption);
my_SetWindowText(hwndDlg,g_tmp); my_SetWindowText(hwndDlg,g_tmp);
#ifdef NSIS_SUPPORT_CODECALLBACKS
if (ExecuteCodeSegment(this_page->prefunc,NULL) || this_page->id<0)
goto nextPage;
#endif //NSIS_SUPPORT_CODECALLBACKS
if (this_page->id!=NSIS_PAGE_COMPLETED) DestroyWindow(m_curwnd); if (this_page->id!=NSIS_PAGE_COMPLETED) DestroyWindow(m_curwnd);
else { else {
if (g_autoclose) goto nextPage; if (g_autoclose) goto nextPage;
return 0; return 0;
} }
#ifdef NSIS_SUPPORT_CODECALLBACKS
if (ExecuteCodeSegment(this_page->prefunc,NULL) || this_page->id<0)
goto nextPage;
#endif //NSIS_SUPPORT_CODECALLBACKS
if (this_page->id>=0) // NSIS page if (this_page->id>=0) // NSIS page
{ {
gDontFookWithFocus = 0; gDontFookWithFocus = 0;
@ -581,6 +577,9 @@ nextPage:
} }
} }
} }
if (uMsg == WM_NOTIFY_CUSTOM_READY) {
DestroyWindow(m_curwnd);
}
if (uMsg == WM_CLOSE) if (uMsg == WM_CLOSE)
{ {
if (!IsWindowEnabled(m_hwndCancel) && IsWindowEnabled(m_hwndOK)) if (!IsWindowEnabled(m_hwndCancel) && IsWindowEnabled(m_hwndOK))