Update of /cvsroot/perl-win32-gui/Win32-GUI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16396
Modified Files: CHANGELOG GUI.xs Log Message: Update Dialog() and DoEvents() to allow dialog navigation for MDI child windows Index: GUI.xs =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/GUI.xs,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** GUI.xs 15 Jul 2007 19:01:15 -0000 1.65 --- GUI.xs 16 Jul 2007 19:31:50 -0000 1.66 *************** *** 1050,1053 **** --- 1050,1054 ---- HACCEL acc; LPPERLWIN32GUI_USERDATA perlud; + LPPERLWIN32GUI_USERDATA tperlud; CODE: stayhere = 1; *************** *** 1081,1088 **** acc = perlud->hAcc; } if( !( (fIsMDI && TranslateMDISysAccel((HWND)perlud->dwData, &msg)) || (acc && TranslateAccelerator(phwnd, acc, &msg)) || ! (fIsDialog && IsDialogMessage(phwnd, &msg)) ) ){ TranslateMessage(&msg); --- 1082,1101 ---- acc = perlud->hAcc; } + // ### If the parent window is a MDIFrame the active MDIChild + // ### can be THE DialogBox + if(fIsMDI + && (thwnd = (HWND)SendMessage((HWND)perlud->dwData, WM_MDIGETACTIVE, (WPARAM) 0, (LPARAM) NULL)) + && (tperlud = (LPPERLWIN32GUI_USERDATA) GetWindowLong(thwnd, GWL_USERDATA)) + && ValidUserData(tperlud)) + { + fIsDialog = tperlud->dwPlStyle & PERLWIN32GUI_DIALOGUI; + } + else { + thwnd = phwnd; + } if( !( (fIsMDI && TranslateMDISysAccel((HWND)perlud->dwData, &msg)) || (acc && TranslateAccelerator(phwnd, acc, &msg)) || ! (fIsDialog && IsDialogMessage(thwnd, &msg)) ) ){ TranslateMessage(&msg); *************** *** 1125,1128 **** --- 1138,1142 ---- HACCEL acc; LPPERLWIN32GUI_USERDATA perlud; + LPPERLWIN32GUI_USERDATA tperlud; CODE: stayhere = 1; *************** *** 1152,1159 **** acc = perlud->hAcc; } if( !( (fIsMDI && TranslateMDISysAccel((HWND)perlud->dwData, &msg)) || (acc && TranslateAccelerator(phwnd, acc, &msg)) || ! (fIsDialog && IsDialogMessage(phwnd, &msg)) ) ){ TranslateMessage(&msg); --- 1166,1185 ---- acc = perlud->hAcc; } + // ### If the parent window is a MDIFrame the active MDIChild + // ### can be THE DialogBox + if(fIsMDI + && (thwnd = (HWND)SendMessage((HWND)perlud->dwData, WM_MDIGETACTIVE, (WPARAM) 0, (LPARAM) NULL)) + && (tperlud = (LPPERLWIN32GUI_USERDATA) GetWindowLong(thwnd, GWL_USERDATA)) + && ValidUserData(tperlud)) + { + fIsDialog = tperlud->dwPlStyle & PERLWIN32GUI_DIALOGUI; + } + else { + thwnd = phwnd; + } if( !( (fIsMDI && TranslateMDISysAccel((HWND)perlud->dwData, &msg)) || (acc && TranslateAccelerator(phwnd, acc, &msg)) || ! (fIsDialog && IsDialogMessage(thwnd, &msg)) ) ){ TranslateMessage(&msg); Index: CHANGELOG =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/CHANGELOG,v retrieving revision 1.125 retrieving revision 1.126 diff -C2 -d -r1.125 -r1.126 *** CHANGELOG 16 Jul 2007 19:28:28 -0000 1.125 --- CHANGELOG 16 Jul 2007 19:31:50 -0000 1.126 *************** *** 11,14 **** --- 11,17 ---- - GUI.pm - remove constants from AcceptFiles() [Joseph Cordero] - Treeview.xs - fix GetParent() method to get the parent window, rather + than the parent node if called with no arguements. [Salvador Oritz] + - GUI.xs - modify Dialog() and DoEvents() to allow for dialog navigation + to work within MDI child windows. [Salvador Oritz] + [Robert May] : 15 July 2007 - Bug Fixes