Loading widget/src/os2/nsFrameWindow.cpp +24 −1 Original line number Diff line number Diff line Loading @@ -29,14 +29,20 @@ * 03/23/2000 IBM Corp. Fix missing title bars on profile wizard windows. * 04/11/2000 IBM Corp. Remove assertion. * 05/10/2000 IBM Corp. Correct initial position of frame w/titlebar * 06/21/2000 IBM Corp. Use rollup listener from nsWindow */ // Frame window - produced when NS_WINDOW_CID is required. #include "nsFrameWindow.h" #include "nsIRollupListener.h" static PRBool haveHiddenWindow = PR_FALSE; extern nsIRollupListener * gRollupListener; extern nsIWidget * gRollupWidget; extern PRBool gRollupConsumeRollupEvent; nsFrameWindow::nsFrameWindow() : nsCanvas() { hwndFrame = 0; Loading @@ -60,7 +66,7 @@ void nsFrameWindow::RealDoCreate( HWND hwndP, nsWindow *aParent, /* NS_ASSERTION( hwndP == HWND_DESKTOP && aParent == nsnull, "Attempt to create non-top-level frame"); */ #if DEBUG_sobotka #if DEBUG printf("\nIn nsFrameWindow::RealDoCreate:\n"); printf(" hwndP = %lu\n", hwndP); printf(" aParent = 0x%lx\n", &aParent); Loading Loading @@ -199,6 +205,23 @@ nsresult nsFrameWindow::Show( PRBool bState) // Subclass for frame window MRESULT EXPENTRY fnwpFrame( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { // check to see if we have a rollup listener registered if (nsnull != gRollupListener && nsnull != gRollupWidget) { if (msg == WM_ACTIVATE || msg == WM_BUTTON1DOWN || msg == WM_BUTTON2DOWN || msg == WM_BUTTON3DOWN) { // Rollup if the event is outside the popup if (PR_FALSE == nsWindow::EventIsInsideWindow((nsWindow*)gRollupWidget)) { gRollupListener->Rollup(); // if we are supposed to be consuming events and it is // a Mouse Button down, let it go through if (gRollupConsumeRollupEvent && msg != WM_BUTTON1DOWN) { return FALSE; } } } } nsFrameWindow *pFrame = (nsFrameWindow*) WinQueryWindowPtr( hwnd, QWL_USER); return pFrame->FrameMessage( msg, mp1, mp2); } Loading widget/src/os2/nsWindow.cpp +29 −5 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ * 06/09/2000 IBM Corp. Added cases for more cursors in SetCursor. * 06/14/2000 IBM Corp. Removed dead menu code to fix build break. * 06/15/2000 IBM Corp. Created NS2PM for rectangles. * 06/21/2000 IBM Corp. Corrected menu parentage; added CaptureMouse. * */ Loading Loading @@ -102,9 +103,9 @@ BOOL g_bHandlingMouseClick = FALSE; nsWindow* nsWindow::gCurrentWindow = nsnull; static nsIRollupListener * gRollupListener = nsnull; static nsIWidget * gRollupWidget = nsnull; static PRBool gRollupConsumeRollupEvent = PR_FALSE; nsIRollupListener * gRollupListener = nsnull; nsIWidget * gRollupWidget = nsnull; PRBool gRollupConsumeRollupEvent = PR_FALSE; // -------------------------------------------------------------------------- // HWND -> (nsWindow *) conversion ------------------------------------------ Loading Loading @@ -199,6 +200,13 @@ void nsWindow::DoCreate( HWND hwndP, nsWindow *aParent, const nsRect &aRect, { mWindowState = nsWindowState_eInCreate; if( hwndP != HWND_DESKTOP && aInitData && ( aInitData->mWindowType == eWindowType_dialog || aInitData->mWindowType == eWindowType_popup || aInitData->mWindowType == eWindowType_toplevel) ) { hwndP = HWND_DESKTOP; } // Must ensure toolkit before attempting to thread-switch! if( !mToolkit) { Loading Loading @@ -462,6 +470,18 @@ nsWindow::EventIsInsideWindow(nsWindow* aWindow) return PR_TRUE; } NS_METHOD nsWindow::CaptureMouse(PRBool aCapture) { if (PR_TRUE == aCapture) { WinSetCapture( HWND_DESKTOP, mWnd); } else { WinSetCapture( HWND_DESKTOP, NULLHANDLE); } // mIsInMouseCapture = aCapture; return NS_OK; } // -------------------------------------------------------------------------- // PM messaging layer - wndproc, subclasser, default handler ---------------- Loading @@ -482,13 +502,12 @@ MRESULT EXPENTRY fnwpNSWindow( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) msg == WM_BUTTON2DOWN || msg == WM_BUTTON3DOWN) { // Rollup if the event is outside the popup if (PR_FALSE == nsWindow::EventIsInsideWindow((nsWindow*)gRollupWidget)) { /* OS2TODO - This is causing the menu bar dropdowns to disappear too quickly */ gRollupListener->Rollup(); // if we are supposed to be consuming events and it is // a Mouse Button down, let it go through if (gRollupConsumeRollupEvent && msg != WM_BUTTON1DOWN) { // return FALSE; return FALSE; } } } Loading Loading @@ -1201,6 +1220,7 @@ PRBool nsWindow::OnReposition( PSWP pSwp) { // need screen coords. POINTL ptl = { pSwp->x, pSwp->y + pSwp->cy - 1 }; WinMapWindowPoints( WinQueryWindow( mWnd, QW_PARENT), GetParentHWND(), &ptl, 1); PM2NS_PARENT( ptl); mBounds.x = ptl.x; mBounds.y = ptl.y; Loading Loading @@ -1544,6 +1564,10 @@ nsresult nsWindow::Resize( PRInt32 aX, PRInt32 aY, PRInt32 w, PRInt32 h, NS2PM_PARENT( ptl); // work out real coords of bottom left ptl.y -= GetHeight( h) - 1; if( mParent) { WinMapWindowPoints( mParent->mWnd, WinQueryWindow(mWnd, QW_PARENT), &ptl, 1); } if( !SetWindowPos( 0, ptl.x, ptl.y, w, GetHeight(h), SWP_MOVE | SWP_SIZE)) if( aRepaint) Loading widget/src/os2/nsWindow.h +3 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ * 03/23/2000 IBM Corp. Added InvalidateRegion method. * 04/12/2000 IBM Corp. Changed params on DispatchMouseEvent to match Windows.. * 04/14/2000 IBM Corp. Declared EventIsInsideWindow for CaptureRollupEvents * 06/15/2000 IBM Corp. Added NS2PM for rectangles * 06/21/2000 IBM Corp. Added CaptureMouse * */ Loading Loading @@ -100,6 +102,7 @@ class nsWindow : public nsBaseWidget, NS_IMETHOD Enable( PRBool bState); NS_IMETHOD SetFocus(); NS_IMETHOD IsVisible( PRBool &aState); NS_IMETHOD CaptureMouse(PRBool aCapture); NS_IMETHOD ModalEventFilter( PRBool aRealEvent, void *aEvent, PRBool *aForWindow ); Loading Loading
widget/src/os2/nsFrameWindow.cpp +24 −1 Original line number Diff line number Diff line Loading @@ -29,14 +29,20 @@ * 03/23/2000 IBM Corp. Fix missing title bars on profile wizard windows. * 04/11/2000 IBM Corp. Remove assertion. * 05/10/2000 IBM Corp. Correct initial position of frame w/titlebar * 06/21/2000 IBM Corp. Use rollup listener from nsWindow */ // Frame window - produced when NS_WINDOW_CID is required. #include "nsFrameWindow.h" #include "nsIRollupListener.h" static PRBool haveHiddenWindow = PR_FALSE; extern nsIRollupListener * gRollupListener; extern nsIWidget * gRollupWidget; extern PRBool gRollupConsumeRollupEvent; nsFrameWindow::nsFrameWindow() : nsCanvas() { hwndFrame = 0; Loading @@ -60,7 +66,7 @@ void nsFrameWindow::RealDoCreate( HWND hwndP, nsWindow *aParent, /* NS_ASSERTION( hwndP == HWND_DESKTOP && aParent == nsnull, "Attempt to create non-top-level frame"); */ #if DEBUG_sobotka #if DEBUG printf("\nIn nsFrameWindow::RealDoCreate:\n"); printf(" hwndP = %lu\n", hwndP); printf(" aParent = 0x%lx\n", &aParent); Loading Loading @@ -199,6 +205,23 @@ nsresult nsFrameWindow::Show( PRBool bState) // Subclass for frame window MRESULT EXPENTRY fnwpFrame( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { // check to see if we have a rollup listener registered if (nsnull != gRollupListener && nsnull != gRollupWidget) { if (msg == WM_ACTIVATE || msg == WM_BUTTON1DOWN || msg == WM_BUTTON2DOWN || msg == WM_BUTTON3DOWN) { // Rollup if the event is outside the popup if (PR_FALSE == nsWindow::EventIsInsideWindow((nsWindow*)gRollupWidget)) { gRollupListener->Rollup(); // if we are supposed to be consuming events and it is // a Mouse Button down, let it go through if (gRollupConsumeRollupEvent && msg != WM_BUTTON1DOWN) { return FALSE; } } } } nsFrameWindow *pFrame = (nsFrameWindow*) WinQueryWindowPtr( hwnd, QWL_USER); return pFrame->FrameMessage( msg, mp1, mp2); } Loading
widget/src/os2/nsWindow.cpp +29 −5 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ * 06/09/2000 IBM Corp. Added cases for more cursors in SetCursor. * 06/14/2000 IBM Corp. Removed dead menu code to fix build break. * 06/15/2000 IBM Corp. Created NS2PM for rectangles. * 06/21/2000 IBM Corp. Corrected menu parentage; added CaptureMouse. * */ Loading Loading @@ -102,9 +103,9 @@ BOOL g_bHandlingMouseClick = FALSE; nsWindow* nsWindow::gCurrentWindow = nsnull; static nsIRollupListener * gRollupListener = nsnull; static nsIWidget * gRollupWidget = nsnull; static PRBool gRollupConsumeRollupEvent = PR_FALSE; nsIRollupListener * gRollupListener = nsnull; nsIWidget * gRollupWidget = nsnull; PRBool gRollupConsumeRollupEvent = PR_FALSE; // -------------------------------------------------------------------------- // HWND -> (nsWindow *) conversion ------------------------------------------ Loading Loading @@ -199,6 +200,13 @@ void nsWindow::DoCreate( HWND hwndP, nsWindow *aParent, const nsRect &aRect, { mWindowState = nsWindowState_eInCreate; if( hwndP != HWND_DESKTOP && aInitData && ( aInitData->mWindowType == eWindowType_dialog || aInitData->mWindowType == eWindowType_popup || aInitData->mWindowType == eWindowType_toplevel) ) { hwndP = HWND_DESKTOP; } // Must ensure toolkit before attempting to thread-switch! if( !mToolkit) { Loading Loading @@ -462,6 +470,18 @@ nsWindow::EventIsInsideWindow(nsWindow* aWindow) return PR_TRUE; } NS_METHOD nsWindow::CaptureMouse(PRBool aCapture) { if (PR_TRUE == aCapture) { WinSetCapture( HWND_DESKTOP, mWnd); } else { WinSetCapture( HWND_DESKTOP, NULLHANDLE); } // mIsInMouseCapture = aCapture; return NS_OK; } // -------------------------------------------------------------------------- // PM messaging layer - wndproc, subclasser, default handler ---------------- Loading @@ -482,13 +502,12 @@ MRESULT EXPENTRY fnwpNSWindow( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) msg == WM_BUTTON2DOWN || msg == WM_BUTTON3DOWN) { // Rollup if the event is outside the popup if (PR_FALSE == nsWindow::EventIsInsideWindow((nsWindow*)gRollupWidget)) { /* OS2TODO - This is causing the menu bar dropdowns to disappear too quickly */ gRollupListener->Rollup(); // if we are supposed to be consuming events and it is // a Mouse Button down, let it go through if (gRollupConsumeRollupEvent && msg != WM_BUTTON1DOWN) { // return FALSE; return FALSE; } } } Loading Loading @@ -1201,6 +1220,7 @@ PRBool nsWindow::OnReposition( PSWP pSwp) { // need screen coords. POINTL ptl = { pSwp->x, pSwp->y + pSwp->cy - 1 }; WinMapWindowPoints( WinQueryWindow( mWnd, QW_PARENT), GetParentHWND(), &ptl, 1); PM2NS_PARENT( ptl); mBounds.x = ptl.x; mBounds.y = ptl.y; Loading Loading @@ -1544,6 +1564,10 @@ nsresult nsWindow::Resize( PRInt32 aX, PRInt32 aY, PRInt32 w, PRInt32 h, NS2PM_PARENT( ptl); // work out real coords of bottom left ptl.y -= GetHeight( h) - 1; if( mParent) { WinMapWindowPoints( mParent->mWnd, WinQueryWindow(mWnd, QW_PARENT), &ptl, 1); } if( !SetWindowPos( 0, ptl.x, ptl.y, w, GetHeight(h), SWP_MOVE | SWP_SIZE)) if( aRepaint) Loading
widget/src/os2/nsWindow.h +3 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ * 03/23/2000 IBM Corp. Added InvalidateRegion method. * 04/12/2000 IBM Corp. Changed params on DispatchMouseEvent to match Windows.. * 04/14/2000 IBM Corp. Declared EventIsInsideWindow for CaptureRollupEvents * 06/15/2000 IBM Corp. Added NS2PM for rectangles * 06/21/2000 IBM Corp. Added CaptureMouse * */ Loading Loading @@ -100,6 +102,7 @@ class nsWindow : public nsBaseWidget, NS_IMETHOD Enable( PRBool bState); NS_IMETHOD SetFocus(); NS_IMETHOD IsVisible( PRBool &aState); NS_IMETHOD CaptureMouse(PRBool aCapture); NS_IMETHOD ModalEventFilter( PRBool aRealEvent, void *aEvent, PRBool *aForWindow ); Loading