summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2003-11-20 12:03:14 +0000
committerKurt Zenker <kz@openoffice.org>2003-11-20 12:03:14 +0000
commitb8eb40f8e4e6831662a13445f3fdcfd6af5c84f9 (patch)
tree2779ec4aca50c5c94b0436ed54d2098d1433c86f /vcl
parentd801180155ade3b2b5c5e96e50cb7bdf2ba3f25e (diff)
#100000# solved merge problems
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/salvtables.cxx13
-rw-r--r--vcl/source/window/menu.cxx14
-rw-r--r--vcl/unx/inc/salmenu.h34
-rw-r--r--vcl/unx/source/window/salmenu.cxx47
-rw-r--r--vcl/win/inc/salmenu.h37
-rw-r--r--vcl/win/source/window/MAKEFILE.MK6
-rw-r--r--vcl/win/source/window/salframe.cxx171
-rw-r--r--vcl/win/source/window/salmenu.cxx241
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 );
}
// -------------------------------------------------------------------