diff options
author | Kurt Zenker <kz@openoffice.org> | 2003-11-20 12:03:14 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2003-11-20 12:03:14 +0000 |
commit | b8eb40f8e4e6831662a13445f3fdcfd6af5c84f9 (patch) | |
tree | 2779ec4aca50c5c94b0436ed54d2098d1433c86f /vcl | |
parent | d801180155ade3b2b5c5e96e50cb7bdf2ba3f25e (diff) |
#100000# solved merge problems
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 13 | ||||
-rw-r--r-- | vcl/source/window/menu.cxx | 14 | ||||
-rw-r--r-- | vcl/unx/inc/salmenu.h | 34 | ||||
-rw-r--r-- | vcl/unx/source/window/salmenu.cxx | 47 | ||||
-rw-r--r-- | vcl/win/inc/salmenu.h | 37 | ||||
-rw-r--r-- | vcl/win/source/window/MAKEFILE.MK | 6 | ||||
-rw-r--r-- | vcl/win/source/window/salframe.cxx | 171 | ||||
-rw-r--r-- | vcl/win/source/window/salmenu.cxx | 241 |
8 files changed, 306 insertions, 257 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 0db6082d8c92..7488f508abc5 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -2,9 +2,9 @@ * * $RCSfile: salvtables.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: kz $ $Date: 2003-11-18 14:31:25 $ + * last change: $Author: kz $ $Date: 2003-11-20 13:03:07 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -70,6 +70,7 @@ #include <salsys.hxx> #include <salbmp.hxx> #include <salobj.hxx> +#include <salmenu.hxx> // this file contains the virtual destructors of the sal interface // compilers ususally put their vtables where the destructor is @@ -121,3 +122,11 @@ SalVirtualDevice::~SalVirtualDevice() SalObject::~SalObject() { } + +SalMenu::~SalMenu() +{ +} + +SalMenuItem::~SalMenuItem() +{ +} diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx index e220894855da..a4c515499bc0 100644 --- a/vcl/source/window/menu.cxx +++ b/vcl/source/window/menu.cxx @@ -2,9 +2,9 @@ * * $RCSfile: menu.cxx,v $ * - * $Revision: 1.97 $ + * $Revision: 1.98 $ * - * last change: $Author: kz $ $Date: 2003-11-18 14:57:20 $ + * last change: $Author: kz $ $Date: 2003-11-20 13:03:08 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -2735,7 +2735,7 @@ Window* MenuBar::ImplCreate( Window* pParent, Window* pWindow, MenuBar* pMenu ) // depending on the native implementation or the displayable flag // the menubar windows is supressed (ie, height=0) if( !((MenuBar*) pMenu)->IsDisplayable() || - ( pMenu->ImplGetSalMenu() && SalMenu::VisibleMenuBar() ) ) + ( pMenu->ImplGetSalMenu() && pMenu->ImplGetSalMenu()->VisibleMenuBar() ) ) nHeight = 0; pWindow->SetPosSizePixel( 0, 0, 0, nHeight, WINDOW_POSSIZE_HEIGHT ); @@ -2759,7 +2759,7 @@ BOOL MenuBar::ImplHandleKeyEvent( const KeyEvent& rKEvent, BOOL bFromMenu ) // No keyboard processing when system handles the menu or our menubar is invisible if( !IsDisplayable() || - ( ImplGetSalMenu() && SalMenu::VisibleMenuBar() ) ) + ( ImplGetSalMenu() && ImplGetSalMenu()->VisibleMenuBar() ) ) return bDone; // Enabled-Abfragen, falls diese Methode von einem anderen Fenster gerufen wurde... @@ -4370,7 +4370,7 @@ void MenuBarWindow::SetMenu( MenuBar* pMen ) // show and connect native menubar if( pMenu && pMenu->ImplGetSalMenu() ) { - if( SalMenu::VisibleMenuBar() ) + if( pMenu->ImplGetSalMenu()->VisibleMenuBar() ) ImplGetFrame()->SetMenu( pMenu->ImplGetSalMenu() ); pMenu->ImplGetSalMenu()->SetFrame( ImplGetFrame() ); @@ -4814,7 +4814,7 @@ BOOL MenuBarWindow::ImplHandleKeyEvent( const KeyEvent& rKEvent, BOOL bFromMenu void MenuBarWindow::Paint( const Rectangle& rRect ) { // no VCL paint if native menus - if( pMenu->ImplGetSalMenu() && SalMenu::VisibleMenuBar() ) + if( pMenu->ImplGetSalMenu() && pMenu->ImplGetSalMenu()->VisibleMenuBar() ) { ImplGetFrame()->DrawMenuBar(); return; @@ -4952,7 +4952,7 @@ void MenuBarWindow::ImplLayoutChanged() // depending on the native implementation or the displayable flag // the menubar windows is supressed (ie, height=0) if( !((MenuBar*) pMenu)->IsDisplayable() || - ( pMenu->ImplGetSalMenu() && SalMenu::VisibleMenuBar() ) ) + ( pMenu->ImplGetSalMenu() && pMenu->ImplGetSalMenu()->VisibleMenuBar() ) ) nHeight = 0; SetPosSizePixel( 0, 0, 0, nHeight, WINDOW_POSSIZE_HEIGHT ); diff --git a/vcl/unx/inc/salmenu.h b/vcl/unx/inc/salmenu.h index 42c69e8a5562..2aef6986f6d5 100644 --- a/vcl/unx/inc/salmenu.h +++ b/vcl/unx/inc/salmenu.h @@ -2,9 +2,9 @@ * * $RCSfile: salmenu.h,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: kz $ $Date: 2003-11-18 14:57:41 $ + * last change: $Author: kz $ $Date: 2003-11-20 13:03:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -69,15 +69,37 @@ #include <bitmap.hxx> #endif -class SalMenu; -class SalMenuItem; +#ifndef _SV_SALMENU_HXX +#include <salmenu.hxx> +#endif + -class SalMenuData +class X11SalMenu : public SalMenu { +public: + X11SalMenu() {} + virtual ~X11SalMenu(); + + virtual BOOL VisibleMenuBar(); // must return TRUE to actually DISPLAY native menu bars + // otherwise only menu messages are processed (eg, OLE on Windows) + + virtual void InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ); + virtual void RemoveItem( unsigned nPos ); + virtual void SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ); + virtual void SetFrame( const SalFrame* pFrame ); + virtual void CheckItem( unsigned nPos, BOOL bCheck ); + virtual void EnableItem( unsigned nPos, BOOL bEnable ); + virtual void SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText ); + virtual void SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage); + virtual void SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ); + virtual void GetSystemMenuData( SystemMenuData* pData ); }; -class SalMenuItemData +class X11SalMenuItem : public SalMenuItem { +public: + X11SalMenuItem() {} + virtual ~X11SalMenuItem(); }; #endif // _SV_SALMENU_H diff --git a/vcl/unx/source/window/salmenu.cxx b/vcl/unx/source/window/salmenu.cxx index baa0637e540f..2c2bf3052930 100644 --- a/vcl/unx/source/window/salmenu.cxx +++ b/vcl/unx/source/window/salmenu.cxx @@ -2,9 +2,9 @@ * * $RCSfile: salmenu.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: kz $ $Date: 2003-11-18 16:02:17 $ + * last change: $Author: kz $ $Date: 2003-11-20 13:03:10 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -65,11 +65,11 @@ #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_SALMENU_HXX -#include <salmenu.hxx> +#ifndef _SV_SALMENU_H +#include <salmenu.h> #endif @@ -103,59 +103,56 @@ void X11SalInstance::DestroyMenuItem( SalMenuItem* pSalMenuItem ) /* - * SalMenu + * X11SalMenu */ -SalMenu::SalMenu() -{ -} -SalMenu::~SalMenu() +X11SalMenu::~X11SalMenu() { } -BOOL SalMenu::VisibleMenuBar() +BOOL X11SalMenu::VisibleMenuBar() { return FALSE; } -void SalMenu::SetFrame( const SalFrame *pFrame ) +void X11SalMenu::SetFrame( const SalFrame *pFrame ) { } -void SalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) +void X11SalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) { } -void SalMenu::RemoveItem( unsigned nPos ) +void X11SalMenu::RemoveItem( unsigned nPos ) { } -void SalMenu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) +void X11SalMenu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) { } -void SalMenu::CheckItem( unsigned nPos, BOOL bCheck ) +void X11SalMenu::CheckItem( unsigned nPos, BOOL bCheck ) { } -void SalMenu::EnableItem( unsigned nPos, BOOL bEnable ) +void X11SalMenu::EnableItem( unsigned nPos, BOOL bEnable ) { } -void SalMenu::SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) +void X11SalMenu::SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) { } -void SalMenu::SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText ) +void X11SalMenu::SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText ) { } -void SalMenu::SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ) +void X11SalMenu::SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ) { } -void SalMenu::GetSystemMenuData( SystemMenuData* pData ) +void X11SalMenu::GetSystemMenuData( SystemMenuData* pData ) { } @@ -166,11 +163,7 @@ void SalMenu::GetSystemMenuData( SystemMenuData* pData ) */ -SalMenuItem::SalMenuItem() -{ -} - -SalMenuItem::~SalMenuItem() +X11SalMenuItem::~X11SalMenuItem() { } diff --git a/vcl/win/inc/salmenu.h b/vcl/win/inc/salmenu.h index c7a8112f2de4..2a3756966007 100644 --- a/vcl/win/inc/salmenu.h +++ b/vcl/win/inc/salmenu.h @@ -2,9 +2,9 @@ * * $RCSfile: salmenu.h,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: kz $ $Date: 2003-11-18 14:58:23 $ + * last change: $Author: kz $ $Date: 2003-11-20 13:03:11 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -68,29 +68,50 @@ #ifndef _SV_BITMAP_HXX #include <bitmap.hxx> #endif +#ifndef _SV_SALMENU_HXX +#include <salmenu.hxx> +#endif -class SalMenu; -class SalMenuItem; -class SalMenuData +class WinSalMenu : public SalMenu { public: + WinSalMenu(); + virtual ~WinSalMenu(); + virtual BOOL VisibleMenuBar(); // must return TRUE to actually DISPLAY native menu bars + // otherwise only menu messages are processed (eg, OLE on Windows) + + virtual void InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ); + virtual void RemoveItem( unsigned nPos ); + virtual void SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ); + virtual void SetFrame( const SalFrame* pFrame ); + virtual void CheckItem( unsigned nPos, BOOL bCheck ); + virtual void EnableItem( unsigned nPos, BOOL bEnable ); + virtual void SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText ); + virtual void SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ); + virtual void SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ); + virtual void GetSystemMenuData( SystemMenuData* pData ); + HMENU mhMenu; // the menu handle BOOL mbMenuBar; // true for menu bars HWND mhWnd; // the window handle where the menubar is attached, may be NULL - SalMenu *mpParentMenu; // the parent menu + WinSalMenu *mpParentMenu; // the parent menu }; -class SalMenuItemData +class WinSalMenuItem : public SalMenuItem { public: + WinSalMenuItem(); + virtual ~WinSalMenuItem(); + + MENUITEMINFOW mInfo; void* mpMenu; // pointer to corresponding VCL menu XubString mText; // the item text XubString mAccelText; // the accelerator string Bitmap maBitmap; // item image int mnId; // item id - SalMenu* mpSalMenu; // the menu where this item is inserted + WinSalMenu* mpSalMenu; // the menu where this item is inserted }; #endif // _SV_SALMENU_H diff --git a/vcl/win/source/window/MAKEFILE.MK b/vcl/win/source/window/MAKEFILE.MK index debc02c4adff..8c1c8f50eee9 100644 --- a/vcl/win/source/window/MAKEFILE.MK +++ b/vcl/win/source/window/MAKEFILE.MK @@ -2,9 +2,9 @@ # # $RCSfile: MAKEFILE.MK,v $ # -# $Revision: 1.4 $ +# $Revision: 1.5 $ # -# last change: $Author: kz $ $Date: 2003-11-18 14:58:37 $ +# last change: $Author: kz $ $Date: 2003-11-20 13:03:12 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -83,7 +83,7 @@ SLOFILES= $(SLO)$/salframe.obj \ .IF "$(UPDATER)"=="YES" OBJFILES= $(OBJ)$/salframe.obj \ - $(OBJ)$/salmenu.obj \ + $(OBJ)$/salmenu.obj \ $(OBJ)$/salobj.obj .ENDIF diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx index 048d24fd1996..741c13c87de0 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.97 $ + * $Revision: 1.98 $ * - * last change: $Author: kz $ $Date: 2003-11-18 16:03:52 $ + * last change: $Author: kz $ $Date: 2003-11-20 13:03:13 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -114,8 +114,8 @@ #ifndef _SV_SALVD_H #include <salvd.h> #endif -#ifndef _SV_SALMENU_HXX -#include <salmenu.hxx> +#ifndef _SV_SALMENU_H +#include <salmenu.h> #endif #ifndef _SV_IMPBMP_HXX #include <impbmp.hxx> @@ -933,41 +933,41 @@ WinSalFrame::WinSalFrame() { SalData* pSalData = GetSalData(); - maFrameData.mhWnd = 0; - maFrameData.mhCursor = LoadCursor( 0, IDC_ARROW ); - maFrameData.mhDefIMEContext = 0; - maFrameData.mpGraphics = NULL; - maFrameData.mpGraphics2 = NULL; - 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; - maFrameData.mSelectedhMenu = 0; - maFrameData.mLastActivatedhMenu = 0; + 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; + mSelectedhMenu = 0; + mLastActivatedhMenu = 0; memset( &maState, 0, sizeof( SalFrameState ) ); maSysData.nSize = sizeof( SystemEnvData ); @@ -1188,13 +1188,14 @@ void WinSalFrame::SetIcon( USHORT nIcon ) void WinSalFrame::SetMenu( SalMenu* pSalMenu ) { - if( pSalMenu && pSalMenu->maData.mbMenuBar ) - ::SetMenu( maFrameData.mhWnd, pSalMenu->maData.mhMenu ); + WinSalMenu* pWMenu = static_cast<WinSalMenu*>(pSalMenu); + if( pSalMenu && pWMenu->mbMenuBar ) + ::SetMenu( mhWnd, pWMenu->mhMenu ); } void WinSalFrame::DrawMenuBar() { - ::DrawMenuBar( maFrameData.mhWnd ); + ::DrawMenuBar( mhWnd ); } // ----------------------------------------------------------------------- @@ -1420,7 +1421,7 @@ void WinSalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, nX = (aParentRect.right - aParentRect.left) - nWidth-1 - nX; //#110386#, do not transform coordinates for system child windows - if( !(GetWindowStyle( maFrameData.mhWnd ) & WS_CHILD) ) + if( !(GetWindowStyle( mhWnd ) & WS_CHILD) ) { POINT aPt; aPt.x = nX; @@ -4405,7 +4406,7 @@ static int ImplHandleMinMax( HWND hWnd, LPARAM lParam ) // the pointer is stored in every item, so if no position // is specified we just use the first item (ie, pos=0) // if bByPosition is FALSE then nPos denotes a menu id instead of a position -static SalMenuItem* ImplGetSalMenuItem( HMENU hMenu, UINT nPos, BOOL bByPosition=TRUE ) +static WinSalMenuItem* ImplGetSalMenuItem( HMENU hMenu, UINT nPos, BOOL bByPosition=TRUE ) { DWORD err=0; @@ -4416,7 +4417,7 @@ static SalMenuItem* ImplGetSalMenuItem( HMENU hMenu, UINT nPos, BOOL bByPosition if( !GetMenuItemInfoW( hMenu, nPos, bByPosition, &mi) ) err = GetLastError(); - return (SalMenuItem *) mi.dwItemData; + return (WinSalMenuItem *) mi.dwItemData; } // returns the index of the currently selected item if any or -1 @@ -4462,10 +4463,10 @@ static int ImplMenuChar( HWND hWnd, WPARAM wParam, LPARAM lParam ) int idx = idxSelected != -1 ? idxSelected+1 : 0; // if duplicate mnemonics cycle through menu for( int i=0; i< nItemCount; i++, idx++ ) { - SalMenuItem* pSalMenuItem = ImplGetSalMenuItem( hMenu, idx % nItemCount ); + WinSalMenuItem* pSalMenuItem = ImplGetSalMenuItem( hMenu, idx % nItemCount ); if( !pSalMenuItem ) continue; - String aStr = pSalMenuItem->maData.mText; + String aStr = pSalMenuItem->mText; aStr.ToLowerAscii(); if( aStr.Search( aMnemonic ) != STRING_NOTFOUND) { @@ -4495,7 +4496,7 @@ static int ImplMeasureItem( HWND hWnd, WPARAM wParam, LPARAM lParam ) if( pMI->CtlType != ODT_MENU ) return 0; - SalMenuItem *pSalMenuItem = (SalMenuItem *) pMI->itemData; + WinSalMenuItem *pSalMenuItem = (WinSalMenuItem *) pMI->itemData; if( !pSalMenuItem ) return 0; @@ -4513,19 +4514,19 @@ static int ImplMeasureItem( HWND hWnd, WPARAM wParam, LPARAM lParam ) HFONT hfntOld = (HFONT) SelectObject(hdc, (HFONT) CreateFontIndirect( &ncm.lfMenuFont )); // menu text and accelerator - String aStr(pSalMenuItem->maData.mText.GetBuffer() ); - if( pSalMenuItem->maData.mAccelText.Len() ) + String aStr(pSalMenuItem->mText.GetBuffer() ); + if( pSalMenuItem->mAccelText.Len() ) { aStr.AppendAscii(" "); - aStr.Append( pSalMenuItem->maData.mAccelText ); + aStr.Append( pSalMenuItem->mAccelText ); } GetTextExtentPoint32W( hdc, (LPWSTR) aStr.GetBuffer(), aStr.Len(), &strSize ); // image Size bmpSize( 16, 16 ); - //if( !!pSalMenuItem->maData.maBitmap ) - // bmpSize = pSalMenuItem->maData.maBitmap.GetSizePixel(); + //if( !!pSalMenuItem->maBitmap ) + // bmpSize = pSalMenuItem->maBitmap.GetSizePixel(); // checkmark Size checkSize( GetSystemMetrics( SM_CXMENUCHECK ), GetSystemMetrics( SM_CYMENUCHECK ) ); @@ -4553,7 +4554,7 @@ static int ImplDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam ) if( pDI->CtlType != ODT_MENU ) return 0; - SalMenuItem *pSalMenuItem = (SalMenuItem *) pDI->itemData; + WinSalMenuItem *pSalMenuItem = (WinSalMenuItem *) pDI->itemData; if( !pSalMenuItem ) return 0; @@ -4612,9 +4613,9 @@ static int ImplDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam ) //Size bmpSize = aBitmap.GetSizePixel(); Size bmpSize(16, 16); - if( !!pSalMenuItem->maData.maBitmap ) + if( !!pSalMenuItem->maBitmap ) { - Bitmap aBitmap( pSalMenuItem->maData.maBitmap ); + Bitmap aBitmap( pSalMenuItem->maBitmap ); // set transparent pixels to background color if( fDisabled ) @@ -4622,7 +4623,7 @@ static int ImplDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam ) aBitmap.Replace( Color( COL_LIGHTMAGENTA ), Color( GetRValue(colBackground),GetGValue(colBackground),GetBValue(colBackground) ), 0); - SalBitmap* pSalBmp = aBitmap.ImplGetImpBitmap()->ImplGetSalBitmap(); + WinSalBitmap* pSalBmp = static_cast<WinSalBitmap*>(aBitmap.ImplGetImpBitmap()->ImplGetSalBitmap()); HGLOBAL hDrawDIB = pSalBmp->ImplGethDIB(); if( hDrawDIB ) @@ -4660,7 +4661,7 @@ static int ImplDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam ) hfntOld = (HFONT) SelectObject(pDI->hDC, (HFONT) CreateFontIndirect( &ncm.lfMenuFont )); SIZE strSize; - String aStr( pSalMenuItem->maData.mText.GetBuffer() ); + String aStr( pSalMenuItem->mText.GetBuffer() ); GetTextExtentPoint32W( pDI->hDC, (LPWSTR) aStr.GetBuffer(), aStr.Len(), &strSize ); @@ -4670,10 +4671,10 @@ static int ImplDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam ) DST_PREFIXTEXT | (fDisabled && !fSelected ? DSS_DISABLED : DSS_NORMAL) ) ) err = GetLastError(); - if( pSalMenuItem->maData.mAccelText.Len() ) + if( pSalMenuItem->mAccelText.Len() ) { SIZE strSizeA; - aStr = pSalMenuItem->maData.mAccelText; + aStr = pSalMenuItem->mAccelText; GetTextExtentPoint32W( pDI->hDC, (LPWSTR) aStr.GetBuffer(), aStr.Len(), &strSizeA ); TEXTMETRIC tm; @@ -4700,7 +4701,7 @@ static int ImplDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam ) static int ImplHandleMenuActivate( HWND hWnd, WPARAM wParam, LPARAM lParam ) { // Menu activation - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; @@ -4711,19 +4712,17 @@ static int ImplHandleMenuActivate( HWND hWnd, WPARAM wParam, LPARAM lParam ) // Send activate and deactivate together, so we have not keep track of opened menues // this will be enough to have the menues updated correctly SalMenuEvent aMenuEvt; - SalMenuItem *pSalMenuItem = ImplGetSalMenuItem( hMenu, 0 ); + WinSalMenuItem *pSalMenuItem = ImplGetSalMenuItem( hMenu, 0 ); if( pSalMenuItem ) - aMenuEvt.mpMenu = pSalMenuItem->maData.mpMenu; + aMenuEvt.mpMenu = pSalMenuItem->mpMenu; else aMenuEvt.mpMenu = NULL; - long nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MENUACTIVATE, &aMenuEvt ); + long nRet = pFrame->CallCallback( SALEVENT_MENUACTIVATE, &aMenuEvt ); if( nRet ) - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MENUDEACTIVATE, &aMenuEvt ); + nRet = pFrame->CallCallback( SALEVENT_MENUDEACTIVATE, &aMenuEvt ); if( nRet ) - pFrame->maFrameData.mLastActivatedhMenu = hMenu; + pFrame->mLastActivatedhMenu = hMenu; return (nRet!=0); } @@ -4731,7 +4730,7 @@ static int ImplHandleMenuActivate( HWND hWnd, WPARAM wParam, LPARAM lParam ) static int ImplHandleMenuSelect( HWND hWnd, WPARAM wParam, LPARAM lParam ) { // Menu selection - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; @@ -4743,30 +4742,28 @@ static int ImplHandleMenuSelect( HWND hWnd, WPARAM wParam, LPARAM lParam ) bByPosition = TRUE; long nRet = 0; - if ( hMenu && !pFrame->maFrameData.mLastActivatedhMenu ) + if ( hMenu && !pFrame->mLastActivatedhMenu ) { // we never activated a menu (ie, no WM_INITMENUPOPUP has occured yet) // which means this must be the menubar -> send activation/deactivation SalMenuEvent aMenuEvt; - SalMenuItem *pSalMenuItem = ImplGetSalMenuItem( hMenu, nId, bByPosition ); + WinSalMenuItem *pSalMenuItem = ImplGetSalMenuItem( hMenu, nId, bByPosition ); if( pSalMenuItem ) - aMenuEvt.mpMenu = pSalMenuItem->maData.mpMenu; + aMenuEvt.mpMenu = pSalMenuItem->mpMenu; else aMenuEvt.mpMenu = NULL; - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MENUACTIVATE, &aMenuEvt ); + nRet = pFrame->CallCallback( SALEVENT_MENUACTIVATE, &aMenuEvt ); if( nRet ) - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MENUDEACTIVATE, &aMenuEvt ); + nRet = pFrame->CallCallback( SALEVENT_MENUDEACTIVATE, &aMenuEvt ); if( nRet ) - pFrame->maFrameData.mLastActivatedhMenu = hMenu; + pFrame->mLastActivatedhMenu = hMenu; } if( !hMenu && nFlags == 0xFFFF ) { // all menus are closed, reset activation logic - pFrame->maFrameData.mLastActivatedhMenu = NULL; + pFrame->mLastActivatedhMenu = NULL; } if( hMenu ) @@ -4774,7 +4771,7 @@ static int ImplHandleMenuSelect( HWND hWnd, WPARAM wParam, LPARAM lParam ) // hMenu must be saved, as it is not passed in WM_COMMAND which always occurs after a selection // if a menu is closed due to a command selection then hMenu is NULL, but WM_COMMAND comes later // so we must not overwrite it in this case - pFrame->maFrameData.mSelectedhMenu = hMenu; + pFrame->mSelectedhMenu = hMenu; // send highlight event if( nFlags & MF_POPUP ) @@ -4791,14 +4788,13 @@ static int ImplHandleMenuSelect( HWND hWnd, WPARAM wParam, LPARAM lParam ) SalMenuEvent aMenuEvt; aMenuEvt.mnId = nId; - SalMenuItem *pSalMenuItem = ImplGetSalMenuItem( hMenu, nId, FALSE ); + WinSalMenuItem *pSalMenuItem = ImplGetSalMenuItem( hMenu, nId, FALSE ); if( pSalMenuItem ) - aMenuEvt.mpMenu = pSalMenuItem->maData.mpMenu; + aMenuEvt.mpMenu = pSalMenuItem->mpMenu; else aMenuEvt.mpMenu = NULL; - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MENUHIGHLIGHT, &aMenuEvt ); + nRet = pFrame->CallCallback( SALEVENT_MENUHIGHLIGHT, &aMenuEvt ); } return (nRet != 0); @@ -4806,7 +4802,7 @@ static int ImplHandleMenuSelect( HWND hWnd, WPARAM wParam, LPARAM lParam ) static int ImplHandleCommand( HWND hWnd, WPARAM wParam, LPARAM lParam ) { - SalFrame* pFrame = GetWindowPtr( hWnd ); + WinSalFrame* pFrame = GetWindowPtr( hWnd ); if ( !pFrame ) return 0; @@ -4820,14 +4816,13 @@ static int ImplHandleCommand( HWND hWnd, WPARAM wParam, LPARAM lParam ) { SalMenuEvent aMenuEvt; aMenuEvt.mnId = nId; - SalMenuItem *pSalMenuItem = ImplGetSalMenuItem( pFrame->maFrameData.mSelectedhMenu, nId, FALSE ); + WinSalMenuItem *pSalMenuItem = ImplGetSalMenuItem( pFrame->mSelectedhMenu, nId, FALSE ); if( pSalMenuItem ) - aMenuEvt.mpMenu = pSalMenuItem->maData.mpMenu; + aMenuEvt.mpMenu = pSalMenuItem->mpMenu; else aMenuEvt.mpMenu = NULL; - nRet = pFrame->maFrameData.mpProc( pFrame->maFrameData.mpInst, pFrame, - SALEVENT_MENUCOMMAND, &aMenuEvt ); + nRet = pFrame->CallCallback( SALEVENT_MENUCOMMAND, &aMenuEvt ); } } return (nRet != 0); diff --git a/vcl/win/source/window/salmenu.cxx b/vcl/win/source/window/salmenu.cxx index 20f5cf1760f8..bf3423fba1d5 100644 --- a/vcl/win/source/window/salmenu.cxx +++ b/vcl/win/source/window/salmenu.cxx @@ -2,9 +2,9 @@ * * $RCSfile: salmenu.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: kz $ $Date: 2003-11-18 16:04:04 $ + * last change: $Author: kz $ $Date: 2003-11-20 13:03:14 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -71,14 +71,14 @@ #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_SALGDI_HXX #include <salgdi.hxx> #endif -#ifndef _SV_SALMENU_HXX -#include <salmenu.hxx> +#ifndef _SV_SALMENU_H +#include <salmenu.h> #endif #ifndef _SV_MENU_HXX #include <menu.hxx> @@ -86,8 +86,8 @@ #ifndef _SV_SYSDATA_HXX #include <sysdata.hxx> #endif -#ifndef _SV_SALFRAME_HXX -#include <salframe.hxx> +#ifndef _SV_SALFRAME_H +#include <salframe.h> #endif #ifndef _SV_IMPBMP_HXX #include <impbmp.hxx> @@ -106,14 +106,14 @@ static DWORD myerr=0; SalMenu* WinSalInstance::CreateMenu( BOOL bMenuBar ) { - SalMenu *pSalMenu = new SalMenu(); + WinSalMenu *pSalMenu = new WinSalMenu(); - pSalMenu->maData.mbMenuBar = bMenuBar; - pSalMenu->maData.mhWnd = NULL; + pSalMenu->mbMenuBar = bMenuBar; + pSalMenu->mhWnd = NULL; if( bMenuBar ) - pSalMenu->maData.mhMenu = ::CreateMenu(); + pSalMenu->mhMenu = ::CreateMenu(); else - pSalMenu->maData.mhMenu = ::CreatePopupMenu(); + pSalMenu->mhMenu = ::CreatePopupMenu(); return pSalMenu; } @@ -129,39 +129,39 @@ SalMenuItem* WinSalInstance::CreateMenuItem( const SalItemParams* pItemData ) if( !pItemData ) return NULL; - SalMenuItem *pSalMenuItem = new SalMenuItem(); - memset( &pSalMenuItem->maData.mInfo, 0, sizeof( MENUITEMINFOW ) ); - pSalMenuItem->maData.mInfo.cbSize = sizeof( MENUITEMINFOW ); + WinSalMenuItem *pSalMenuItem = new WinSalMenuItem(); + memset( &pSalMenuItem->mInfo, 0, sizeof( MENUITEMINFOW ) ); + pSalMenuItem->mInfo.cbSize = sizeof( MENUITEMINFOW ); if( pItemData->eType == MENUITEM_SEPARATOR ) { // separator - pSalMenuItem->maData.mInfo.fMask = MIIM_TYPE; - pSalMenuItem->maData.mInfo.fType = MFT_SEPARATOR; + pSalMenuItem->mInfo.fMask = MIIM_TYPE; + pSalMenuItem->mInfo.fType = MFT_SEPARATOR; } else { // item - pSalMenuItem->maData.mText = pItemData->aText; - pSalMenuItem->maData.mpMenu = pItemData->pMenu; - pSalMenuItem->maData.maBitmap= !!pItemData->aImage ? pItemData->aImage.GetBitmap() : Bitmap(); - pSalMenuItem->maData.mnId = pItemData->nId; + pSalMenuItem->mText = pItemData->aText; + pSalMenuItem->mpMenu = pItemData->pMenu; + pSalMenuItem->maBitmap= !!pItemData->aImage ? pItemData->aImage.GetBitmap() : Bitmap(); + pSalMenuItem->mnId = pItemData->nId; // 'translate' mnemonics - pSalMenuItem->maData.mText.SearchAndReplace( '~', '&' ); + pSalMenuItem->mText.SearchAndReplace( '~', '&' ); - pSalMenuItem->maData.mInfo.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID | MIIM_DATA; - pSalMenuItem->maData.mInfo.fType = MFT_STRING; + pSalMenuItem->mInfo.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID | MIIM_DATA; + pSalMenuItem->mInfo.fType = MFT_STRING; #ifdef OWNERDRAW if( pItemData->pMenu && !pItemData->pMenu->IsMenuBar() ) - pSalMenuItem->maData.mInfo.fType |= MFT_OWNERDRAW; - pSalMenuItem->maData.mInfo.fState = MFS_ENABLED; + pSalMenuItem->mInfo.fType |= MFT_OWNERDRAW; + pSalMenuItem->mInfo.fState = MFS_ENABLED; #endif - pSalMenuItem->maData.mInfo.dwTypeData = (LPWSTR) pSalMenuItem->maData.mText.GetBuffer(); - pSalMenuItem->maData.mInfo.cch = pSalMenuItem->maData.mText.Len(); + pSalMenuItem->mInfo.dwTypeData = (LPWSTR) pSalMenuItem->mText.GetBuffer(); + pSalMenuItem->mInfo.cch = pSalMenuItem->mText.Len(); - pSalMenuItem->maData.mInfo.wID = pItemData->nId; - pSalMenuItem->maData.mInfo.dwItemData = (ULONG_PTR) pSalMenuItem; // user data + pSalMenuItem->mInfo.wID = pItemData->nId; + pSalMenuItem->mInfo.dwItemData = (ULONG_PTR) pSalMenuItem; // user data } return pSalMenuItem; @@ -177,10 +177,10 @@ void WinSalInstance::DestroyMenuItem( SalMenuItem* pSalMenuItem ) static SalMenu* ImplFindMenuBar( SalMenu *pMenu ) { - SalMenu *pMenuBar = pMenu; - while( pMenuBar->maData.mpParentMenu ) - pMenuBar = pMenuBar->maData.mpParentMenu; - if( pMenuBar->maData.mbMenuBar ) + WinSalMenu *pMenuBar = static_cast<WinSalMenu*>(pMenu); + while( pMenuBar->mpParentMenu ) + pMenuBar = pMenuBar->mpParentMenu; + if( pMenuBar->mbMenuBar ) return pMenuBar; else return NULL; @@ -188,13 +188,13 @@ static SalMenu* ImplFindMenuBar( SalMenu *pMenu ) static void ImplDrawMenuBar( SalMenu *pMenu ) { - if( SalMenu::VisibleMenuBar() ) + if( pMenu->VisibleMenuBar() ) { // redrawing the menubar all the time actually seems to be unnecessary (it just flickers) /* - SalMenu *pMenuBar = ImplFindMenuBar( pMenu ); - if( pMenuBar && pMenuBar->maData.mhWnd ) - ::DrawMenuBar( pMenuBar->maData.mhWnd ); + WinSalMenu *pMenuBar = ImplFindMenuBar( pMenu ); + if( pMenuBar && pMenuBar->mhWnd ) + ::DrawMenuBar( pMenuBar->mhWnd ); */ } } @@ -203,21 +203,24 @@ static void ImplDrawMenuBar( SalMenu *pMenu ) /* - * SalMenu + * WinSalMenu */ -SalMenu::SalMenu() +WinSalMenu::WinSalMenu() { - memset( &maData, 0, sizeof(maData) ); + mhMenu = NULL; + mbMenuBar = FALSE; + mhWnd = NULL; + mpParentMenu = NULL; } -SalMenu::~SalMenu() +WinSalMenu::~WinSalMenu() { // only required if not associated to a window... - ::DestroyMenu( maData.mhMenu ); + ::DestroyMenu( mhMenu ); } -BOOL SalMenu::VisibleMenuBar() +BOOL WinSalMenu::VisibleMenuBar() { // The Win32 implementation never shows a native // menubar. Thus, native menues are only visible @@ -232,198 +235,204 @@ BOOL SalMenu::VisibleMenuBar() return FALSE; } -void SalMenu::SetFrame( const SalFrame *pFrame ) +void WinSalMenu::SetFrame( const SalFrame *pFrame ) { if( pFrame ) - maData.mhWnd = pFrame->maFrameData.mhWnd; + mhWnd = static_cast<const WinSalFrame*>(pFrame)->mhWnd; else - maData.mhWnd = NULL; + mhWnd = NULL; } -void SalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) +void WinSalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) { if( pSalMenuItem ) { + WinSalMenuItem* pWItem = static_cast<WinSalMenuItem*>(pSalMenuItem); if( nPos == MENU_APPEND ) { - nPos = ::GetMenuItemCount( maData.mhMenu ); + nPos = ::GetMenuItemCount( mhMenu ); if( nPos == -1 ) return; } - if(!::InsertMenuItemW( maData.mhMenu, nPos, TRUE, &pSalMenuItem->maData.mInfo )) + if(!::InsertMenuItemW( mhMenu, nPos, TRUE, &pWItem->mInfo )) myerr = GetLastError(); else { - pSalMenuItem->maData.mpSalMenu = this; + pWItem->mpSalMenu = this; ImplDrawMenuBar( this ); } } } -void SalMenu::RemoveItem( unsigned nPos ) +void WinSalMenu::RemoveItem( unsigned nPos ) { - int num = ::GetMenuItemCount( maData.mhMenu ); + int num = ::GetMenuItemCount( mhMenu ); if( num != -1 && nPos < (unsigned)num ) { - SalMenuItem *pSalMenuItem = NULL; + WinSalMenuItem *pSalMenuItem = NULL; MENUITEMINFOW mi; memset( &mi, 0, sizeof(mi) ); mi.cbSize = sizeof( mi ); mi.fMask = MIIM_DATA; - if( !GetMenuItemInfoW( maData.mhMenu, nPos, TRUE, &mi) ) + if( !GetMenuItemInfoW( mhMenu, nPos, TRUE, &mi) ) myerr = GetLastError(); else - pSalMenuItem = (SalMenuItem *) mi.dwItemData; + pSalMenuItem = (WinSalMenuItem *) mi.dwItemData; - if( !::RemoveMenu( maData.mhMenu, nPos, MF_BYPOSITION ) ) + if( !::RemoveMenu( mhMenu, nPos, MF_BYPOSITION ) ) myerr = GetLastError(); else { if( pSalMenuItem ) - pSalMenuItem->maData.mpSalMenu = NULL; + pSalMenuItem->mpSalMenu = NULL; ImplDrawMenuBar( this ); } } } -void ImplRemoveItemById( SalMenu *pSalMenu, unsigned nItemId ) +void ImplRemoveItemById( WinSalMenu *pSalMenu, unsigned nItemId ) { if( !pSalMenu ) return; - SalMenuItem *pSalMenuItem = NULL; + WinSalMenuItem *pSalMenuItem = NULL; MENUITEMINFOW mi; memset( &mi, 0, sizeof(mi) ); mi.cbSize = sizeof( mi ); mi.fMask = MIIM_DATA; - if( !GetMenuItemInfoW( pSalMenu->maData.mhMenu, nItemId, FALSE, &mi) ) + if( !GetMenuItemInfoW( pSalMenu->mhMenu, nItemId, FALSE, &mi) ) myerr = GetLastError(); else - pSalMenuItem = (SalMenuItem *) mi.dwItemData; + pSalMenuItem = (WinSalMenuItem *) mi.dwItemData; - if( !::RemoveMenu( pSalMenu->maData.mhMenu, nItemId, MF_BYCOMMAND ) ) + if( !::RemoveMenu( pSalMenu->mhMenu, nItemId, MF_BYCOMMAND ) ) myerr = GetLastError(); else { if( pSalMenuItem ) - pSalMenuItem->maData.mpSalMenu = NULL; + pSalMenuItem->mpSalMenu = NULL; ImplDrawMenuBar( pSalMenu ); } } -void SalMenu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) +void WinSalMenu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) { if( pSalMenuItem ) { - if( pSalMenuItem->maData.mInfo.hSubMenu ) - ::DestroyMenu( pSalMenuItem->maData.mInfo.hSubMenu ); + WinSalMenuItem* pWMenuItem = static_cast<WinSalMenuItem*>(pSalMenuItem); + WinSalMenu* pWSubMenu = static_cast<WinSalMenu*>(pSubMenu); + if( pWMenuItem->mInfo.hSubMenu ) + ::DestroyMenu( pWMenuItem->mInfo.hSubMenu ); - pSalMenuItem->maData.mInfo.fMask |= MIIM_SUBMENU; + pWMenuItem->mInfo.fMask |= MIIM_SUBMENU; if( !pSubMenu ) - pSalMenuItem->maData.mInfo.hSubMenu = NULL; + pWMenuItem->mInfo.hSubMenu = NULL; else { - pSalMenuItem->maData.mInfo.hSubMenu = pSubMenu->maData.mhMenu; - pSubMenu->maData.mpParentMenu = this; + pWMenuItem->mInfo.hSubMenu = pWSubMenu->mhMenu; + pWSubMenu->mpParentMenu = this; } - int num = ::GetMenuItemCount( maData.mhMenu ); - if(!::SetMenuItemInfoW( maData.mhMenu, nPos, TRUE, &pSalMenuItem->maData.mInfo ) ) + int num = ::GetMenuItemCount( mhMenu ); + if(!::SetMenuItemInfoW( mhMenu, nPos, TRUE, &pWMenuItem->mInfo ) ) myerr = GetLastError(); else ImplDrawMenuBar( this ); } } -void SalMenu::CheckItem( unsigned nPos, BOOL bCheck ) +void WinSalMenu::CheckItem( unsigned nPos, BOOL bCheck ) { - if( -1 != ::CheckMenuItem( maData.mhMenu, nPos, MF_BYPOSITION|(bCheck ? MF_CHECKED : MF_UNCHECKED) ) ) + if( -1 != ::CheckMenuItem( mhMenu, nPos, MF_BYPOSITION|(bCheck ? MF_CHECKED : MF_UNCHECKED) ) ) ImplDrawMenuBar( this ); } -void SalMenu::EnableItem( unsigned nPos, BOOL bEnable ) +void WinSalMenu::EnableItem( unsigned nPos, BOOL bEnable ) { - if( -1 != ::EnableMenuItem( maData.mhMenu, nPos, MF_BYPOSITION|(bEnable ? MF_ENABLED : (MF_DISABLED|MF_GRAYED) ) ) ) + if( -1 != ::EnableMenuItem( mhMenu, nPos, MF_BYPOSITION|(bEnable ? MF_ENABLED : (MF_DISABLED|MF_GRAYED) ) ) ) ImplDrawMenuBar( this ); } -void SalMenu::SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) +void WinSalMenu::SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) { if( pSalMenuItem ) { + WinSalMenuItem* pWItem = static_cast<WinSalMenuItem*>(pSalMenuItem); if( !!rImage ) - pSalMenuItem->maData.maBitmap = rImage.GetBitmap(); + pWItem->maBitmap = rImage.GetBitmap(); else - pSalMenuItem->maData.maBitmap = Bitmap(); + pWItem->maBitmap = Bitmap(); } } -void SalMenu::SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText ) +void WinSalMenu::SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText ) { if( pSalMenuItem ) { - pSalMenuItem->maData.mText = rText; + WinSalMenuItem* pWItem = static_cast<WinSalMenuItem*>(pSalMenuItem); + pWItem->mText = rText; // 'translate' mnemonics - pSalMenuItem->maData.mText.SearchAndReplace( '~', '&' ); - pSalMenuItem->maData.mInfo.fMask = MIIM_TYPE | MIIM_DATA; - pSalMenuItem->maData.mInfo.fType = MFT_STRING; + pWItem->mText.SearchAndReplace( '~', '&' ); + pWItem->mInfo.fMask = MIIM_TYPE | MIIM_DATA; + pWItem->mInfo.fType = MFT_STRING; #ifdef OWNERDRAW - if( pSalMenuItem->maData.mpMenu && !((Menu*) pSalMenuItem->maData.mpMenu)->IsMenuBar() ) - pSalMenuItem->maData.mInfo.fType |= MFT_OWNERDRAW; + if( pWItem->mpMenu && !((Menu*) pWItem->mpMenu)->IsMenuBar() ) + pWItem->mInfo.fType |= MFT_OWNERDRAW; #endif // combine text and accelerator text - XubString aStr( pSalMenuItem->maData.mText ); - if( pSalMenuItem->maData.mAccelText.Len() ) + XubString aStr( pWItem->mText ); + if( pWItem->mAccelText.Len() ) { aStr.AppendAscii("\t"); - aStr.Append( pSalMenuItem->maData.mAccelText ); + aStr.Append( pWItem->mAccelText ); } - pSalMenuItem->maData.mInfo.dwTypeData = (LPWSTR) aStr.GetBuffer(); - pSalMenuItem->maData.mInfo.cch = aStr.Len(); + pWItem->mInfo.dwTypeData = (LPWSTR) aStr.GetBuffer(); + pWItem->mInfo.cch = aStr.Len(); - if(!::SetMenuItemInfoW( maData.mhMenu, nPos, TRUE, &pSalMenuItem->maData.mInfo )) + if(!::SetMenuItemInfoW( mhMenu, nPos, TRUE, &pWItem->mInfo )) myerr = GetLastError(); else ImplDrawMenuBar( this ); } } -void SalMenu::SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ) +void WinSalMenu::SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ) { if( pSalMenuItem ) { - pSalMenuItem->maData.mAccelText = rKeyName; - pSalMenuItem->maData.mInfo.fMask = MIIM_TYPE | MIIM_DATA; - pSalMenuItem->maData.mInfo.fType = MFT_STRING; + WinSalMenuItem* pWItem = static_cast<WinSalMenuItem*>(pSalMenuItem); + pWItem->mAccelText = rKeyName; + pWItem->mInfo.fMask = MIIM_TYPE | MIIM_DATA; + pWItem->mInfo.fType = MFT_STRING; #ifdef OWNERDRAW - if( pSalMenuItem->maData.mpMenu && !((Menu*)pSalMenuItem->maData.mpMenu)->IsMenuBar() ) - pSalMenuItem->maData.mInfo.fType |= MFT_OWNERDRAW; + if( pWItem->mpMenu && !((Menu*)pWItem->mpMenu)->IsMenuBar() ) + pWItem->mInfo.fType |= MFT_OWNERDRAW; #endif // combine text and accelerator text - XubString aStr( pSalMenuItem->maData.mText ); - if( pSalMenuItem->maData.mAccelText.Len() ) + XubString aStr( pWItem->mText ); + if( pWItem->mAccelText.Len() ) { aStr.AppendAscii("\t"); - aStr.Append( pSalMenuItem->maData.mAccelText ); + aStr.Append( pWItem->mAccelText ); } - pSalMenuItem->maData.mInfo.dwTypeData = (LPWSTR) aStr.GetBuffer(); - pSalMenuItem->maData.mInfo.cch = aStr.Len(); + pWItem->mInfo.dwTypeData = (LPWSTR) aStr.GetBuffer(); + pWItem->mInfo.cch = aStr.Len(); - if(!::SetMenuItemInfoW( maData.mhMenu, nPos, TRUE, &pSalMenuItem->maData.mInfo )) + if(!::SetMenuItemInfoW( mhMenu, nPos, TRUE, &pWItem->mInfo )) myerr = GetLastError(); else ImplDrawMenuBar( this ); } } -void SalMenu::GetSystemMenuData( SystemMenuData* pData ) +void WinSalMenu::GetSystemMenuData( SystemMenuData* pData ) { if( pData ) - pData->hMenu = maData.mhMenu; + pData->hMenu = mhMenu; } // ======================================================================= @@ -433,18 +442,18 @@ void SalMenu::GetSystemMenuData( SystemMenuData* pData ) */ -SalMenuItem::SalMenuItem() +WinSalMenuItem::WinSalMenuItem() { - memset( &maData.mInfo, 0, sizeof( MENUITEMINFOW ) ); - maData.mpMenu = NULL; - maData.mnId = 0xFFFF; - maData.mpSalMenu = NULL; + memset( &mInfo, 0, sizeof( MENUITEMINFOW ) ); + mpMenu = NULL; + mnId = 0xFFFF; + mpSalMenu = NULL; } -SalMenuItem::~SalMenuItem() +WinSalMenuItem::~WinSalMenuItem() { - if( maData.mpSalMenu ) - ImplRemoveItemById( maData.mpSalMenu, maData.mnId ); + if( mpSalMenu ) + ImplRemoveItemById( mpSalMenu, mnId ); } // ------------------------------------------------------------------- |