diff options
author | Kurt Zenker <kz@openoffice.org> | 2003-11-18 13:52:54 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2003-11-18 13:52:54 +0000 |
commit | 1ac0336674fdaca021302d0040ffd6f2132ea156 (patch) | |
tree | 77acf6103711532bf84d9b4ac8a50a8375e94066 /vcl | |
parent | 7039b845ace0e0b031487f840de5df621253a8e6 (diff) |
INTEGRATION: CWS vclplug (1.95.24); FILE MERGED
2003/10/24 13:35:25 pl 1.95.24.1: #21232# win port of virtualiing sal part
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/win/source/window/salframe.cxx | 1260 |
1 files changed, 568 insertions, 692 deletions
diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx index 47c7b059831a..0fae7944a504 100644 --- a/vcl/win/source/window/salframe.cxx +++ b/vcl/win/source/window/salframe.cxx @@ -2,9 +2,9 @@ * * $RCSfile: salframe.cxx,v $ * - * $Revision: 1.95 $ + * $Revision: 1.96 $ * - * last change: $Author: obo $ $Date: 2003-09-04 11:53:32 $ + * last change: $Author: kz $ $Date: 2003-11-18 14:52:54 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -96,23 +96,23 @@ #ifndef _SV_SALDATA_HXX #include <saldata.hxx> #endif -#ifndef _SV_SALINST_HXX -#include <salinst.hxx> +#ifndef _SV_SALINST_H +#include <salinst.h> #endif -#ifndef _SV_SALBMP_HXX -#include <salbmp.hxx> +#ifndef _SV_SALBMP_H +#include <salbmp.h> #endif -#ifndef _SV_SALGDI_HXX -#include <salgdi.hxx> +#ifndef _SV_SALGDI_H +#include <salgdi.h> #endif #ifndef _SV_SALSYS_HXX #include <salsys.hxx> #endif -#ifndef _SV_SALFRAME_HXX -#include <salframe.hxx> +#ifndef _SV_SALFRAME_H +#include <salframe.h> #endif -#ifndef _SV_SALVD_HXX -#include <salvd.hxx> +#ifndef _SV_SALVD_H +#include <salvd.h> #endif #ifndef _SV_TIMER_HXX @@ -186,53 +186,53 @@ void MyOutputDebugString(const char *buffer) #endif // ======================================================================= -BOOL SalFrame::mbInReparent = FALSE; +BOOL WinSalFrame::mbInReparent = FALSE; static void UpdateFrameGeometry( HWND hWnd, SalFrame* pFrame ); -static void ImplSaveFrameState( SalFrame* pFrame ) +static void ImplSaveFrameState( WinSalFrame* pFrame ) { // Position, Groesse und Status fuer GetWindowState() merken - if ( !pFrame->maFrameData.mbFullScreen ) + if ( !pFrame->mbFullScreen ) { - BOOL bVisible = (GetWindowStyle( pFrame->maFrameData.mhWnd ) & WS_VISIBLE) != 0; - if ( IsIconic( pFrame->maFrameData.mhWnd ) ) + BOOL bVisible = (GetWindowStyle( pFrame->mhWnd ) & WS_VISIBLE) != 0; + if ( IsIconic( pFrame->mhWnd ) ) { - pFrame->maFrameData.maState.mnState |= SAL_FRAMESTATE_MINIMIZED; + pFrame->maState.mnState |= SAL_FRAMESTATE_MINIMIZED; if ( bVisible ) - pFrame->maFrameData.mnShowState = SW_SHOWMAXIMIZED; + pFrame->mnShowState = SW_SHOWMAXIMIZED; } - else if ( IsZoomed( pFrame->maFrameData.mhWnd ) ) + else if ( IsZoomed( pFrame->mhWnd ) ) { - pFrame->maFrameData.maState.mnState &= ~SAL_FRAMESTATE_MINIMIZED; - pFrame->maFrameData.maState.mnState |= SAL_FRAMESTATE_MAXIMIZED; + pFrame->maState.mnState &= ~SAL_FRAMESTATE_MINIMIZED; + pFrame->maState.mnState |= SAL_FRAMESTATE_MAXIMIZED; if ( bVisible ) - pFrame->maFrameData.mnShowState = SW_SHOWMAXIMIZED; - pFrame->maFrameData.mbRestoreMaximize = TRUE; + pFrame->mnShowState = SW_SHOWMAXIMIZED; + pFrame->mbRestoreMaximize = TRUE; } else { RECT aRect; - GetWindowRect( pFrame->maFrameData.mhWnd, &aRect ); + GetWindowRect( pFrame->mhWnd, &aRect ); // to be consistent with Unix, the frame state is without(!) decoration RECT aRect2 = aRect; - AdjustWindowRectEx( &aRect2, GetWindowStyle( pFrame->maFrameData.mhWnd ), - FALSE, GetWindowExStyle( pFrame->maFrameData.mhWnd ) ); + AdjustWindowRectEx( &aRect2, GetWindowStyle( pFrame->mhWnd ), + FALSE, GetWindowExStyle( pFrame->mhWnd ) ); long nTopDeco = abs( aRect.top - aRect2.top ); long nLeftDeco = abs( aRect.left - aRect2.left ); long nBottomDeco = abs( aRect.bottom - aRect2.bottom ); long nRightDeco = abs( aRect.right - aRect2.right ); - pFrame->maFrameData.maState.mnState &= ~(SAL_FRAMESTATE_MINIMIZED | SAL_FRAMESTATE_MAXIMIZED); + pFrame->maState.mnState &= ~(SAL_FRAMESTATE_MINIMIZED | SAL_FRAMESTATE_MAXIMIZED); // subtract decoration - pFrame->maFrameData.maState.mnX = aRect.left+nLeftDeco; - pFrame->maFrameData.maState.mnY = aRect.top+nTopDeco; - pFrame->maFrameData.maState.mnWidth = aRect.right-aRect.left-nLeftDeco-nRightDeco; - pFrame->maFrameData.maState.mnHeight = aRect.bottom-aRect.top-nTopDeco-nBottomDeco; + pFrame->maState.mnX = aRect.left+nLeftDeco; + pFrame->maState.mnY = aRect.top+nTopDeco; + pFrame->maState.mnWidth = aRect.right-aRect.left-nLeftDeco-nRightDeco; + pFrame->maState.mnHeight = aRect.bottom-aRect.top-nTopDeco-nBottomDeco; if ( bVisible ) - pFrame->maFrameData.mnShowState = SW_SHOWNORMAL; - pFrame->maFrameData.mbRestoreMaximize = FALSE; + pFrame->mnShowState = SW_SHOWNORMAL; + pFrame->mbRestoreMaximize = FALSE; } } } @@ -240,17 +240,17 @@ static void ImplSaveFrameState( SalFrame* pFrame ) // ----------------------------------------------------------------------- // if pParentRect is set, the workarea of the monitor that contains pParentRect is returned -static void ImplSalGetWorkArea( HWND hWnd, RECT *pRect, const RECT *pParentRect ) +void ImplSalGetWorkArea( HWND hWnd, RECT *pRect, const RECT *pParentRect ) { static int winVerChecked = 0; static int winVerOk = 0; // check if we or our parent is fullscreen, then the taskbar should be ignored bool bIgnoreTaskbar = false; - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if( pFrame ) { - Window *pWin = ((Window*)pFrame->maFrameData.mpInst); + Window *pWin = ((Window*)pFrame->GetInstance()); while( pWin ) { WorkWindow *pWorkWin = (pWin->GetType() == WINDOW_WORKWINDOW) ? (WorkWindow *) pWin : NULL; @@ -364,10 +364,10 @@ static void ImplSalGetWorkArea( HWND hWnd, RECT *pRect, const RECT *pParentRect // ======================================================================= -SalFrame* ImplSalCreateFrame( SalInstance* pInst, +SalFrame* ImplSalCreateFrame( WinSalInstance* pInst, HWND hWndParent, ULONG nSalFrameStyle ) { - SalFrame* pFrame = new SalFrame; + WinSalFrame* pFrame = new WinSalFrame; HWND hWnd; DWORD nSysStyle = 0; DWORD nExSysStyle = 0; @@ -400,7 +400,7 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, { nSysStyle |= WS_POPUP; bSubFrame = TRUE; - pFrame->maFrameData.mbNoIcon = TRUE; + pFrame->mbNoIcon = TRUE; } else { @@ -418,7 +418,7 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, if ( nSalFrameStyle & SAL_FRAME_STYLE_MOVEABLE ) { - pFrame->maFrameData.mbCaption = TRUE; + pFrame->mbCaption = TRUE; nSysStyle |= WS_SYSMENU | WS_CAPTION; if ( !hWndParent ) nSysStyle |= WS_SYSMENU | WS_MINIMIZEBOX; @@ -427,13 +427,13 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, if ( nSalFrameStyle & SAL_FRAME_STYLE_SIZEABLE ) { - pFrame->maFrameData.mbSizeBorder = TRUE; + pFrame->mbSizeBorder = TRUE; nSysStyle |= WS_THICKFRAME; if ( !hWndParent ) nSysStyle |= WS_MAXIMIZEBOX; } else - pFrame->maFrameData.mbFixBorder = TRUE; + pFrame->mbFixBorder = TRUE; if ( nSalFrameStyle & SAL_FRAME_STYLE_DEFAULT ) nExSysStyle |= WS_EX_APPWINDOW; @@ -447,7 +447,7 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, // #103578# looked too bad - above changes reverted /* && !(nSalFrameStyle & SAL_FRAME_STYLE_SIZEABLE) */ ) { - pFrame->maFrameData.mbNoIcon = TRUE; + pFrame->mbNoIcon = TRUE; nExSysStyle |= WS_EX_TOOLWINDOW; if ( pEnvTransparentFloats && bLayeredAPI == 1 /*&& !(nSalFrameStyle & SAL_FRAME_STYLE_MOVEABLE) */) nExSysStyle |= WS_EX_LAYERED; @@ -456,7 +456,7 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, if ( nSalFrameStyle & SAL_FRAME_STYLE_FLOAT ) { nExSysStyle |= WS_EX_TOOLWINDOW; - pFrame->maFrameData.mbFloatWin = TRUE; + pFrame->mbFloatWin = TRUE; if ( pEnvTransparentFloats && bLayeredAPI == 1 /*&& !(nSalFrameStyle & SAL_FRAME_STYLE_MOVEABLE) */) nExSysStyle |= WS_EX_LAYERED; @@ -466,31 +466,31 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, nExSysStyle |= WS_EX_TOPMOST; // init frame data - pFrame->maFrameData.mnStyle = nSalFrameStyle; + pFrame->mnStyle = nSalFrameStyle; // determine show style - pFrame->maFrameData.mnShowState = SW_SHOWNORMAL; + pFrame->mnShowState = SW_SHOWNORMAL; if ( (nSysStyle & (WS_POPUP | WS_MAXIMIZEBOX | WS_THICKFRAME)) == (WS_MAXIMIZEBOX | WS_THICKFRAME) ) { if ( GetSystemMetrics( SM_CXSCREEN ) <= 1024 ) - pFrame->maFrameData.mnShowState = SW_SHOWMAXIMIZED; + pFrame->mnShowState = SW_SHOWMAXIMIZED; else { if ( nSalFrameStyle & SAL_FRAME_STYLE_DEFAULT ) { SalData* pSalData = GetSalData(); - pFrame->maFrameData.mnShowState = pSalData->mnCmdShow; - if ( (pFrame->maFrameData.mnShowState != SW_SHOWMINIMIZED) && - (pFrame->maFrameData.mnShowState != SW_MINIMIZE) && - (pFrame->maFrameData.mnShowState != SW_SHOWMINNOACTIVE) ) + pFrame->mnShowState = pSalData->mnCmdShow; + if ( (pFrame->mnShowState != SW_SHOWMINIMIZED) && + (pFrame->mnShowState != SW_MINIMIZE) && + (pFrame->mnShowState != SW_SHOWMINNOACTIVE) ) { - if ( (pFrame->maFrameData.mnShowState == SW_SHOWMAXIMIZED) || - (pFrame->maFrameData.mnShowState == SW_MAXIMIZE) ) - pFrame->maFrameData.mbOverwriteState = FALSE; - pFrame->maFrameData.mnShowState = SW_SHOWMAXIMIZED; + if ( (pFrame->mnShowState == SW_SHOWMAXIMIZED) || + (pFrame->mnShowState == SW_MAXIMIZE) ) + pFrame->mbOverwriteState = FALSE; + pFrame->mnShowState = SW_SHOWMAXIMIZED; } else - pFrame->maFrameData.mbOverwriteState = FALSE; + pFrame->mbOverwriteState = FALSE; } else { @@ -498,9 +498,9 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, // is also maximized HWND hWnd = GetForegroundWindow(); if ( hWnd && IsMaximized( hWnd ) && - (GetWindowInstance( hWnd ) == pInst->maInstData.mhInst) && + (GetWindowInstance( hWnd ) == pInst->mhInst) && ((GetWindowStyle( hWnd ) & (WS_POPUP | WS_MAXIMIZEBOX | WS_THICKFRAME)) == (WS_MAXIMIZEBOX | WS_THICKFRAME)) ) - pFrame->maFrameData.mnShowState = SW_SHOWMAXIMIZED; + pFrame->mnShowState = SW_SHOWMAXIMIZED; } } } @@ -525,7 +525,7 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, } hWnd = CreateWindowExW( nExSysStyle, pClassName, L"", nSysStyle, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, - hWndParent, 0, pInst->maInstData.mhInst, (void*)pFrame ); + hWndParent, 0, pInst->mhInst, (void*)pFrame ); #if OSL_DEBUG_LEVEL > 1 // set transparency value if( bLayeredAPI == 1 && GetWindowExStyle( hWnd ) & WS_EX_LAYERED ) @@ -541,7 +541,7 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, pClassName = SAL_FRAME_CLASSNAMEA; hWnd = CreateWindowExA( nExSysStyle, pClassName, "", nSysStyle, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, - hWndParent, 0, pInst->maInstData.mhInst, (void*)pFrame ); + hWndParent, 0, pInst->mhInst, (void*)pFrame ); } if ( !hWnd ) { @@ -576,24 +576,24 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst, } // reset input context - pFrame->maFrameData.mhDefIMEContext = ImmAssociateContext( hWnd, 0 ); + pFrame->mhDefIMEContext = ImmAssociateContext( hWnd, 0 ); // determine output size and state RECT aRect; GetClientRect( hWnd, &aRect ); - pFrame->maFrameData.mnWidth = aRect.right; - pFrame->maFrameData.mnHeight = aRect.bottom; + pFrame->mnWidth = aRect.right; + pFrame->mnHeight = aRect.bottom; ImplSaveFrameState( pFrame ); - pFrame->maFrameData.mbDefPos = TRUE; + pFrame->mbDefPos = TRUE; UpdateFrameGeometry( hWnd, pFrame ); - if( pFrame->maFrameData.mnShowState == SW_SHOWMAXIMIZED ) + if( pFrame->mnShowState == SW_SHOWMAXIMIZED ) { // #96084 set a useful internal window size because // the window will not be maximized (and the size updated) before show() RECT aRect; - ImplSalGetWorkArea( pFrame->maFrameData.mhWnd, &aRect, NULL ); + ImplSalGetWorkArea( pFrame->mhWnd, &aRect, NULL ); AdjustWindowRectEx( &aRect, GetWindowStyle( hWnd ), FALSE, GetWindowExStyle( hWnd ) ); pFrame->maGeometry.nX = aRect.left; @@ -795,13 +795,6 @@ static USHORT aImplTranslateKeyTab[KEY_TAB_SIZE] = // ======================================================================= -long ImplSalCallbackDummy( void*, SalFrame*, USHORT, const void* ) -{ - return 0; -} - -// ----------------------------------------------------------------------- - static UINT ImplSalGetWheelScrollLines() { UINT nScrLines = 0; @@ -824,7 +817,7 @@ static UINT ImplSalGetWheelScrollLines() // ----------------------------------------------------------------------- -static void ImplSalCalcBorder( const SalFrame* pFrame, +static void ImplSalCalcBorder( const WinSalFrame* pFrame, int& rLeft, int& rTop, int& rRight, int& rBottom ) { // set window to screen size @@ -832,17 +825,17 @@ static void ImplSalCalcBorder( const SalFrame* pFrame, int nFrameY; int nCaptionY; - if ( pFrame->maFrameData.mbSizeBorder ) + if ( pFrame->mbSizeBorder ) { nFrameX = GetSystemMetrics( SM_CXSIZEFRAME ); nFrameY = GetSystemMetrics( SM_CYSIZEFRAME ); } - else if ( pFrame->maFrameData.mbFixBorder ) + else if ( pFrame->mbFixBorder ) { nFrameX = GetSystemMetrics( SM_CXFIXEDFRAME ); nFrameY = GetSystemMetrics( SM_CYFIXEDFRAME ); } - else if ( pFrame->maFrameData.mbBorder ) + else if ( pFrame->mbBorder ) { nFrameX = GetSystemMetrics( SM_CXBORDER ); nFrameY = GetSystemMetrics( SM_CYBORDER ); @@ -852,7 +845,7 @@ static void ImplSalCalcBorder( const SalFrame* pFrame, nFrameX = 0; nFrameY = 0; } - if ( pFrame->maFrameData.mbCaption ) + if ( pFrame->mbCaption ) nCaptionY = GetSystemMetrics( SM_CYCAPTION ); else nCaptionY = 0; @@ -865,7 +858,7 @@ static void ImplSalCalcBorder( const SalFrame* pFrame, // ----------------------------------------------------------------------- -static void ImplSalCalcFullScreenSize( const SalFrame* pFrame, +static void ImplSalCalcFullScreenSize( const WinSalFrame* pFrame, int& rX, int& rY, int& rDX, int& rDY ) { // set window to screen size @@ -875,17 +868,17 @@ static void ImplSalCalcFullScreenSize( const SalFrame* pFrame, int nScreenDX; int nScreenDY; - if ( pFrame->maFrameData.mbSizeBorder ) + if ( pFrame->mbSizeBorder ) { nFrameX = GetSystemMetrics( SM_CXSIZEFRAME ); nFrameY = GetSystemMetrics( SM_CYSIZEFRAME ); } - else if ( pFrame->maFrameData.mbFixBorder ) + else if ( pFrame->mbFixBorder ) { nFrameX = GetSystemMetrics( SM_CXFIXEDFRAME ); nFrameY = GetSystemMetrics( SM_CYFIXEDFRAME ); } - else if ( pFrame->maFrameData.mbBorder ) + else if ( pFrame->mbBorder ) { nFrameX = GetSystemMetrics( SM_CXBORDER ); nFrameY = GetSystemMetrics( SM_CYBORDER ); @@ -895,7 +888,7 @@ static void ImplSalCalcFullScreenSize( const SalFrame* pFrame, nFrameX = 0; nFrameY = 0; } - if ( pFrame->maFrameData.mbCaption ) + if ( pFrame->mbCaption ) nCaptionY = GetSystemMetrics( SM_CYCAPTION ); else nCaptionY = 0; @@ -911,9 +904,9 @@ static void ImplSalCalcFullScreenSize( const SalFrame* pFrame, // ----------------------------------------------------------------------- -static void ImplSalFrameFullScreenPos( SalFrame* pFrame, BOOL bAlways = FALSE ) +static void ImplSalFrameFullScreenPos( WinSalFrame* pFrame, BOOL bAlways = FALSE ) { - if ( bAlways || !IsIconic( pFrame->maFrameData.mhWnd ) ) + if ( bAlways || !IsIconic( pFrame->mhWnd ) ) { // set window to screen size int nX; @@ -921,7 +914,7 @@ static void ImplSalFrameFullScreenPos( SalFrame* pFrame, BOOL bAlways = FALSE ) int nWidth; int nHeight; ImplSalCalcFullScreenSize( pFrame, nX, nY, nWidth, nHeight ); - SetWindowPos( pFrame->maFrameData.mhWnd, 0, + SetWindowPos( pFrame->mhWnd, 0, nX, nY, nWidth, nHeight, SWP_NOZORDER | SWP_NOACTIVATE ); } @@ -929,48 +922,46 @@ static void ImplSalFrameFullScreenPos( SalFrame* pFrame, BOOL bAlways = FALSE ) // ----------------------------------------------------------------------- -SalFrame::SalFrame() +WinSalFrame::WinSalFrame() { SalData* pSalData = GetSalData(); - maFrameData.mhWnd = 0; - maFrameData.mhCursor = LoadCursor( 0, IDC_ARROW ); - maFrameData.mhDefIMEContext = 0; - maFrameData.mpGraphics = NULL; - maFrameData.mpGraphics2 = NULL; - maFrameData.mpInst = NULL; - maFrameData.mpProc = ImplSalCallbackDummy; - maFrameData.mnShowState = SW_SHOWNORMAL; - maFrameData.mnWidth = 0; - maFrameData.mnHeight = 0; - maFrameData.mnMinWidth = 0; - maFrameData.mnMinHeight = 0; - maFrameData.mnInputLang = 0; - maFrameData.mnInputCodePage = 0; - maFrameData.mbGraphics = FALSE; - maFrameData.mbCaption = FALSE; - maFrameData.mbBorder = FALSE; - maFrameData.mbFixBorder = FALSE; - maFrameData.mbSizeBorder = FALSE; - maFrameData.mbFullScreen = FALSE; - maFrameData.mbPresentation = FALSE; - maFrameData.mbInShow = FALSE; - maFrameData.mbRestoreMaximize = FALSE; - maFrameData.mbInMoveMsg = FALSE; - maFrameData.mbInSizeMsg = FALSE; - maFrameData.mbFullScreenToolWin = FALSE; - maFrameData.mbDefPos = TRUE; - maFrameData.mbOverwriteState = TRUE; - maFrameData.mbIME = FALSE; - maFrameData.mbHandleIME = FALSE; - maFrameData.mbSpezIME = FALSE; - maFrameData.mbAtCursorIME = FALSE; - maFrameData.mbCandidateMode = FALSE; - maFrameData.mbFloatWin = FALSE; - maFrameData.mbNoIcon = FALSE; - - memset( &maFrameData.maState, 0, sizeof( SalFrameState ) ); - maFrameData.maSysData.nSize = sizeof( SystemEnvData ); + mhWnd = 0; + mhCursor = LoadCursor( 0, IDC_ARROW ); + mhDefIMEContext = 0; + mpGraphics = NULL; + mpGraphics2 = NULL; + mnShowState = SW_SHOWNORMAL; + mnWidth = 0; + mnHeight = 0; + mnMinWidth = 0; + mnMinHeight = 0; + mnInputLang = 0; + mnInputCodePage = 0; + mbGraphics = FALSE; + mbCaption = FALSE; + mbBorder = FALSE; + mbFixBorder = FALSE; + mbSizeBorder = FALSE; + mbFullScreen = FALSE; + mbPresentation = FALSE; + mbInShow = FALSE; + mbRestoreMaximize = FALSE; + mbInMoveMsg = FALSE; + mbInSizeMsg = FALSE; + mbFullScreenToolWin = FALSE; + mbDefPos = TRUE; + mbOverwriteState = TRUE; + mbIME = FALSE; + mbHandleIME = FALSE; + mbSpezIME = FALSE; + mbAtCursorIME = FALSE; + mbCandidateMode = FALSE; + mbFloatWin = FALSE; + mbNoIcon = FALSE; + + memset( &maState, 0, sizeof( SalFrameState ) ); + maSysData.nSize = sizeof( SystemEnvData ); memset( &maGeometry, 0, sizeof( maGeometry ) ); @@ -984,35 +975,35 @@ SalFrame::SalFrame() } // insert frame in framelist - maFrameData.mpNextFrame = pSalData->mpFirstFrame; + mpNextFrame = pSalData->mpFirstFrame; pSalData->mpFirstFrame = this; } // ----------------------------------------------------------------------- -SalFrame::~SalFrame() +WinSalFrame::~WinSalFrame() { SalData* pSalData = GetSalData(); // Release Cache DC - if ( maFrameData.mpGraphics2 && - maFrameData.mpGraphics2->maGraphicsData.mhDC ) - ReleaseGraphics( maFrameData.mpGraphics2 ); + if ( mpGraphics2 && + mpGraphics2->mhDC ) + ReleaseGraphics( mpGraphics2 ); // destroy saved DC - if ( maFrameData.mpGraphics ) + if ( mpGraphics ) { - if ( maFrameData.mpGraphics->maGraphicsData.mhDefPal ) - SelectPalette( maFrameData.mpGraphics->maGraphicsData.mhDC, maFrameData.mpGraphics->maGraphicsData.mhDefPal, TRUE ); - ImplSalDeInitGraphics( &(maFrameData.mpGraphics->maGraphicsData) ); - ReleaseDC( maFrameData.mhWnd, maFrameData.mpGraphics->maGraphicsData.mhDC ); - delete maFrameData.mpGraphics; + if ( mpGraphics->mhDefPal ) + SelectPalette( mpGraphics->mhDC, mpGraphics->mhDefPal, TRUE ); + ImplSalDeInitGraphics( mpGraphics ); + ReleaseDC( mhWnd, mpGraphics->mhDC ); + delete mpGraphics; } - if ( maFrameData.mhWnd ) + if ( mhWnd ) { // reset mouse leave data - if ( pSalData->mhWantLeaveMsg == maFrameData.mhWnd ) + if ( pSalData->mhWantLeaveMsg == mhWnd ) { pSalData->mhWantLeaveMsg = 0; if ( pSalData->mpMouseLeaveTimer ) @@ -1023,28 +1014,28 @@ SalFrame::~SalFrame() } // destroy system frame - if ( !DestroyWindow( maFrameData.mhWnd ) ) - SetWindowPtr( maFrameData.mhWnd, 0 ); + if ( !DestroyWindow( mhWnd ) ) + SetWindowPtr( mhWnd, 0 ); } // remove frame from framelist if ( this == pSalData->mpFirstFrame ) - pSalData->mpFirstFrame = maFrameData.mpNextFrame; + pSalData->mpFirstFrame = mpNextFrame; else { - SalFrame* pTempFrame = pSalData->mpFirstFrame; - while ( pTempFrame->maFrameData.mpNextFrame != this ) - pTempFrame = pTempFrame->maFrameData.mpNextFrame; + WinSalFrame* pTempFrame = pSalData->mpFirstFrame; + while ( pTempFrame->mpNextFrame != this ) + pTempFrame = pTempFrame->mpNextFrame; - pTempFrame->maFrameData.mpNextFrame = maFrameData.mpNextFrame; + pTempFrame->mpNextFrame = mpNextFrame; } } // ----------------------------------------------------------------------- -SalGraphics* SalFrame::GetGraphics() +SalGraphics* WinSalFrame::GetGraphics() { - if ( maFrameData.mbGraphics ) + if ( mbGraphics ) return NULL; // Other threads get an own DC, because Windows modify in the @@ -1058,116 +1049,116 @@ SalGraphics* SalFrame::GetGraphics() if ( pSalData->mnCacheDCInUse >= 3 ) return NULL; - if ( !maFrameData.mpGraphics2 ) + if ( !mpGraphics2 ) { - maFrameData.mpGraphics2 = new SalGraphicsLayout; - maFrameData.mpGraphics2->maGraphicsData.mhDC = 0; - maFrameData.mpGraphics2->maGraphicsData.mhWnd = maFrameData.mhWnd; - maFrameData.mpGraphics2->maGraphicsData.mbPrinter = FALSE; - maFrameData.mpGraphics2->maGraphicsData.mbVirDev = FALSE; - maFrameData.mpGraphics2->maGraphicsData.mbWindow = TRUE; - maFrameData.mpGraphics2->maGraphicsData.mbScreen = TRUE; + mpGraphics2 = new WinSalGraphics; + mpGraphics2->mhDC = 0; + mpGraphics2->mhWnd = mhWnd; + mpGraphics2->mbPrinter = FALSE; + mpGraphics2->mbVirDev = FALSE; + mpGraphics2->mbWindow = TRUE; + mpGraphics2->mbScreen = TRUE; } - HDC hDC = (HDC)ImplSendMessage( pSalData->mpFirstInstance->maInstData.mhComWnd, + HDC hDC = (HDC)ImplSendMessage( pSalData->mpFirstInstance->mhComWnd, SAL_MSG_GETDC, - (WPARAM)maFrameData.mhWnd, 0 ); + (WPARAM)mhWnd, 0 ); if ( hDC ) { - maFrameData.mpGraphics2->maGraphicsData.mhDC = hDC; + mpGraphics2->mhDC = hDC; if ( pSalData->mhDitherPal ) { - maFrameData.mpGraphics2->maGraphicsData.mhDefPal = SelectPalette( hDC, pSalData->mhDitherPal, TRUE ); + mpGraphics2->mhDefPal = SelectPalette( hDC, pSalData->mhDitherPal, TRUE ); RealizePalette( hDC ); } - ImplSalInitGraphics( &(maFrameData.mpGraphics2->maGraphicsData) ); - maFrameData.mbGraphics = TRUE; + ImplSalInitGraphics( mpGraphics2 ); + mbGraphics = TRUE; pSalData->mnCacheDCInUse++; - return maFrameData.mpGraphics2; + return mpGraphics2; } else return NULL; } else { - if ( !maFrameData.mpGraphics ) + if ( !mpGraphics ) { - HDC hDC = GetDC( maFrameData.mhWnd ); + HDC hDC = GetDC( mhWnd ); if ( hDC ) { - maFrameData.mpGraphics = new SalGraphicsLayout; - maFrameData.mpGraphics->maGraphicsData.mhDC = hDC; - maFrameData.mpGraphics->maGraphicsData.mhWnd = maFrameData.mhWnd; - maFrameData.mpGraphics->maGraphicsData.mbPrinter = FALSE; - maFrameData.mpGraphics->maGraphicsData.mbVirDev = FALSE; - maFrameData.mpGraphics->maGraphicsData.mbWindow = TRUE; - maFrameData.mpGraphics->maGraphicsData.mbScreen = TRUE; + mpGraphics = new WinSalGraphics; + mpGraphics->mhDC = hDC; + mpGraphics->mhWnd = mhWnd; + mpGraphics->mbPrinter = FALSE; + mpGraphics->mbVirDev = FALSE; + mpGraphics->mbWindow = TRUE; + mpGraphics->mbScreen = TRUE; if ( pSalData->mhDitherPal ) { - maFrameData.mpGraphics->maGraphicsData.mhDefPal = SelectPalette( hDC, pSalData->mhDitherPal, TRUE ); + mpGraphics->mhDefPal = SelectPalette( hDC, pSalData->mhDitherPal, TRUE ); RealizePalette( hDC ); } - ImplSalInitGraphics( &(maFrameData.mpGraphics->maGraphicsData) ); - maFrameData.mbGraphics = TRUE; + ImplSalInitGraphics( mpGraphics ); + mbGraphics = TRUE; } } else - maFrameData.mbGraphics = TRUE; + mbGraphics = TRUE; - return maFrameData.mpGraphics; + return mpGraphics; } } // ----------------------------------------------------------------------- -void SalFrame::ReleaseGraphics( SalGraphics* pGraphics ) +void WinSalFrame::ReleaseGraphics( SalGraphics* pGraphics ) { - if ( maFrameData.mpGraphics2 == pGraphics ) + if ( mpGraphics2 == pGraphics ) { - if ( maFrameData.mpGraphics2->maGraphicsData.mhDC ) + if ( mpGraphics2->mhDC ) { SalData* pSalData = GetSalData(); - if ( maFrameData.mpGraphics2->maGraphicsData.mhDefPal ) - SelectPalette( maFrameData.mpGraphics2->maGraphicsData.mhDC, maFrameData.mpGraphics2->maGraphicsData.mhDefPal, TRUE ); - ImplSalDeInitGraphics( &(maFrameData.mpGraphics2->maGraphicsData) ); - ImplSendMessage( pSalData->mpFirstInstance->maInstData.mhComWnd, + if ( mpGraphics2->mhDefPal ) + SelectPalette( mpGraphics2->mhDC, mpGraphics2->mhDefPal, TRUE ); + ImplSalDeInitGraphics( mpGraphics2 ); + ImplSendMessage( pSalData->mpFirstInstance->mhComWnd, SAL_MSG_RELEASEDC, - (WPARAM)maFrameData.mhWnd, - (LPARAM)maFrameData.mpGraphics2->maGraphicsData.mhDC ); - maFrameData.mpGraphics2->maGraphicsData.mhDC = 0; + (WPARAM)mhWnd, + (LPARAM)mpGraphics2->mhDC ); + mpGraphics2->mhDC = 0; pSalData->mnCacheDCInUse--; } } - maFrameData.mbGraphics = FALSE; + mbGraphics = FALSE; } // ----------------------------------------------------------------------- -BOOL SalFrame::PostEvent( void* pData ) +BOOL WinSalFrame::PostEvent( void* pData ) { - return (BOOL)ImplPostMessage( maFrameData.mhWnd, SAL_MSG_USEREVENT, 0, (LPARAM)pData ); + return (BOOL)ImplPostMessage( mhWnd, SAL_MSG_USEREVENT, 0, (LPARAM)pData ); } // ----------------------------------------------------------------------- -void SalFrame::SetTitle( const XubString& rTitle ) +void WinSalFrame::SetTitle( const XubString& rTitle ) { - DBG_ASSERT( sizeof( WCHAR ) == sizeof( xub_Unicode ), "SalFrame::SetTitle(): WCHAR != sal_Unicode" ); + DBG_ASSERT( sizeof( WCHAR ) == sizeof( xub_Unicode ), "WinSalFrame::SetTitle(): WCHAR != sal_Unicode" ); - if ( !SetWindowTextW( maFrameData.mhWnd, rTitle.GetBuffer() ) ) + if ( !SetWindowTextW( mhWnd, rTitle.GetBuffer() ) ) { ByteString aAnsiTitle = ImplSalGetWinAnsiString( rTitle ); - SetWindowTextA( maFrameData.mhWnd, aAnsiTitle.GetBuffer() ); + SetWindowTextA( mhWnd, aAnsiTitle.GetBuffer() ); } } // ----------------------------------------------------------------------- -void SalFrame::SetIcon( USHORT nIcon ) +void WinSalFrame::SetIcon( USHORT nIcon ) { // If we have a window without an Icon (for example a dialog), ignore this call - if ( maFrameData.mbNoIcon ) + if ( mbNoIcon ) return; // 0 means default (class) icon @@ -1177,23 +1168,23 @@ void SalFrame::SetIcon( USHORT nIcon ) ImplLoadSalIcon( nIcon, hIcon, hSmIcon ); - DBG_ASSERT( hIcon , "SalFrame::SetIcon(): Could not load large icon !" ); - DBG_ASSERT( hSmIcon , "SalFrame::SetIcon(): Could not load small icon !" ); + DBG_ASSERT( hIcon , "WinSalFrame::SetIcon(): Could not load large icon !" ); + DBG_ASSERT( hSmIcon , "WinSalFrame::SetIcon(): Could not load small icon !" ); - ImplSendMessage( maFrameData.mhWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon ); - ImplSendMessage( maFrameData.mhWnd, WM_SETICON, ICON_SMALL, (LPARAM)hSmIcon ); + ImplSendMessage( mhWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon ); + ImplSendMessage( mhWnd, WM_SETICON, ICON_SMALL, (LPARAM)hSmIcon ); } // ----------------------------------------------------------------------- HWND ImplGetParentHwnd( HWND hWnd ) { #ifndef REMOTE_APPSERVER - SalFrame* pFrame = GetWindowPtr( hWnd ); - if( !pFrame || !pFrame->maFrameData.mpInst) + WinSalFrame* pFrame = GetWindowPtr( hWnd ); + if( !pFrame || !pFrame->GetInstance()) return ::GetParent( hWnd ); - Window *pRealParent = ((Window*)pFrame->maFrameData.mpInst)->mpRealParent; + Window *pRealParent = ((Window*)pFrame->GetInstance())->mpRealParent; if( pRealParent ) - return pRealParent->mpFrame->maFrameData.mhWnd; + return static_cast<WinSalFrame*>(pRealParent->mpFrame)->mhWnd; else return ::GetParent( hWnd ); #else @@ -1204,24 +1195,24 @@ HWND ImplGetParentHwnd( HWND hWnd ) // ----------------------------------------------------------------------- -SalFrame* SalFrame::GetParent() const +SalFrame* WinSalFrame::GetParent() const { - return GetWindowPtr( ImplGetParentHwnd( maFrameData.mhWnd ) ); + return GetWindowPtr( ImplGetParentHwnd( mhWnd ) ); } // ----------------------------------------------------------------------- static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return; if ( bVisible ) { - pFrame->maFrameData.mbDefPos = FALSE; - pFrame->maFrameData.mbOverwriteState = TRUE; - pFrame->maFrameData.mbInShow = TRUE; + pFrame->mbDefPos = FALSE; + pFrame->mbOverwriteState = TRUE; + pFrame->mbInShow = TRUE; // #i4715, save position RECT aRectPreMatrox, aRectPostMatrox; @@ -1230,9 +1221,9 @@ static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate ) if( bNoActivate ) ShowWindow( hWnd, SW_SHOWNOACTIVATE ); else - ShowWindow( hWnd, pFrame->maFrameData.mnShowState ); + ShowWindow( hWnd, pFrame->mnShowState ); - if ( aSalShlData.mbWXP && pFrame->maFrameData.mbFloatWin && !(pFrame->maFrameData.mnStyle & SAL_FRAME_STYLE_NOSHADOW)) + if ( aSalShlData.mbWXP && pFrame->mbFloatWin && !(pFrame->mnStyle & SAL_FRAME_STYLE_NOSHADOW)) { // erase the window immediately to improve XP shadow effect // otherwise the shadow may appears long time before the rest of the window @@ -1248,17 +1239,17 @@ static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate ) // reposition popups without caption (menues, dropdowns, tooltips) GetWindowRect( hWnd, &aRectPostMatrox ); if( (GetWindowStyle( hWnd ) & WS_POPUP) && - !pFrame->maFrameData.mbCaption && + !pFrame->mbCaption && (aRectPreMatrox.left != aRectPostMatrox.left || aRectPreMatrox.top != aRectPostMatrox.top) ) SetWindowPos( hWnd, 0, aRectPreMatrox.left, aRectPreMatrox.top, 0, 0, SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOSIZE ); - Window *pClientWin = ((Window*)pFrame->maFrameData.mpInst)->ImplGetClientWindow(); - if ( pFrame->maFrameData.mbFloatWin || ( pClientWin && (pClientWin->GetStyle() & WB_SYSTEMFLOATWIN) ) ) - pFrame->maFrameData.mnShowState = SW_SHOWNOACTIVATE; + Window *pClientWin = ((Window*)pFrame->GetInstance())->ImplGetClientWindow(); + if ( pFrame->mbFloatWin || ( pClientWin && (pClientWin->GetStyle() & WB_SYSTEMFLOATWIN) ) ) + pFrame->mnShowState = SW_SHOWNOACTIVATE; else - pFrame->maFrameData.mnShowState = SW_SHOW; + pFrame->mnShowState = SW_SHOW; // Damit Taskleiste unter W98 auch gleich ausgeblendet wird - if ( pFrame->maFrameData.mbPresentation ) + if ( pFrame->mbPresentation ) { HWND hWndParent = ::GetParent( hWnd ); if ( hWndParent ) @@ -1266,7 +1257,7 @@ static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate ) SetForegroundWindow( hWnd ); } - pFrame->maFrameData.mbInShow = FALSE; + pFrame->mbInShow = FALSE; // Direct Paint only, if we get the SolarMutx @@ -1279,8 +1270,8 @@ static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate ) else { // See also Bug #91813# and #68467# - if ( pFrame->maFrameData.mbFullScreen && - pFrame->maFrameData.mbPresentation && + if ( pFrame->mbFullScreen && + pFrame->mbPresentation && (aSalShlData.mnVersion < 500) && !::GetParent( hWnd ) ) { @@ -1299,7 +1290,7 @@ static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate ) int nOldAni = aInfo.iMinAnimate; aInfo.iMinAnimate = 0; SystemParametersInfo( SPI_SETANIMATION, 0, &aInfo, 0 ); - ShowWindow( pFrame->maFrameData.mhWnd, SW_SHOWMINNOACTIVE ); + ShowWindow( pFrame->mhWnd, SW_SHOWMINNOACTIVE ); aInfo.iMinAnimate = nOldAni; SystemParametersInfo( SPI_SETANIMATION, 0, &aInfo, 0 ); } @@ -1314,57 +1305,57 @@ static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate ) // ----------------------------------------------------------------------- -void SalFrame::Show( BOOL bVisible, BOOL bNoActivate ) +void WinSalFrame::Show( BOOL bVisible, BOOL bNoActivate ) { // Post this Message to the window, because this only works // in the thread of the window, which has create this window. // We post this message to avoid deadlocks if ( GetSalData()->mnAppThreadId != GetCurrentThreadId() ) - ImplPostMessage( maFrameData.mhWnd, SAL_MSG_SHOW, bVisible, bNoActivate ); + ImplPostMessage( mhWnd, SAL_MSG_SHOW, bVisible, bNoActivate ); else - ImplSalShow( maFrameData.mhWnd, bVisible, bNoActivate ); + ImplSalShow( mhWnd, bVisible, bNoActivate ); } // ----------------------------------------------------------------------- -void SalFrame::Enable( BOOL bEnable ) +void WinSalFrame::Enable( BOOL bEnable ) { - EnableWindow( maFrameData.mhWnd, bEnable ); + EnableWindow( mhWnd, bEnable ); } // ----------------------------------------------------------------------- -void SalFrame::SetMinClientSize( long nWidth, long nHeight ) +void WinSalFrame::SetMinClientSize( long nWidth, long nHeight ) { - maFrameData.mnMinWidth = nWidth; - maFrameData.mnMinHeight = nHeight; + mnMinWidth = nWidth; + mnMinHeight = nHeight; } // ----------------------------------------------------------------------- -void SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, +void WinSalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, USHORT nFlags ) { - BOOL bVisible = (GetWindowStyle( maFrameData.mhWnd ) & WS_VISIBLE) != 0; + BOOL bVisible = (GetWindowStyle( mhWnd ) & WS_VISIBLE) != 0; if ( !bVisible ) { - Window *pClientWin = ((Window*)maFrameData.mpInst)->ImplGetClientWindow(); - if ( maFrameData.mbFloatWin || ( pClientWin && (pClientWin->GetStyle() & WB_SYSTEMFLOATWIN) ) ) - maFrameData.mnShowState = SW_SHOWNOACTIVATE; + Window *pClientWin = ((Window*)GetInstance())->ImplGetClientWindow(); + if ( mbFloatWin || ( pClientWin && (pClientWin->GetStyle() & WB_SYSTEMFLOATWIN) ) ) + mnShowState = SW_SHOWNOACTIVATE; else - maFrameData.mnShowState = SW_SHOWNORMAL; + mnShowState = SW_SHOWNORMAL; } else { - if ( IsIconic( maFrameData.mhWnd ) || IsZoomed( maFrameData.mhWnd ) ) - ShowWindow( maFrameData.mhWnd, SW_RESTORE ); + if ( IsIconic( mhWnd ) || IsZoomed( mhWnd ) ) + ShowWindow( mhWnd, SW_RESTORE ); } USHORT nEvent = 0; UINT nPosSize = 0; RECT aClientRect, aWindowRect; - GetClientRect( maFrameData.mhWnd, &aClientRect ); // x,y always 0,0, but width and height without border - GetWindowRect( maFrameData.mhWnd, &aWindowRect ); // x,y in screen coordinates, width and height with border + GetClientRect( mhWnd, &aClientRect ); // x,y always 0,0, but width and height without border + GetWindowRect( mhWnd, &aWindowRect ); // x,y in screen coordinates, width and height with border if ( !(nFlags & (SAL_FRAME_POSSIZE_X | SAL_FRAME_POSSIZE_Y)) ) nPosSize |= SWP_NOMOVE; @@ -1393,23 +1384,23 @@ void SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, aWinRect.right = (int)nWidth-1; aWinRect.top = 0; aWinRect.bottom = (int)nHeight-1; - AdjustWindowRectEx( &aWinRect, GetWindowStyle( maFrameData.mhWnd ), - FALSE, GetWindowExStyle( maFrameData.mhWnd ) ); + AdjustWindowRectEx( &aWinRect, GetWindowStyle( mhWnd ), + FALSE, GetWindowExStyle( mhWnd ) ); nWidth = aWinRect.right - aWinRect.left + 1; nHeight = aWinRect.bottom - aWinRect.top + 1; - if ( !(nPosSize & SWP_NOMOVE) && ::GetParent( maFrameData.mhWnd ) ) + if ( !(nPosSize & SWP_NOMOVE) && ::GetParent( mhWnd ) ) { // --- RTL --- (mirror window pos) RECT aParentRect; - GetClientRect( ImplGetParentHwnd( maFrameData.mhWnd ), &aParentRect ); + GetClientRect( ImplGetParentHwnd( mhWnd ), &aParentRect ); if( Application::GetSettings().GetLayoutRTL() ) nX = (aParentRect.right - aParentRect.left) - nWidth-1 - nX; POINT aPt; aPt.x = nX; aPt.y = nY; - ClientToScreen( ImplGetParentHwnd( maFrameData.mhWnd ), &aPt ); + ClientToScreen( ImplGetParentHwnd( mhWnd ), &aPt ); nX = aPt.x; nY = aPt.y; } @@ -1425,17 +1416,17 @@ void SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, RECT aRect; - ImplSalGetWorkArea( maFrameData.mhWnd, &aRect, NULL ); + ImplSalGetWorkArea( mhWnd, &aRect, NULL ); nScreenX = aRect.left; nScreenY = aRect.top; nScreenWidth = aRect.right-aRect.left; nScreenHeight = aRect.bottom-aRect.top; - if ( maFrameData.mbDefPos && (nPosSize & SWP_NOMOVE)) // we got no positioning request, so choose default position + if ( mbDefPos && (nPosSize & SWP_NOMOVE)) // we got no positioning request, so choose default position { // center window - HWND hWndParent = ::GetParent( maFrameData.mhWnd ); + HWND hWndParent = ::GetParent( mhWnd ); // Search for TopLevel Frame while ( hWndParent && (GetWindowStyle( hWndParent ) & WS_CHILD) ) hWndParent = ::GetParent( hWndParent ); @@ -1475,7 +1466,7 @@ void SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, // dualmonitor support: // Get screensize of the monitor whith the mouse pointer - ImplSalGetWorkArea( maFrameData.mhWnd, &aRect, &aRect ); + ImplSalGetWorkArea( mhWnd, &aRect, &aRect ); nX = ((aRect.right-aRect.left)-nWidth)/2 + aRect.left; nY = ((aRect.bottom-aRect.top)-nHeight)/2 + aRect.top; @@ -1483,9 +1474,9 @@ void SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, //if ( bVisible ) - // maFrameData.mbDefPos = FALSE; + // mbDefPos = FALSE; - maFrameData.mbDefPos = FALSE; // center only once + mbDefPos = FALSE; // center only once nPosSize &= ~SWP_NOMOVE; // activate positioning nEvent = SALEVENT_MOVERESIZE; } @@ -1503,81 +1494,81 @@ void SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, UINT nPosFlags = SWP_NOACTIVATE | SWP_NOOWNERZORDER | nPosSize; // bring floating windows always to top - if( !(maFrameData.mnStyle & SAL_FRAME_STYLE_FLOAT) ) + if( !(mnStyle & SAL_FRAME_STYLE_FLOAT) ) nPosFlags |= SWP_NOZORDER; // do not change z-order - SetWindowPos( maFrameData.mhWnd, HWND_TOP, nX, nY, (int)nWidth, (int)nHeight, nPosFlags ); + SetWindowPos( mhWnd, HWND_TOP, nX, nY, (int)nWidth, (int)nHeight, nPosFlags ); - UpdateFrameGeometry( maFrameData.mhWnd, this ); + UpdateFrameGeometry( mhWnd, this ); // Notification -- really ??? if( nEvent ) - maFrameData.mpProc( maFrameData.mpInst, this, nEvent, NULL ); + CallCallback( nEvent, NULL ); } // ----------------------------------------------------------------------- -static void ImplSetParentFrame( SalFrame* pThis, HWND hNewParentWnd, BOOL bAsChild ) +static void ImplSetParentFrame( WinSalFrame* pThis, HWND hNewParentWnd, BOOL bAsChild ) { pThis->mbInReparent = TRUE; // save hwnd, will be overwritten in WM_CREATE during createwindow - HWND hWndOld = pThis->maFrameData.mhWnd; - BOOL bNeedGraphics = pThis->maFrameData.mbGraphics; + HWND hWndOld = pThis->mhWnd; + BOOL bNeedGraphics = pThis->mbGraphics; HFONT hFont = NULL; HPEN hPen = NULL; HBRUSH hBrush = NULL; // Release Cache DC - if ( pThis->maFrameData.mpGraphics2 && - pThis->maFrameData.mpGraphics2->maGraphicsData.mhDC ) + if ( pThis->mpGraphics2 && + pThis->mpGraphics2->mhDC ) { // save current gdi objects before hdc is gone - hFont = (HFONT) GetCurrentObject( pThis->maFrameData.mpGraphics2->maGraphicsData.mhDC, OBJ_FONT); - hPen = (HPEN) GetCurrentObject( pThis->maFrameData.mpGraphics2->maGraphicsData.mhDC, OBJ_PEN); - hBrush = (HBRUSH) GetCurrentObject( pThis->maFrameData.mpGraphics2->maGraphicsData.mhDC, OBJ_BRUSH); - pThis->ReleaseGraphics( pThis->maFrameData.mpGraphics2 ); + hFont = (HFONT) GetCurrentObject( pThis->mpGraphics2->mhDC, OBJ_FONT); + hPen = (HPEN) GetCurrentObject( pThis->mpGraphics2->mhDC, OBJ_PEN); + hBrush = (HBRUSH) GetCurrentObject( pThis->mpGraphics2->mhDC, OBJ_BRUSH); + pThis->ReleaseGraphics( pThis->mpGraphics2 ); } // destroy saved DC - if ( pThis->maFrameData.mpGraphics ) + if ( pThis->mpGraphics ) { - if ( pThis->maFrameData.mpGraphics->maGraphicsData.mhDefPal ) - SelectPalette( pThis->maFrameData.mpGraphics->maGraphicsData.mhDC, pThis->maFrameData.mpGraphics->maGraphicsData.mhDefPal, TRUE ); - ImplSalDeInitGraphics( &(pThis->maFrameData.mpGraphics->maGraphicsData) ); - ReleaseDC( pThis->maFrameData.mhWnd, pThis->maFrameData.mpGraphics->maGraphicsData.mhDC ); + if ( pThis->mpGraphics->mhDefPal ) + SelectPalette( pThis->mpGraphics->mhDC, pThis->mpGraphics->mhDefPal, TRUE ); + ImplSalDeInitGraphics( pThis->mpGraphics ); + ReleaseDC( pThis->mhWnd, pThis->mpGraphics->mhDC ); } // create a new hwnd with the same styles HWND hWndParent = hNewParentWnd; // forward to main thread - HWND hWnd = (HWND) ImplSendMessage( GetSalData()->mpFirstInstance->maInstData.mhComWnd, + HWND hWnd = (HWND) ImplSendMessage( GetSalData()->mpFirstInstance->mhComWnd, bAsChild ? SAL_MSG_RECREATECHILDHWND : SAL_MSG_RECREATEHWND, - (WPARAM) hWndParent, (LPARAM)pThis->maFrameData.mhWnd ); + (WPARAM) hWndParent, (LPARAM)pThis->mhWnd ); // succeeded ? hWndParent = ::GetParent( hWnd ); - DBG_ASSERT( hWndParent == hNewParentWnd, "SalFrame::SetParent not successful"); + DBG_ASSERT( hWndParent == hNewParentWnd, "WinSalFrame::SetParent not successful"); // recreate DCs if( bNeedGraphics ) { - if( pThis->maFrameData.mpGraphics2 ) + if( pThis->mpGraphics2 ) { // re-create cached DC - HDC hDC = (HDC)ImplSendMessage( GetSalData()->mpFirstInstance->maInstData.mhComWnd, + HDC hDC = (HDC)ImplSendMessage( GetSalData()->mpFirstInstance->mhComWnd, SAL_MSG_GETDC, (WPARAM) hWnd, 0 ); - pThis->maFrameData.mpGraphics2->maGraphicsData.mhWnd = hWnd; + pThis->mpGraphics2->mhWnd = hWnd; if ( hDC ) { - pThis->maFrameData.mpGraphics2->maGraphicsData.mhDC = hDC; + pThis->mpGraphics2->mhDC = hDC; if ( GetSalData()->mhDitherPal ) { - pThis->maFrameData.mpGraphics2->maGraphicsData.mhDefPal = SelectPalette( hDC, GetSalData()->mhDitherPal, TRUE ); + pThis->mpGraphics2->mhDefPal = SelectPalette( hDC, GetSalData()->mhDitherPal, TRUE ); RealizePalette( hDC ); } - ImplSalInitGraphics( &(pThis->maFrameData.mpGraphics2->maGraphicsData) ); + ImplSalInitGraphics( pThis->mpGraphics2 ); // re-select saved gdi objects if( hFont ) @@ -1587,23 +1578,23 @@ static void ImplSetParentFrame( SalFrame* pThis, HWND hNewParentWnd, BOOL bAsChi if( hBrush ) SelectObject( hDC, hBrush ); - pThis->maFrameData.mbGraphics = TRUE; + pThis->mbGraphics = TRUE; GetSalData()->mnCacheDCInUse++; } } - if( pThis->maFrameData.mpGraphics ) + if( pThis->mpGraphics ) { // re-create DC - pThis->maFrameData.mpGraphics->maGraphicsData.mhWnd = hWnd; - pThis->maFrameData.mpGraphics->maGraphicsData.mhDC = GetDC( hWnd ); + pThis->mpGraphics->mhWnd = hWnd; + pThis->mpGraphics->mhDC = GetDC( hWnd ); if ( GetSalData()->mhDitherPal ) { - pThis->maFrameData.mpGraphics->maGraphicsData.mhDefPal = SelectPalette( pThis->maFrameData.mpGraphics->maGraphicsData.mhDC, GetSalData()->mhDitherPal, TRUE ); - RealizePalette( pThis->maFrameData.mpGraphics->maGraphicsData.mhDC ); + pThis->mpGraphics->mhDefPal = SelectPalette( pThis->mpGraphics->mhDC, GetSalData()->mhDitherPal, TRUE ); + RealizePalette( pThis->mpGraphics->mhDC ); } - ImplSalInitGraphics( &(pThis->maFrameData.mpGraphics->maGraphicsData) ); - pThis->maFrameData.mbGraphics = TRUE; + ImplSalInitGraphics( pThis->mpGraphics ); + pThis->mbGraphics = TRUE; } } @@ -1615,12 +1606,12 @@ static void ImplSetParentFrame( SalFrame* pThis, HWND hNewParentWnd, BOOL bAsChi // ----------------------------------------------------------------------- -void SalFrame::SetParent( SalFrame* pNewParent ) +void WinSalFrame::SetParent( SalFrame* pNewParent ) { - ImplSetParentFrame( this, pNewParent->maFrameData.mhWnd, FALSE ); + ImplSetParentFrame( this, static_cast<WinSalFrame*>(pNewParent)->mhWnd, FALSE ); } -bool SalFrame::SetPluginParent( SystemParentData* pNewParent ) +bool WinSalFrame::SetPluginParent( SystemParentData* pNewParent ) { ImplSetParentFrame( this, pNewParent->hWnd, TRUE ); return true; @@ -1629,10 +1620,10 @@ bool SalFrame::SetPluginParent( SystemParentData* pNewParent ) // ----------------------------------------------------------------------- -void SalFrame::GetWorkArea( Rectangle &rRect ) +void WinSalFrame::GetWorkArea( Rectangle &rRect ) { RECT aRect; - ImplSalGetWorkArea( maFrameData.mhWnd, &aRect, NULL ); + ImplSalGetWorkArea( mhWnd, &aRect, NULL ); rRect.nLeft = aRect.left; rRect.nRight = aRect.right-1; rRect.nTop = aRect.top; @@ -1641,7 +1632,7 @@ void SalFrame::GetWorkArea( Rectangle &rRect ) // ----------------------------------------------------------------------- -void SalFrame::GetClientSize( long& rWidth, long& rHeight ) +void WinSalFrame::GetClientSize( long& rWidth, long& rHeight ) { rWidth = maGeometry.nWidth; rHeight = maGeometry.nHeight; @@ -1649,7 +1640,7 @@ void SalFrame::GetClientSize( long& rWidth, long& rHeight ) // ----------------------------------------------------------------------- -void SalFrame::SetWindowState( const SalFrameState* pState ) +void WinSalFrame::SetWindowState( const SalFrameState* pState ) { // Wir testen, ob das Fenster ueberhaupt auf den Bildschirm passt, damit // nicht wenn die Bildschirm-Aufloesung geaendert wurde, das Fenster aus @@ -1664,7 +1655,7 @@ void SalFrame::SetWindowState( const SalFrameState* pState ) int nScreenHeight; RECT aRect; - ImplSalGetWorkArea( maFrameData.mhWnd, &aRect, NULL ); + ImplSalGetWorkArea( mhWnd, &aRect, NULL ); // #102500# allow some overlap, the window could have been made a little larger than the physical screen nScreenX = aRect.left-10; nScreenY = aRect.top-10; @@ -1673,13 +1664,13 @@ void SalFrame::SetWindowState( const SalFrameState* pState ) UINT nPosSize = 0; RECT aWinRect; - GetWindowRect( maFrameData.mhWnd, &aWinRect ); + GetWindowRect( mhWnd, &aWinRect ); // to be consistent with Unix, the frame state is without(!) decoration // ->add the decoration RECT aRect2 = aWinRect; - AdjustWindowRectEx( &aRect2, GetWindowStyle( maFrameData.mhWnd ), - FALSE, GetWindowExStyle( maFrameData.mhWnd ) ); + AdjustWindowRectEx( &aRect2, GetWindowStyle( mhWnd ), + FALSE, GetWindowExStyle( mhWnd ) ); long nTopDeco = abs( aWinRect.top - aRect2.top ); long nLeftDeco = abs( aWinRect.left - aRect2.left ); long nBottomDeco = abs( aWinRect.bottom - aRect2.bottom ); @@ -1726,28 +1717,28 @@ void SalFrame::SetWindowState( const SalFrameState* pState ) // Restore-Position setzen WINDOWPLACEMENT aPlacement; aPlacement.length = sizeof( aPlacement ); - GetWindowPlacement( maFrameData.mhWnd, &aPlacement ); + GetWindowPlacement( mhWnd, &aPlacement ); // Status setzen - BOOL bVisible = (GetWindowStyle( maFrameData.mhWnd ) & WS_VISIBLE) != 0; + BOOL bVisible = (GetWindowStyle( mhWnd ) & WS_VISIBLE) != 0; BOOL bUpdateHiddenFramePos = FALSE; if ( !bVisible ) { aPlacement.showCmd = SW_HIDE; - if ( maFrameData.mbOverwriteState ) + if ( mbOverwriteState ) { if ( pState->mnMask & SAL_FRAMESTATE_MASK_STATE ) { if ( pState->mnState & SAL_FRAMESTATE_MINIMIZED ) - maFrameData.mnShowState = SW_SHOWMINIMIZED; + mnShowState = SW_SHOWMINIMIZED; else if ( pState->mnState & SAL_FRAMESTATE_MAXIMIZED ) { - maFrameData.mnShowState = SW_SHOWMAXIMIZED; + mnShowState = SW_SHOWMAXIMIZED; bUpdateHiddenFramePos = TRUE; } else if ( pState->mnState & SAL_FRAMESTATE_NORMAL ) - maFrameData.mnShowState = SW_SHOWNORMAL; + mnShowState = SW_SHOWNORMAL; } } } @@ -1771,7 +1762,7 @@ void SalFrame::SetWindowState( const SalFrameState* pState ) // Wenn Fenster nicht minimiert/maximiert ist oder nicht optisch // umgesetzt werden muss, dann SetWindowPos() benutzen, da // SetWindowPlacement() die TaskBar mit einrechnet - if ( !IsIconic( maFrameData.mhWnd ) && !IsZoomed( maFrameData.mhWnd ) && + if ( !IsIconic( mhWnd ) && !IsZoomed( mhWnd ) && (!bVisible || (aPlacement.showCmd == SW_RESTORE)) ) { if( bUpdateHiddenFramePos ) @@ -1790,16 +1781,16 @@ void SalFrame::SetWindowState( const SalFrameState* pState ) // Get screensize of the monitor whith the mouse pointer RECT aRect; - ImplSalGetWorkArea( maFrameData.mhWnd, &aRect, &aRectMouse ); - AdjustWindowRectEx( &aRect, GetWindowStyle( maFrameData.mhWnd ), - FALSE, GetWindowExStyle( maFrameData.mhWnd ) ); + ImplSalGetWorkArea( mhWnd, &aRect, &aRectMouse ); + AdjustWindowRectEx( &aRect, GetWindowStyle( mhWnd ), + FALSE, GetWindowExStyle( mhWnd ) ); maGeometry.nX = aRect.left; maGeometry.nY = aRect.top;; maGeometry.nWidth = aRect.right - aRect.left + 1; maGeometry.nHeight = aRect.bottom - aRect.top + 1; } else - SetWindowPos( maFrameData.mhWnd, 0, + SetWindowPos( mhWnd, 0, nX, nY, nWidth, nHeight, SWP_NOZORDER | SWP_NOACTIVATE | nPosSize ); } @@ -1812,20 +1803,20 @@ void SalFrame::SetWindowState( const SalFrameState* pState ) aPlacement.rcNormalPosition.right = nX+nWidth-nScreenX; aPlacement.rcNormalPosition.bottom = nY+nHeight-nScreenY; } - SetWindowPlacement( maFrameData.mhWnd, &aPlacement ); + SetWindowPlacement( mhWnd, &aPlacement ); } if( !(nPosSize & SWP_NOMOVE) ) - maFrameData.mbDefPos = FALSE; // window was positioned + mbDefPos = FALSE; // window was positioned } // ----------------------------------------------------------------------- -BOOL SalFrame::GetWindowState( SalFrameState* pState ) +BOOL WinSalFrame::GetWindowState( SalFrameState* pState ) { - if ( maFrameData.maState.mnWidth && maFrameData.maState.mnHeight ) + if ( maState.mnWidth && maState.mnHeight ) { - *pState = maFrameData.maState; + *pState = maState; // #94144# allow Minimize again, should be masked out when read from configuration // 91625 - Don't save minimize //if ( !(pState->mnState & SAL_FRAMESTATE_MAXIMIZED) ) @@ -1839,32 +1830,32 @@ BOOL SalFrame::GetWindowState( SalFrameState* pState ) // ----------------------------------------------------------------------- -void SalFrame::ShowFullScreen( BOOL bFullScreen ) +void WinSalFrame::ShowFullScreen( BOOL bFullScreen ) { - if ( maFrameData.mbFullScreen == bFullScreen ) + if ( mbFullScreen == bFullScreen ) return; - maFrameData.mbFullScreen = bFullScreen; + mbFullScreen = bFullScreen; if ( bFullScreen ) { #if ( WINVER >= 0x0400 ) // Damit Taskleiste von Windows ausgeblendet wird - DWORD nExStyle = GetWindowExStyle( maFrameData.mhWnd ); + DWORD nExStyle = GetWindowExStyle( mhWnd ); if ( nExStyle & WS_EX_TOOLWINDOW ) { - maFrameData.mbFullScreenToolWin = TRUE; + mbFullScreenToolWin = TRUE; nExStyle &= ~WS_EX_TOOLWINDOW; - SetWindowExStyle( maFrameData.mhWnd, nExStyle ); + SetWindowExStyle( mhWnd, nExStyle ); } #endif // save old position - GetWindowRect( maFrameData.mhWnd, &maFrameData.maFullScreenRect ); + GetWindowRect( mhWnd, &maFullScreenRect ); // save show state - maFrameData.mnFullScreenShowState = maFrameData.mnShowState; - if ( !(GetWindowStyle( maFrameData.mhWnd ) & WS_VISIBLE) ) - maFrameData.mnShowState = SW_SHOW; + mnFullScreenShowState = mnShowState; + if ( !(GetWindowStyle( mhWnd ) & WS_VISIBLE) ) + mnShowState = SW_SHOW; // set window to screen size ImplSalFrameFullScreenPos( this, TRUE ); @@ -1873,33 +1864,33 @@ void SalFrame::ShowFullScreen( BOOL bFullScreen ) { // wenn ShowState wieder hergestellt werden muss, hiden wir zuerst // das Fenster, damit es nicht so sehr flackert - BOOL bVisible = (GetWindowStyle( maFrameData.mhWnd ) & WS_VISIBLE) != 0; - if ( bVisible && (maFrameData.mnShowState != maFrameData.mnFullScreenShowState) ) - ShowWindow( maFrameData.mhWnd, SW_HIDE ); + BOOL bVisible = (GetWindowStyle( mhWnd ) & WS_VISIBLE) != 0; + if ( bVisible && (mnShowState != mnFullScreenShowState) ) + ShowWindow( mhWnd, SW_HIDE ); #if ( WINVER >= 0x0400 ) - if ( maFrameData.mbFullScreenToolWin ) - SetWindowExStyle( maFrameData.mhWnd, GetWindowExStyle( maFrameData.mhWnd ) | WS_EX_TOOLWINDOW ); - maFrameData.mbFullScreenToolWin = FALSE; + if ( mbFullScreenToolWin ) + SetWindowExStyle( mhWnd, GetWindowExStyle( mhWnd ) | WS_EX_TOOLWINDOW ); + mbFullScreenToolWin = FALSE; #endif - SetWindowPos( maFrameData.mhWnd, 0, - maFrameData.maFullScreenRect.left, - maFrameData.maFullScreenRect.top, - maFrameData.maFullScreenRect.right-maFrameData.maFullScreenRect.left, - maFrameData.maFullScreenRect.bottom-maFrameData.maFullScreenRect.top, + SetWindowPos( mhWnd, 0, + maFullScreenRect.left, + maFullScreenRect.top, + maFullScreenRect.right-maFullScreenRect.left, + maFullScreenRect.bottom-maFullScreenRect.top, SWP_NOZORDER | SWP_NOACTIVATE ); // restore show state - if ( maFrameData.mnShowState != maFrameData.mnFullScreenShowState ) + if ( mnShowState != mnFullScreenShowState ) { - maFrameData.mnShowState = maFrameData.mnFullScreenShowState; + mnShowState = mnFullScreenShowState; if ( bVisible ) { - maFrameData.mbInShow = TRUE; - ShowWindow( maFrameData.mhWnd, maFrameData.mnShowState ); - maFrameData.mbInShow = FALSE; - UpdateWindow( maFrameData.mhWnd ); + mbInShow = TRUE; + ShowWindow( mhWnd, mnShowState ); + mbInShow = FALSE; + UpdateWindow( mhWnd ); } } } @@ -1907,12 +1898,12 @@ void SalFrame::ShowFullScreen( BOOL bFullScreen ) // ----------------------------------------------------------------------- -void SalFrame::StartPresentation( BOOL bStart ) +void WinSalFrame::StartPresentation( BOOL bStart ) { - if ( maFrameData.mbPresentation == bStart ) + if ( mbPresentation == bStart ) return; - maFrameData.mbPresentation = bStart; + mbPresentation = bStart; SalData* pSalData = GetSalData(); if ( bStart ) @@ -1965,14 +1956,14 @@ void SalFrame::StartPresentation( BOOL bStart ) // ----------------------------------------------------------------------- -void SalFrame::SetAlwaysOnTop( BOOL bOnTop ) +void WinSalFrame::SetAlwaysOnTop( BOOL bOnTop ) { HWND hWnd; if ( bOnTop ) hWnd = HWND_TOPMOST; else hWnd = HWND_NOTOPMOST; - SetWindowPos( maFrameData.mhWnd, hWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE ); + SetWindowPos( mhWnd, hWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE ); } // ----------------------------------------------------------------------- @@ -1989,10 +1980,10 @@ static void ImplSalToTop( HWND hWnd, USHORT nFlags ) { if ( IsIconic( hIconicWnd ) ) { - SalFrame* pFrame = GetWindowPtr( hIconicWnd ); + WinSalFrame* pFrame = GetWindowPtr( hIconicWnd ); if ( pFrame ) { - if ( GetWindowPtr( hWnd )->maFrameData.mbRestoreMaximize ) + if ( GetWindowPtr( hWnd )->mbRestoreMaximize ) ShowWindow( hIconicWnd, SW_MAXIMIZE ); else ShowWindow( hIconicWnd, SW_RESTORE ); @@ -2019,21 +2010,21 @@ static void ImplSalToTop( HWND hWnd, USHORT nFlags ) // ----------------------------------------------------------------------- -void SalFrame::ToTop( USHORT nFlags ) +void WinSalFrame::ToTop( USHORT nFlags ) { nFlags &= ~SAL_FRAME_TOTOP_GRABFOCUS; // this flag is not needed on win32 // Post this Message to the window, because this only works // in the thread of the window, which has create this window. // We post this message to avoid deadlocks if ( GetSalData()->mnAppThreadId != GetCurrentThreadId() ) - ImplPostMessage( maFrameData.mhWnd, SAL_MSG_TOTOP, nFlags, 0 ); + ImplPostMessage( mhWnd, SAL_MSG_TOTOP, nFlags, 0 ); else - ImplSalToTop( maFrameData.mhWnd, nFlags ); + ImplSalToTop( mhWnd, nFlags ); } // ----------------------------------------------------------------------- -void SalFrame::SetPointer( PointerStyle ePointerStyle ) +void WinSalFrame::SetPointer( PointerStyle ePointerStyle ) { struct ImplPtrData { @@ -2152,16 +2143,16 @@ void SalFrame::SetPointer( PointerStyle ePointerStyle ) } // Unterscheidet sich der Mauspointer, dann den neuen setzen - if ( maFrameData.mhCursor != aImplPtrTab[ePointerStyle].mhCursor ) + if ( mhCursor != aImplPtrTab[ePointerStyle].mhCursor ) { - maFrameData.mhCursor = aImplPtrTab[ePointerStyle].mhCursor; - SetCursor( maFrameData.mhCursor ); + mhCursor = aImplPtrTab[ePointerStyle].mhCursor; + SetCursor( mhCursor ); } } // ----------------------------------------------------------------------- -void SalFrame::CaptureMouse( BOOL bCapture ) +void WinSalFrame::CaptureMouse( BOOL bCapture ) { // Send this Message to the window, because CaptureMouse() only work // in the thread of the window, which has create this window @@ -2170,30 +2161,30 @@ void SalFrame::CaptureMouse( BOOL bCapture ) nMsg = SAL_MSG_CAPTUREMOUSE; else nMsg = SAL_MSG_RELEASEMOUSE; - ImplSendMessage( maFrameData.mhWnd, nMsg, 0, 0 ); + ImplSendMessage( mhWnd, nMsg, 0, 0 ); } // ----------------------------------------------------------------------- -void SalFrame::SetPointerPos( long nX, long nY ) +void WinSalFrame::SetPointerPos( long nX, long nY ) { POINT aPt; aPt.x = (int)nX; aPt.y = (int)nY; - ClientToScreen( maFrameData.mhWnd, &aPt ); + ClientToScreen( mhWnd, &aPt ); SetCursorPos( aPt.x, aPt.y ); } // ----------------------------------------------------------------------- -void SalFrame::Flush() +void WinSalFrame::Flush() { GdiFlush(); } // ----------------------------------------------------------------------- -void SalFrame::Sync() +void WinSalFrame::Sync() { GdiFlush(); } @@ -2202,37 +2193,37 @@ void SalFrame::Sync() static void ImplSalFrameSetInputContext( HWND hWnd, const SalInputContext* pContext ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); BOOL bIME = (pContext->mnOptions & SAL_INPUTCONTEXT_TEXT) != 0; if ( bIME ) { - if ( !pFrame->maFrameData.mbIME ) + if ( !pFrame->mbIME ) { - pFrame->maFrameData.mbIME = TRUE; + pFrame->mbIME = TRUE; - if ( pFrame->maFrameData.mhDefIMEContext ) + if ( pFrame->mhDefIMEContext ) { - ImmAssociateContext( pFrame->maFrameData.mhWnd, pFrame->maFrameData.mhDefIMEContext ); + ImmAssociateContext( pFrame->mhWnd, pFrame->mhDefIMEContext ); UINT nImeProps = ImmGetProperty( GetKeyboardLayout( 0 ), IGP_PROPERTY ); - pFrame->maFrameData.mbSpezIME = (nImeProps & IME_PROP_SPECIAL_UI) != 0; - pFrame->maFrameData.mbAtCursorIME = (nImeProps & IME_PROP_AT_CARET) != 0; - pFrame->maFrameData.mbHandleIME = !pFrame->maFrameData.mbSpezIME; + pFrame->mbSpezIME = (nImeProps & IME_PROP_SPECIAL_UI) != 0; + pFrame->mbAtCursorIME = (nImeProps & IME_PROP_AT_CARET) != 0; + pFrame->mbHandleIME = !pFrame->mbSpezIME; } } // When the application can't handle IME messages, then the // System should handle the IME handling if ( !(pContext->mnOptions & SAL_INPUTCONTEXT_EXTTEXTINPUT) ) - pFrame->maFrameData.mbHandleIME = FALSE; + pFrame->mbHandleIME = FALSE; // Set the Font for IME Handling if ( pContext->mpFont ) { - HIMC hIMC = ImmGetContext( pFrame->maFrameData.mhWnd ); + HIMC hIMC = ImmGetContext( pFrame->mhWnd ); if ( hIMC ) { LOGFONTW aLogFont; - HDC hDC = GetDC( pFrame->maFrameData.mhWnd ); + HDC hDC = GetDC( pFrame->mhWnd ); // In case of vertical writing, always append a '@' to the // Windows font name, not only if such a Windows font really is // available (bTestVerticalAvail == false in the below call): @@ -2243,29 +2234,29 @@ static void ImplSalFrameSetInputContext( HWND hWnd, const SalInputContext* pCont // '@' in front of this font name. ImplGetLogFontFromFontSelect( hDC, pContext->mpFont, aLogFont, false ); - ReleaseDC( pFrame->maFrameData.mhWnd, hDC ); + ReleaseDC( pFrame->mhWnd, hDC ); ImmSetCompositionFontW( hIMC, &aLogFont ); - ImmReleaseContext( pFrame->maFrameData.mhWnd, hIMC ); + ImmReleaseContext( pFrame->mhWnd, hIMC ); } } } else { - if ( pFrame->maFrameData.mbIME ) + if ( pFrame->mbIME ) { - pFrame->maFrameData.mbIME = FALSE; - pFrame->maFrameData.mbHandleIME = FALSE; - ImmAssociateContext( pFrame->maFrameData.mhWnd, 0 ); + pFrame->mbIME = FALSE; + pFrame->mbHandleIME = FALSE; + ImmAssociateContext( pFrame->mhWnd, 0 ); } } } // ----------------------------------------------------------------------- -void SalFrame::SetInputContext( SalInputContext* pContext ) +void WinSalFrame::SetInputContext( SalInputContext* pContext ) { // Must be called in the main thread! - ImplSendMessage( maFrameData.mhWnd, SAL_MSG_SETINPUTCONTEXT, 0, (LPARAM)(void*)pContext ); + ImplSendMessage( mhWnd, SAL_MSG_SETINPUTCONTEXT, 0, (LPARAM)(void*)pContext ); } // ----------------------------------------------------------------------- @@ -2288,10 +2279,10 @@ static void ImplSalFrameEndExtTextInput( HWND hWnd, USHORT nFlags ) // ----------------------------------------------------------------------- -void SalFrame::EndExtTextInput( USHORT nFlags ) +void WinSalFrame::EndExtTextInput( USHORT nFlags ) { // Must be called in the main thread! - ImplSendMessage( maFrameData.mhWnd, SAL_MSG_ENDEXTTEXTINPUT, (WPARAM)nFlags, 0 ); + ImplSendMessage( mhWnd, SAL_MSG_ENDEXTTEXTINPUT, (WPARAM)nFlags, 0 ); } // ----------------------------------------------------------------------- @@ -2300,7 +2291,7 @@ static void ImplGetKeyNameText( LONG lParam, sal_Unicode* pBuf, UINT& rCount, UINT nMaxSize, const sal_Char* pReplace ) { - DBG_ASSERT( sizeof( WCHAR ) == sizeof( xub_Unicode ), "SalFrame::ImplGetKeyNameTextW(): WCHAR != sal_Unicode" ); + DBG_ASSERT( sizeof( WCHAR ) == sizeof( xub_Unicode ), "WinSalFrame::ImplGetKeyNameTextW(): WCHAR != sal_Unicode" ); WCHAR aKeyBuf[350]; int nKeyLen = 0; @@ -2380,7 +2371,7 @@ static void ImplGetKeyNameText( LONG lParam, sal_Unicode* pBuf, // ----------------------------------------------------------------------- -XubString SalFrame::GetKeyName( USHORT nKeyCode ) +XubString WinSalFrame::GetKeyName( USHORT nKeyCode ) { XubString aKeyCode; sal_Unicode aKeyBuf[350]; @@ -2589,7 +2580,7 @@ XubString SalFrame::GetKeyName( USHORT nKeyCode ) // ----------------------------------------------------------------------- -XubString SalFrame::GetSymbolKeyName( const XubString&, USHORT nKeyCode ) +XubString WinSalFrame::GetSymbolKeyName( const XubString&, USHORT nKeyCode ) { return GetKeyName( nKeyCode ); } @@ -2670,7 +2661,7 @@ static long ImplA2I( const BYTE* pStr ) // ----------------------------------------------------------------------- -void SalFrame::UpdateSettings( AllSettings& rSettings ) +void WinSalFrame::UpdateSettings( AllSettings& rSettings ) { MouseSettings aMouseSettings = rSettings.GetMouseSettings(); aMouseSettings.SetDoubleClickTime( GetDoubleClickTime() ); @@ -2921,16 +2912,16 @@ void SalFrame::UpdateSettings( AllSettings& rSettings ) // ----------------------------------------------------------------------- -SalBitmap* SalFrame::SnapShot() +SalBitmap* WinSalFrame::SnapShot() { - SalBitmap* pSalBitmap = NULL; + WinSalBitmap* pSalBitmap = NULL; RECT aRect; - GetWindowRect( maFrameData.mhWnd, &aRect ); + GetWindowRect( mhWnd, &aRect ); int nDX = aRect.right-aRect.left; int nDY = aRect.bottom-aRect.top; - HDC hDC = GetWindowDC( maFrameData.mhWnd ); + HDC hDC = GetWindowDC( mhWnd ); HBITMAP hBmpBitmap = CreateCompatibleBitmap( hDC, nDX, nDY ); HDC hBmpDC = ImplGetCachedDC( CACHED_HDC_1, hBmpBitmap ); BOOL bRet; @@ -2940,7 +2931,7 @@ SalBitmap* SalFrame::SnapShot() if ( bRet ) { - pSalBitmap = new SalBitmap; + pSalBitmap = new WinSalBitmap; if ( !pSalBitmap->Create( hBmpBitmap, FALSE, FALSE ) ) { @@ -2954,14 +2945,14 @@ SalBitmap* SalFrame::SnapShot() // ----------------------------------------------------------------------- -const SystemEnvData* SalFrame::GetSystemData() const +const SystemEnvData* WinSalFrame::GetSystemData() const { - return &maFrameData.maSysData; + return &maSysData; } // ----------------------------------------------------------------------- -void SalFrame::Beep( SoundType eSoundType ) +void WinSalFrame::Beep( SoundType eSoundType ) { static UINT aImplSoundTab[5] = { @@ -2981,18 +2972,7 @@ void SalFrame::Beep( SoundType eSoundType ) // ----------------------------------------------------------------------- -void SalFrame::SetCallback( void* pInst, SALFRAMEPROC pProc ) -{ - maFrameData.mpInst = pInst; - if ( pProc ) - maFrameData.mpProc = pProc; - else - maFrameData.mpProc = ImplSalCallbackDummy; -} - -// ----------------------------------------------------------------------- - -ULONG SalFrame::GetCurrentModButtons() +ULONG WinSalFrame::GetCurrentModButtons() { ULONG nMod = 0; @@ -3016,7 +2996,7 @@ ULONG SalFrame::GetCurrentModButtons() static long ImplHandleMouseMsg( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; @@ -3025,7 +3005,7 @@ static long ImplHandleMouseMsg( HWND hWnd, UINT nMsg, // #103168# post again if async focus has not arrived yet // hopefully we will not receive the corresponding button up before this // button down arrives again - Window *pWin = (Window*) pFrame->maFrameData.mpInst; + Window *pWin = (Window*) pFrame->GetInstance(); if( pWin && pWin->mpFrameData->mnFocusId ) { ImplPostMessage( hWnd, nMsg, wParam, lParam ); @@ -3169,10 +3149,9 @@ static long ImplHandleMouseMsg( HWND hWnd, UINT nMsg, if( Application::GetSettings().GetLayoutRTL() ) aMouseEvt.mnX = pFrame->maGeometry.nWidth-1-aMouseEvt.mnX; - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - nEvent, &aMouseEvt ); + nRet = pFrame->CallCallback( nEvent, &aMouseEvt ); if ( nMsg == WM_MOUSEMOVE ) - SetCursor( pFrame->maFrameData.mhCursor ); + SetCursor( pFrame->mhCursor ); } else nRet = 0; @@ -3184,11 +3163,11 @@ static long ImplHandleMouseMsg( HWND hWnd, UINT nMsg, static long ImplHandleMouseActivateMsg( HWND hWnd ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; - if ( pFrame->maFrameData.mbFloatWin ) + if ( pFrame->mbFloatWin ) return TRUE; SalMouseActivateEvent aMouseActivateEvt; @@ -3197,8 +3176,7 @@ static long ImplHandleMouseActivateMsg( HWND hWnd ) ScreenToClient( hWnd, &aPt ); aMouseActivateEvt.mnX = aPt.x; aMouseActivateEvt.mnY = aPt.y; - return pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MOUSEACTIVATE, &aMouseActivateEvt ); + return pFrame->CallCallback( SALEVENT_MOUSEACTIVATE, &aMouseActivateEvt ); } // ----------------------------------------------------------------------- @@ -3208,7 +3186,7 @@ static long ImplHandleWheelMsg( HWND hWnd, WPARAM wParam, LPARAM lParam ) ImplSalYieldMutexAcquireWithWait(); long nRet = 0; - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { WORD nWinModCode = LOWORD( wParam ); @@ -3241,8 +3219,7 @@ static long ImplHandleWheelMsg( HWND hWnd, WPARAM wParam, LPARAM lParam ) if( Application::GetSettings().GetLayoutRTL() ) aWheelEvt.mnX = pFrame->maGeometry.nWidth-1-aWheelEvt.mnX; - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_WHEELMOUSE, &aWheelEvt ); + nRet = pFrame->CallCallback( SALEVENT_WHEELMOUSE, &aWheelEvt ); } ImplSalYieldMutexRelease(); @@ -3302,24 +3279,24 @@ static UINT ImplStrToNum( const sal_Char* pStr ) // ----------------------------------------------------------------------- -LanguageType SalFrame::GetInputLanguage() +LanguageType WinSalFrame::GetInputLanguage() { - if( !maFrameData.mnInputLang ) + if( !mnInputLang ) return LANGUAGE_DONTKNOW; else - return (LanguageType) maFrameData.mnInputLang; + return (LanguageType) mnInputLang; } // ----------------------------------------------------------------------- -static sal_Unicode ImplGetCharCode( SalFrame* pFrame, WPARAM nCharCode ) +static sal_Unicode ImplGetCharCode( WinSalFrame* pFrame, WPARAM nCharCode ) { BOOL bLanguageChange = FALSE; UINT nLang = LOWORD( GetKeyboardLayout( 0 ) ); - if ( nLang && nLang != pFrame->maFrameData.mnInputLang ) + if ( nLang && nLang != pFrame->mnInputLang ) { // keep input lang up-to-date - pFrame->maFrameData.mnInputLang = nLang; + pFrame->mnInputLang = nLang; bLanguageChange = TRUE; } @@ -3330,8 +3307,8 @@ static sal_Unicode ImplGetCharCode( SalFrame* pFrame, WPARAM nCharCode ) if ( !nLang ) { - pFrame->maFrameData.mnInputLang = 0; - pFrame->maFrameData.mnInputCodePage = GetACP(); + pFrame->mnInputLang = 0; + pFrame->mnInputCodePage = GetACP(); } else if ( bLanguageChange ) { @@ -3339,12 +3316,12 @@ static sal_Unicode ImplGetCharCode( SalFrame* pFrame, WPARAM nCharCode ) if ( GetLocaleInfoA( MAKELCID( nLang, SORT_DEFAULT ), LOCALE_IDEFAULTANSICODEPAGE, aBuf, sizeof(aBuf) ) > 0 ) { - pFrame->maFrameData.mnInputCodePage = ImplStrToNum( aBuf ); - if ( !pFrame->maFrameData.mnInputCodePage ) - pFrame->maFrameData.mnInputCodePage = GetACP(); + pFrame->mnInputCodePage = ImplStrToNum( aBuf ); + if ( !pFrame->mnInputCodePage ) + pFrame->mnInputCodePage = GetACP(); } else - pFrame->maFrameData.mnInputCodePage = GetACP(); + pFrame->mnInputCodePage = GetACP(); } sal_Char aCharBuf[2]; @@ -3361,7 +3338,7 @@ static sal_Unicode ImplGetCharCode( SalFrame* pFrame, WPARAM nCharCode ) aCharBuf[0] = (sal_Char)nCharCode; nCharLen = 1; } - if ( ::MultiByteToWideChar( pFrame->maFrameData.mnInputCodePage, + if ( ::MultiByteToWideChar( pFrame->mnInputCodePage, MB_PRECOMPOSED, aCharBuf, nCharLen, &c, 1 ) ) return (sal_Unicode)c; @@ -3393,15 +3370,15 @@ static long ImplHandleKeyMsg( HWND hWnd, UINT nMsg, return 0; } - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; // Wir restaurieren den Background-Modus bei jeder Texteingabe, // da einige Tools wie RichWin uns diesen hin- und wieder umsetzen - if ( pFrame->maFrameData.mpGraphics && - pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC ) - SetBkMode( pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC, TRANSPARENT ); + if ( pFrame->mpGraphics && + pFrame->mpGraphics->mhDC ) + SetBkMode( pFrame->mpGraphics->mhDC, TRANSPARENT ); // determine modifiers if ( GetKeyState( VK_SHIFT ) & 0x8000 ) @@ -3462,10 +3439,8 @@ static long ImplHandleKeyMsg( HWND hWnd, UINT nMsg, aKeyEvt.mnRepeat = nRepeat; nLastChar = 0; nLastVKChar = 0; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYINPUT, &aKeyEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYUP, &aKeyEvt ); + long nRet = pFrame->CallCallback( SALEVENT_KEYINPUT, &aKeyEvt ); + pFrame->CallCallback( SALEVENT_KEYUP, &aKeyEvt ); return nRet; } // #i11583#, MCD, 2003-01-13, Support for WM_UNICHAR & Keyman 6.0; addition begins @@ -3489,10 +3464,8 @@ static long ImplHandleKeyMsg( HWND hWnd, UINT nMsg, sal_Unicode ch = (sal_Unicode) Uni_UTF32ToSurrogate1(wParam); nLastChar = 0; nLastVKChar = 0; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYINPUT, &aKeyEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYUP, &aKeyEvt ); + long nRet = pFrame->CallCallback( SALEVENT_KEYINPUT, &aKeyEvt ); + pFrame->CallCallback( SALEVENT_KEYUP, &aKeyEvt ); wParam = (sal_Unicode) Uni_UTF32ToSurrogate2( wParam ); } @@ -3500,10 +3473,8 @@ static long ImplHandleKeyMsg( HWND hWnd, UINT nMsg, nLastChar = 0; nLastVKChar = 0; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYINPUT, &aKeyEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYUP, &aKeyEvt ); + long nRet = pFrame->CallCallback( SALEVENT_KEYINPUT, &aKeyEvt ); + pFrame->CallCallback( SALEVENT_KEYUP, &aKeyEvt ); return nRet; } @@ -3547,8 +3518,7 @@ static long ImplHandleKeyMsg( HWND hWnd, UINT nMsg, if( !tmpCode ) bWaitForModKeyRelease = false; - return pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYMODCHANGE, &aModEvt ); + return pFrame->CallCallback( SALEVENT_KEYMODCHANGE, &aModEvt ); } else { @@ -3623,8 +3593,7 @@ static long ImplHandleKeyMsg( HWND hWnd, UINT nMsg, aKeyEvt.mnCode |= nModCode; aKeyEvt.mnRepeat = nRepeat; bIgnoreCharMsg = bCharPeek; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - nEvent, &aKeyEvt ); + long nRet = pFrame->CallCallback( nEvent, &aKeyEvt ); bIgnoreCharMsg = FALSE; // char-message, than remove or ignore @@ -3655,7 +3624,7 @@ long ImplHandleSalObjKeyMsg( HWND hWnd, UINT nMsg, { if ( (nMsg == WM_KEYDOWN) || (nMsg == WM_KEYUP) ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; @@ -3694,8 +3663,7 @@ long ImplHandleSalObjKeyMsg( HWND hWnd, UINT nMsg, aKeyEvt.mnTime = GetMessageTime(); aKeyEvt.mnCode |= nModCode; aKeyEvt.mnRepeat = nRepeat; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - nEvent, &aKeyEvt ); + long nRet = pFrame->CallCallback( nEvent, &aKeyEvt ); return nRet; } else @@ -3710,7 +3678,7 @@ long ImplHandleSalObjKeyMsg( HWND hWnd, UINT nMsg, long ImplHandleSalObjSysCharMsg( HWND hWnd, WPARAM wParam, LPARAM lParam ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; @@ -3741,10 +3709,8 @@ long ImplHandleSalObjSysCharMsg( HWND hWnd, WPARAM wParam, LPARAM lParam ) aKeyEvt.mnCode |= nModCode; aKeyEvt.mnCharCode = ImplGetCharCode( pFrame, cKeyCode ); aKeyEvt.mnRepeat = nRepeat; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYINPUT, &aKeyEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYUP, &aKeyEvt ); + long nRet = pFrame->CallCallback( SALEVENT_KEYINPUT, &aKeyEvt ); + pFrame->CallCallback( SALEVENT_KEYUP, &aKeyEvt ); return nRet; } @@ -3760,13 +3726,13 @@ static void ImplHandlePaintMsg( HWND hWnd ) // because other threads doesn't use the mutex from the main // thread --> see GetGraphics() - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { // Clip-Region muss zurueckgesetzt werden, da wir sonst kein // ordentliches Bounding-Rectangle bekommen - if ( pFrame->maFrameData.mpGraphics && pFrame->maFrameData.mpGraphics->maGraphicsData.mhRegion ) - SelectClipRgn( pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC, 0 ); + if ( pFrame->mpGraphics && pFrame->mpGraphics->mhRegion ) + SelectClipRgn( pFrame->mpGraphics->mhDC, 0 ); // Laut Window-Doku soll man erst abfragen, ob ueberhaupt eine // Paint-Region anliegt @@ -3782,10 +3748,10 @@ static void ImplHandlePaintMsg( HWND hWnd ) // Paint // ClipRegion wieder herstellen - if ( pFrame->maFrameData.mpGraphics && pFrame->maFrameData.mpGraphics->maGraphicsData.mhRegion ) + if ( pFrame->mpGraphics && pFrame->mpGraphics->mhRegion ) { - SelectClipRgn( pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC, - pFrame->maFrameData.mpGraphics->maGraphicsData.mhRegion ); + SelectClipRgn( pFrame->mpGraphics->mhDC, + pFrame->mpGraphics->mhRegion ); } if ( bMutex ) @@ -3800,8 +3766,7 @@ static void ImplHandlePaintMsg( HWND hWnd ) if( Application::GetSettings().GetLayoutRTL() ) aPEvt.mnBoundX = pFrame->maGeometry.nWidth-aPEvt.mnBoundWidth-aPEvt.mnBoundX; - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_PAINT, &aPEvt ); + pFrame->CallCallback( SALEVENT_PAINT, &aPEvt ); } else { @@ -3813,10 +3778,10 @@ static void ImplHandlePaintMsg( HWND hWnd ) else { // ClipRegion wieder herstellen - if ( pFrame->maFrameData.mpGraphics && pFrame->maFrameData.mpGraphics->maGraphicsData.mhRegion ) + if ( pFrame->mpGraphics && pFrame->mpGraphics->mhRegion ) { - SelectClipRgn( pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC, - pFrame->maFrameData.mpGraphics->maGraphicsData.mhRegion ); + SelectClipRgn( pFrame->mpGraphics->mhDC, + pFrame->mpGraphics->mhRegion ); } } } @@ -3832,7 +3797,7 @@ static void ImplHandlePaintMsg2( HWND hWnd, RECT* pRect ) // Paint if ( ImplSalYieldMutexTryToAcquire() ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { SalPaintEvent aPEvt; @@ -3845,8 +3810,7 @@ static void ImplHandlePaintMsg2( HWND hWnd, RECT* pRect ) if( Application::GetSettings().GetLayoutRTL() ) aPEvt.mnBoundX = pFrame->maGeometry.nWidth-aPEvt.mnBoundWidth-aPEvt.mnBoundX; - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_PAINT, &aPEvt ); + pFrame->CallCallback( SALEVENT_PAINT, &aPEvt ); } ImplSalYieldMutexRelease(); delete pRect; @@ -3903,13 +3867,12 @@ static void UpdateFrameGeometry( HWND hWnd, SalFrame* pFrame ) static void ImplCallMoveHdl( HWND hWnd ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MOVE, 0 ); + pFrame->CallCallback( SALEVENT_MOVE, 0 ); // Um doppelte Paints von VCL und SAL zu vermeiden - //if ( IsWindowVisible( hWnd ) && !pFrame->maFrameData.mbInShow ) + //if ( IsWindowVisible( hWnd ) && !pFrame->mbInShow ) // UpdateWindow( hWnd ); } } @@ -3918,11 +3881,10 @@ static void ImplCallMoveHdl( HWND hWnd ) static void ImplCallClosePopupsHdl( HWND hWnd ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_CLOSEPOPUPS, 0 ); + pFrame->CallCallback( SALEVENT_CLOSEPOPUPS, 0 ); } } @@ -3932,22 +3894,22 @@ static void ImplHandleMoveMsg( HWND hWnd ) { if ( ImplSalYieldMutexTryToAcquire() ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { UpdateFrameGeometry( hWnd, pFrame ); if ( GetWindowStyle( hWnd ) & WS_VISIBLE ) - pFrame->maFrameData.mbDefPos = FALSE; + pFrame->mbDefPos = FALSE; // Gegen moegliche Rekursionen sichern - if ( !pFrame->maFrameData.mbInMoveMsg ) + if ( !pFrame->mbInMoveMsg ) { // Fenster im FullScreenModus wieder einpassen - pFrame->maFrameData.mbInMoveMsg = TRUE; - if ( pFrame->maFrameData.mbFullScreen ) + pFrame->mbInMoveMsg = TRUE; + if ( pFrame->mbFullScreen ) ImplSalFrameFullScreenPos( pFrame ); - pFrame->maFrameData.mbInMoveMsg = FALSE; + pFrame->mbInMoveMsg = FALSE; } // Status merken @@ -3973,13 +3935,12 @@ static void ImplCallSizeHdl( HWND hWnd ) // Solar-Semaphore beruecksichtigt werden if ( ImplSalYieldMutexTryToAcquire() ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_RESIZE, 0 ); + pFrame->CallCallback( SALEVENT_RESIZE, 0 ); // Um doppelte Paints von VCL und SAL zu vermeiden - if ( IsWindowVisible( hWnd ) && !pFrame->maFrameData.mbInShow ) + if ( IsWindowVisible( hWnd ) && !pFrame->mbInShow ) UpdateWindow( hWnd ); } @@ -3995,13 +3956,13 @@ static void ImplHandleSizeMsg( HWND hWnd, WPARAM wParam, LPARAM lParam ) { if ( (wParam != SIZE_MAXSHOW) && (wParam != SIZE_MAXHIDE) ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { UpdateFrameGeometry( hWnd, pFrame ); - pFrame->maFrameData.mnWidth = (int)LOWORD(lParam); - pFrame->maFrameData.mnHeight = (int)HIWORD(lParam); + pFrame->mnWidth = (int)LOWORD(lParam); + pFrame->mnHeight = (int)HIWORD(lParam); // Status merken ImplSaveFrameState( pFrame ); // Call Hdl @@ -4016,32 +3977,30 @@ static void ImplHandleFocusMsg( HWND hWnd ) { if ( ImplSalYieldMutexTryToAcquire() ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); - if ( pFrame && !SalFrame::mbInReparent ) + WinSalFrame* pFrame = GetWindowPtr( hWnd ); + if ( pFrame && !WinSalFrame::mbInReparent ) { // Query the actual status if ( ::GetFocus() == hWnd ) { - if ( IsWindowVisible( hWnd ) && !pFrame->maFrameData.mbInShow ) + if ( IsWindowVisible( hWnd ) && !pFrame->mbInShow ) UpdateWindow( hWnd ); // Feststellen, ob wir IME unterstuetzen - if ( pFrame->maFrameData.mbIME && pFrame->maFrameData.mhDefIMEContext ) + if ( pFrame->mbIME && pFrame->mhDefIMEContext ) { UINT nImeProps = ImmGetProperty( GetKeyboardLayout( 0 ), IGP_PROPERTY ); - pFrame->maFrameData.mbSpezIME = (nImeProps & IME_PROP_SPECIAL_UI) != 0; - pFrame->maFrameData.mbAtCursorIME = (nImeProps & IME_PROP_AT_CARET) != 0; - pFrame->maFrameData.mbHandleIME = !pFrame->maFrameData.mbSpezIME; + pFrame->mbSpezIME = (nImeProps & IME_PROP_SPECIAL_UI) != 0; + pFrame->mbAtCursorIME = (nImeProps & IME_PROP_AT_CARET) != 0; + pFrame->mbHandleIME = !pFrame->mbSpezIME; } - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_GETFOCUS, 0 ); + pFrame->CallCallback( SALEVENT_GETFOCUS, 0 ); } else { - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_LOSEFOCUS, 0 ); + pFrame->CallCallback( SALEVENT_LOSEFOCUS, 0 ); } } @@ -4057,11 +4016,10 @@ static void ImplHandleCloseMsg( HWND hWnd ) { if ( ImplSalYieldMutexTryToAcquire() ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_CLOSE, 0 ); + pFrame->CallCallback( SALEVENT_CLOSE, 0 ); } ImplSalYieldMutexRelease(); @@ -4076,11 +4034,10 @@ static long ImplHandleShutDownMsg( HWND hWnd ) { ImplSalYieldMutexAcquireWithWait(); long nRet = 0; - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_SHUTDOWN, 0 ); + nRet = pFrame->CallCallback( SALEVENT_SHUTDOWN, 0 ); } ImplSalYieldMutexRelease(); return nRet; @@ -4133,17 +4090,16 @@ static void ImplHandleSettingsChangeMsg( HWND hWnd, UINT nMsg, ImplSalYieldMutexAcquireWithWait(); - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { if ( (nMsg == WM_DISPLAYCHANGE) || (nMsg == WM_WININICHANGE) ) { - if ( pFrame->maFrameData.mbFullScreen ) + if ( pFrame->mbFullScreen ) ImplSalFrameFullScreenPos( pFrame ); } - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - nSalEvent, 0 ); + pFrame->CallCallback( nSalEvent, 0 ); } ImplSalYieldMutexRelease(); @@ -4154,11 +4110,10 @@ static void ImplHandleSettingsChangeMsg( HWND hWnd, UINT nMsg, static void ImplHandleUserEvent( HWND hWnd, LPARAM lParam ) { ImplSalYieldMutexAcquireWithWait(); - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_USEREVENT, (void*)lParam ); + pFrame->CallCallback( SALEVENT_USEREVENT, (void*)lParam ); } ImplSalYieldMutexRelease(); } @@ -4177,19 +4132,18 @@ static void ImplHandleForcePalette( HWND hWnd ) return; } - SalFrame* pFrame = GetWindowPtr( hWnd ); - if ( pFrame && pFrame->maFrameData.mpGraphics ) + WinSalFrame* pFrame = GetWindowPtr( hWnd ); + if ( pFrame && pFrame->mpGraphics ) { - SalGraphics* pGraphics = pFrame->maFrameData.mpGraphics; - if ( pGraphics && pGraphics->maGraphicsData.mhDefPal ) + WinSalGraphics* pGraphics = pFrame->mpGraphics; + if ( pGraphics && pGraphics->mhDefPal ) { - SelectPalette( pGraphics->maGraphicsData.mhDC, hPal, FALSE ); - if ( RealizePalette( pGraphics->maGraphicsData.mhDC ) ) + SelectPalette( pGraphics->mhDC, hPal, FALSE ); + if ( RealizePalette( pGraphics->mhDC ) ) { InvalidateRect( hWnd, NULL, FALSE ); UpdateWindow( hWnd ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_DISPLAYCHANGED, 0 ); + pFrame->CallCallback( SALEVENT_DISPLAYCHANGED, 0 ); } } } @@ -4231,9 +4185,9 @@ static LRESULT ImplHandlePalette( BOOL bFrame, HWND hWnd, UINT nMsg, ImplPostMessage( hWnd, SAL_MSG_POSTPALCHANGED, wParam, lParam ); } - SalVirtualDevice* pTempVD; - SalFrame* pTempFrame; - SalGraphics* pGraphics; + WinSalVirtualDevice*pTempVD; + WinSalFrame* pTempFrame; + WinSalGraphics* pGraphics; HDC hDC; HPALETTE hOldPal; UINT nCols; @@ -4246,35 +4200,35 @@ static LRESULT ImplHandlePalette( BOOL bFrame, HWND hWnd, UINT nMsg, pTempVD = pSalData->mpFirstVD; while ( pTempVD ) { - pGraphics = pTempVD->maVirDevData.mpGraphics; - if ( pGraphics->maGraphicsData.mhDefPal ) + pGraphics = pTempVD->mpGraphics; + if ( pGraphics->mhDefPal ) { - SelectPalette( pGraphics->maGraphicsData.mhDC, - pGraphics->maGraphicsData.mhDefPal, + SelectPalette( pGraphics->mhDC, + pGraphics->mhDefPal, TRUE ); } - pTempVD = pTempVD->maVirDevData.mpNext; + pTempVD = pTempVD->mpNext; } pTempFrame = pSalData->mpFirstFrame; while ( pTempFrame ) { - pGraphics = pTempFrame->maFrameData.mpGraphics; - if ( pGraphics && pGraphics->maGraphicsData.mhDefPal ) + pGraphics = pTempFrame->mpGraphics; + if ( pGraphics && pGraphics->mhDefPal ) { - SelectPalette( pGraphics->maGraphicsData.mhDC, - pGraphics->maGraphicsData.mhDefPal, + SelectPalette( pGraphics->mhDC, + pGraphics->mhDefPal, TRUE ); } - pTempFrame = pTempFrame->maFrameData.mpNextFrame; + pTempFrame = pTempFrame->mpNextFrame; } // Palette neu realizen - SalFrame* pFrame = NULL; + WinSalFrame* pFrame = NULL; if ( bFrame ) pFrame = GetWindowPtr( hWnd ); - if ( pFrame && pFrame->maFrameData.mpGraphics ) + if ( pFrame && pFrame->mpGraphics ) { - hDC = pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC; + hDC = pFrame->mpGraphics->mhDC; bStdDC = TRUE; } else @@ -4296,28 +4250,28 @@ static LRESULT ImplHandlePalette( BOOL bFrame, HWND hWnd, UINT nMsg, pTempVD = pSalData->mpFirstVD; while ( pTempVD ) { - pGraphics = pTempVD->maVirDevData.mpGraphics; - if ( pGraphics->maGraphicsData.mhDefPal ) + pGraphics = pTempVD->mpGraphics; + if ( pGraphics->mhDefPal ) { - SelectPalette( pGraphics->maGraphicsData.mhDC, hPal, TRUE ); - RealizePalette( pGraphics->maGraphicsData.mhDC ); + SelectPalette( pGraphics->mhDC, hPal, TRUE ); + RealizePalette( pGraphics->mhDC ); } - pTempVD = pTempVD->maVirDevData.mpNext; + pTempVD = pTempVD->mpNext; } pTempFrame = pSalData->mpFirstFrame; while ( pTempFrame ) { if ( pTempFrame != pFrame ) { - pGraphics = pTempFrame->maFrameData.mpGraphics; - if ( pGraphics && pGraphics->maGraphicsData.mhDefPal ) + pGraphics = pTempFrame->mpGraphics; + if ( pGraphics && pGraphics->mhDefPal ) { - SelectPalette( pGraphics->maGraphicsData.mhDC, hPal, TRUE ); - if ( RealizePalette( pGraphics->maGraphicsData.mhDC ) ) + SelectPalette( pGraphics->mhDC, hPal, TRUE ); + if ( RealizePalette( pGraphics->mhDC ) ) bUpdate = TRUE; } } - pTempFrame = pTempFrame->maFrameData.mpNextFrame; + pTempFrame = pTempFrame->mpNextFrame; } // Wenn sich Farben geaendert haben, dann die Fenster updaten @@ -4326,15 +4280,14 @@ static LRESULT ImplHandlePalette( BOOL bFrame, HWND hWnd, UINT nMsg, pTempFrame = pSalData->mpFirstFrame; while ( pTempFrame ) { - pGraphics = pTempFrame->maFrameData.mpGraphics; - if ( pGraphics && pGraphics->maGraphicsData.mhDefPal ) + pGraphics = pTempFrame->mpGraphics; + if ( pGraphics && pGraphics->mhDefPal ) { - InvalidateRect( pTempFrame->maFrameData.mhWnd, NULL, FALSE ); - UpdateWindow( pTempFrame->maFrameData.mhWnd ); - pTempFrame->maFrameData.mpProc( pTempFrame->maFrameData.mpInst, pTempFrame, - SALEVENT_DISPLAYCHANGED, 0 ); + InvalidateRect( pTempFrame->mhWnd, NULL, FALSE ); + UpdateWindow( pTempFrame->mhWnd ); + pTempFrame->CallCallback( SALEVENT_DISPLAYCHANGED, 0 ); } - pTempFrame = pTempFrame->maFrameData.mpNextFrame; + pTempFrame = pTempFrame->mpNextFrame; } } @@ -4357,12 +4310,12 @@ static int ImplHandleMinMax( HWND hWnd, LPARAM lParam ) if ( ImplSalYieldMutexTryToAcquire() ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { MINMAXINFO* pMinMax = (MINMAXINFO*)lParam; - if ( pFrame->maFrameData.mbFullScreen ) + if ( pFrame->mbFullScreen ) { int nX; int nY; @@ -4390,10 +4343,10 @@ static int ImplHandleMinMax( HWND hWnd, LPARAM lParam ) bRet = TRUE; } - if ( pFrame->maFrameData.mnMinWidth || pFrame->maFrameData.mnMinHeight ) + if ( pFrame->mnMinWidth || pFrame->mnMinHeight ) { - int nMinWidth = pFrame->maFrameData.mnMinWidth; - int nMinHeight = pFrame->maFrameData.mnMinHeight; + int nMinWidth = pFrame->mnMinWidth; + int nMinHeight = pFrame->mnMinHeight; int nLeft; int nTop; int nRight; @@ -4418,16 +4371,16 @@ static int ImplHandleMinMax( HWND hWnd, LPARAM lParam ) static int ImplHandleSysCommand( HWND hWnd, WPARAM wParam, LPARAM lParam ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; WPARAM nCommand = wParam & 0xFFF0; - if ( pFrame->maFrameData.mbFullScreen ) + if ( pFrame->mbFullScreen ) { - WIN_BOOL bMaximize = IsZoomed( pFrame->maFrameData.mhWnd ); - WIN_BOOL bMinimize = IsIconic( pFrame->maFrameData.mhWnd ); + WIN_BOOL bMaximize = IsZoomed( pFrame->mhWnd ); + WIN_BOOL bMinimize = IsIconic( pFrame->mhWnd ); if ( (nCommand == SC_SIZE) || (!bMinimize && (nCommand == SC_MOVE)) || (!bMaximize && (nCommand == SC_MAXIMIZE)) || @@ -4467,10 +4420,8 @@ static int ImplHandleSysCommand( HWND hWnd, WPARAM wParam, LPARAM lParam ) aKeyEvt.mnCode = KEY_MENU; aKeyEvt.mnCharCode = 0; aKeyEvt.mnRepeat = 0; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYINPUT, &aKeyEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYUP, &aKeyEvt ); + long nRet = pFrame->CallCallback( SALEVENT_KEYINPUT, &aKeyEvt ); + pFrame->CallCallback( SALEVENT_KEYUP, &aKeyEvt ); return (nRet != 0); } else @@ -4506,10 +4457,8 @@ static int ImplHandleSysCommand( HWND hWnd, WPARAM wParam, LPARAM lParam ) aKeyEvt.mnCode |= nModCode; aKeyEvt.mnCharCode = cKeyCode; aKeyEvt.mnRepeat = 0; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYINPUT, &aKeyEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_KEYUP, &aKeyEvt ); + long nRet = pFrame->CallCallback( SALEVENT_KEYINPUT, &aKeyEvt ); + pFrame->CallCallback( SALEVENT_KEYUP, &aKeyEvt ); return (nRet != 0); } } @@ -4526,16 +4475,16 @@ static void ImplHandleInputLangChange( HWND hWnd, WPARAM wParam, LPARAM lParam ) ImplSalYieldMutexAcquireWithWait(); // Feststellen, ob wir IME unterstuetzen - SalFrame* pFrame = GetWindowPtr( hWnd ); - if ( pFrame && pFrame->maFrameData.mbIME && pFrame->maFrameData.mhDefIMEContext ) + WinSalFrame* pFrame = GetWindowPtr( hWnd ); + if ( pFrame && pFrame->mbIME && pFrame->mhDefIMEContext ) { - HWND hWnd = pFrame->maFrameData.mhWnd; + HWND hWnd = pFrame->mhWnd; HKL hKL = (HKL)lParam; UINT nImeProps = ImmGetProperty( hKL, IGP_PROPERTY ); - pFrame->maFrameData.mbSpezIME = (nImeProps & IME_PROP_SPECIAL_UI) != 0; - pFrame->maFrameData.mbAtCursorIME = (nImeProps & IME_PROP_AT_CARET) != 0; - pFrame->maFrameData.mbHandleIME = !pFrame->maFrameData.mbSpezIME; + pFrame->mbSpezIME = (nImeProps & IME_PROP_SPECIAL_UI) != 0; + pFrame->mbAtCursorIME = (nImeProps & IME_PROP_AT_CARET) != 0; + pFrame->mbHandleIME = !pFrame->mbSpezIME; } ImplSalYieldMutexRelease(); @@ -4543,7 +4492,7 @@ static void ImplHandleInputLangChange( HWND hWnd, WPARAM wParam, LPARAM lParam ) // ----------------------------------------------------------------------- -static void ImplUpdateIMECursorPos( SalFrame* pFrame, HIMC hIMC ) +static void ImplUpdateIMECursorPos( WinSalFrame* pFrame, HIMC hIMC ) { COMPOSITIONFORM aForm; memset( &aForm, 0, sizeof( aForm ) ); @@ -4551,8 +4500,7 @@ static void ImplUpdateIMECursorPos( SalFrame* pFrame, HIMC hIMC ) // Cursor-Position ermitteln und aus der die Default-Position fuer // das Composition-Fenster berechnen SalExtTextInputPosEvent aPosEvt; - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_EXTTEXTINPUTPOS, (void*)&aPosEvt ); + pFrame->CallCallback( SALEVENT_EXTTEXTINPUTPOS, (void*)&aPosEvt ); if ( (aPosEvt.mnX == -1) && (aPosEvt.mnY == -1) ) aForm.dwStyle |= CFS_DEFAULT; else @@ -4565,9 +4513,9 @@ static void ImplUpdateIMECursorPos( SalFrame* pFrame, HIMC hIMC ) // Because not all IME's use this values, we create // a Windows caret to force the Position from the IME - if ( GetFocus() == pFrame->maFrameData.mhWnd ) + if ( GetFocus() == pFrame->mhWnd ) { - CreateCaret( pFrame->maFrameData.mhWnd, 0, + CreateCaret( pFrame->mhWnd, 0, aPosEvt.mnWidth, aPosEvt.mnHeight ); SetCaretPos( aPosEvt.mnX, aPosEvt.mnY ); } @@ -4581,7 +4529,7 @@ static BOOL ImplHandleIMEStartComposition( HWND hWnd ) ImplSalYieldMutexAcquireWithWait(); - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) { HIMC hIMC = ImmGetContext( hWnd ); @@ -4591,9 +4539,9 @@ static BOOL ImplHandleIMEStartComposition( HWND hWnd ) ImmReleaseContext( hWnd, hIMC ); } - if ( pFrame->maFrameData.mbHandleIME ) + if ( pFrame->mbHandleIME ) { - if ( pFrame->maFrameData.mbAtCursorIME ) + if ( pFrame->mbAtCursorIME ) bDef = FALSE; } } @@ -4605,7 +4553,7 @@ static BOOL ImplHandleIMEStartComposition( HWND hWnd ) // ----------------------------------------------------------------------- -static BOOL ImplHandleIMECompositionInput( SalFrame* pFrame, +static BOOL ImplHandleIMECompositionInput( WinSalFrame* pFrame, HIMC hIMC, LPARAM lParam ) { BOOL bDef = TRUE; @@ -4634,15 +4582,13 @@ static BOOL ImplHandleIMECompositionInput( SalFrame* pFrame, } aEvt.mnCursorPos = aEvt.maText.Len(); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_ENDEXTTEXTINPUT, (void*)NULL ); + pFrame->CallCallback( SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); + pFrame->CallCallback( SALEVENT_ENDEXTTEXTINPUT, (void*)NULL ); ImplUpdateIMECursorPos( pFrame, hIMC ); } // If the IME doesn't support OnSpot input, then there is nothing to do - if ( !pFrame->maFrameData.mbAtCursorIME ) + if ( !pFrame->mbAtCursorIME ) return !bDef; // If we get new Composition data, then we handle this new input @@ -4702,12 +4648,10 @@ static BOOL ImplHandleIMECompositionInput( SalFrame* pFrame, if ( (nTextLen > 0) || !(lParam & GCS_RESULTSTR) ) { // End the mode, if the last character is deleted - if ( !nTextLen && !pFrame->maFrameData.mbCandidateMode ) + if ( !nTextLen && !pFrame->mbCandidateMode ) { - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_ENDEXTTEXTINPUT, (void*)NULL ); + pFrame->CallCallback( SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); + pFrame->CallCallback( SALEVENT_ENDEXTTEXTINPUT, (void*)NULL ); } else { @@ -4722,13 +4666,12 @@ static BOOL ImplHandleIMECompositionInput( SalFrame* pFrame, else aEvt.mnCursorPos = LOWORD( ImmGetCompositionStringW( hIMC, GCS_CURSORPOS, 0, 0 ) ); - if ( pFrame->maFrameData.mbCandidateMode ) + if ( pFrame->mbCandidateMode ) aEvt.mnCursorFlags |= SAL_EXTTEXTINPUT_CURSOR_INVISIBLE; if ( lParam & CS_NOMOVECARET ) aEvt.mnCursorFlags |= SAL_EXTTEXTINPUT_CURSOR_OVERWRITE; - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); + pFrame->CallCallback( SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); } ImplUpdateIMECursorPos( pFrame, hIMC ); } @@ -4747,17 +4690,17 @@ static BOOL ImplHandleIMEComposition( HWND hWnd, LPARAM lParam ) BOOL bDef = TRUE; ImplSalYieldMutexAcquireWithWait(); - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame && (!lParam || (lParam & GCS_RESULTSTR)) ) { // Wir restaurieren den Background-Modus bei jeder Texteingabe, // da einige Tools wie RichWin uns diesen hin- und wieder umsetzen - if ( pFrame->maFrameData.mpGraphics && - pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC ) - SetBkMode( pFrame->maFrameData.mpGraphics->maGraphicsData.mhDC, TRANSPARENT ); + if ( pFrame->mpGraphics && + pFrame->mpGraphics->mhDC ) + SetBkMode( pFrame->mpGraphics->mhDC, TRANSPARENT ); } - if ( pFrame && pFrame->maFrameData.mbHandleIME ) + if ( pFrame && pFrame->mbHandleIME ) { if ( !lParam ) { @@ -4768,10 +4711,8 @@ static BOOL ImplHandleIMEComposition( HWND hWnd, LPARAM lParam ) aEvt.mnDeltaStart = 0; aEvt.mbOnlyCursor = FALSE; aEvt.mnCursorFlags = 0; - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_ENDEXTTEXTINPUT, (void*)NULL ); + pFrame->CallCallback( SALEVENT_EXTTEXTINPUT, (void*)&aEvt ); + pFrame->CallCallback( SALEVENT_ENDEXTTEXTINPUT, (void*)NULL ); } else if ( lParam & (GCS_RESULTSTR | GCS_COMPSTR | GCS_COMPATTR | GCS_CURSORPOS) ) { @@ -4798,10 +4739,10 @@ static BOOL ImplHandleIMEEndComposition( HWND hWnd ) ImplSalYieldMutexAcquireWithWait(); - SalFrame* pFrame = GetWindowPtr( hWnd ); - if ( pFrame && pFrame->maFrameData.mbHandleIME ) + WinSalFrame* pFrame = GetWindowPtr( hWnd ); + if ( pFrame && pFrame->mbHandleIME ) { - if ( pFrame->maFrameData.mbAtCursorIME ) + if ( pFrame->mbAtCursorIME ) bDef = FALSE; } @@ -4818,15 +4759,15 @@ static void ImplHandleIMENotify( HWND hWnd, WPARAM wParam ) { ImplSalYieldMutexAcquireWithWait(); - SalFrame* pFrame = GetWindowPtr( hWnd ); - if ( pFrame && pFrame->maFrameData.mbHandleIME && - pFrame->maFrameData.mbAtCursorIME ) + WinSalFrame* pFrame = GetWindowPtr( hWnd ); + if ( pFrame && pFrame->mbHandleIME && + pFrame->mbAtCursorIME ) { // Wir wollen den Cursor hiden - pFrame->maFrameData.mbCandidateMode = TRUE; + pFrame->mbCandidateMode = TRUE; ImplHandleIMEComposition( hWnd, GCS_CURSORPOS ); - HWND hWnd = pFrame->maFrameData.mhWnd; + HWND hWnd = pFrame->mhWnd; HIMC hIMC = ImmGetContext( hWnd ); if ( hIMC ) { @@ -4834,8 +4775,7 @@ static void ImplHandleIMENotify( HWND hWnd, WPARAM wParam ) if ( nBufLen >= 1 ) { SalExtTextInputPosEvent aPosEvt; - pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_EXTTEXTINPUTPOS, (void*)&aPosEvt ); + pFrame->CallCallback( SALEVENT_EXTTEXTINPUTPOS, (void*)&aPosEvt ); // Vertical !!! CANDIDATEFORM aForm; @@ -4859,9 +4799,9 @@ static void ImplHandleIMENotify( HWND hWnd, WPARAM wParam ) else if ( wParam == (WPARAM)IMN_CLOSECANDIDATE ) { ImplSalYieldMutexAcquireWithWait(); - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( pFrame ) - pFrame->maFrameData.mbCandidateMode = FALSE; + pFrame->mbCandidateMode = FALSE; ImplSalYieldMutexRelease(); } } @@ -4927,13 +4867,13 @@ LRESULT CALLBACK SalFrameWndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lP // Can also be used for the W-Version, because the struct // to access lpCreateParams is the same structure CREATESTRUCTA* pStruct = (CREATESTRUCTA*)lParam; - SalFrame* pFrame = (SalFrame*)pStruct->lpCreateParams; + WinSalFrame* pFrame = (WinSalFrame*)pStruct->lpCreateParams; SetWindowPtr( hWnd, pFrame ); // HWND schon hier setzen, da schon auf den Instanzdaten // gearbeitet werden kann, wenn Messages waehrend // CreateWindow() gesendet werden - pFrame->maFrameData.mhWnd = hWnd; - pFrame->maFrameData.maSysData.hWnd = hWnd; + pFrame->mhWnd = hWnd; + pFrame->maSysData.hWnd = hWnd; return 0; } @@ -5077,10 +5017,10 @@ LRESULT CALLBACK SalFrameWndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lP case WM_ENABLE: // #95133# a system dialog is opened/closed, using our app window as parent { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); Window *pWin = NULL; if( pFrame ) - pWin = ((Window*)pFrame->maFrameData.mpInst); + pWin = ((Window*)pFrame->GetInstance()); if( !wParam ) { @@ -5308,67 +5248,3 @@ BOOL ImplHandleGlobalMsg( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam, LR } // ----------------------------------------------------------------------- - -bool GetSalSystemDisplayInfo( System::DisplayInfo& rInfo ) -{ - RECT aRect; - ImplSalGetWorkArea( NULL, &aRect, NULL ); - - HDC hDC; - if( hDC = GetDC( NULL ) ) - { - rInfo.nWidth = aRect.right - aRect.left; - rInfo.nHeight = aRect.bottom - aRect.top; - rInfo.nDepth = GetDeviceCaps( hDC, BITSPIXEL ); - ReleaseDC( NULL, hDC ); - return true; - } - else - return false; -} - -// ----------------------------------------------------------------------- -/* We have to map the button identifier to the identifier used by the Win32 - Platform SDK to specify the default button for the MessageBox API. - The first dimension is the button combination, the second dimension - is the button identifier. -*/ -static int DEFAULT_BTN_MAPPING_TABLE[][8] = -{ - // Undefined OK CANCEL ABORT RETRY IGNORE YES NO - { MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1 }, //OK - { MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1 }, //OK_CANCEL - { MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3, MB_DEFBUTTON1, MB_DEFBUTTON1 }, //ABORT_RETRY_IGNO - { MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON3, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON2 }, //YES_NO_CANCEL - { MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON2 }, //YES_NO - { MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1 } //RETRY_CANCEL -}; - -int ImplShowNativeMessageBox(const String& rTitle, const String& rMessage, int nButtonCombination, int nDefaultButton) -{ - DBG_ASSERT( nButtonCombination >= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK && - nButtonCombination <= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL && - nDefaultButton >= SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK && - nDefaultButton <= SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO, "Invalid arguments!" ); - - int nFlags = MB_TASKMODAL | MB_SETFOREGROUND | MB_ICONWARNING | nButtonCombination; - - if (nButtonCombination >= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK && - nButtonCombination <= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL && - nDefaultButton >= SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK && - nDefaultButton <= SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO) - nFlags |= DEFAULT_BTN_MAPPING_TABLE[nButtonCombination][nDefaultButton]; - - //#107209 hide the splash screen if active - ImplSVData* pSVData = ImplGetSVData(); - if (pSVData->mpIntroWindow) - pSVData->mpIntroWindow->Hide(); - - return MessageBoxW( - 0, - rMessage.GetBuffer(), - rTitle.GetBuffer(), - nFlags); -} - -// ----------------------------------------------------------------------- |