#include "wx/dcmemory.h"
#include "wx/menu.h"
#include "wx/utils.h"
+ #include "wx/settings.h"
+ #include "wx/menuitem.h"
#endif
-#include "wx/settings.h"
#include "wx/ownerdrw.h"
-#include "wx/menuitem.h"
-
+#include "wx/os2/dcclient.h"
// ============================================================================
// implementation of wxOwnerDrawn class
: m_strName(rsStr)
{
m_bCheckable = bCheckable;
- m_bOwnerDrawn = FALSE;
+ m_bOwnerDrawn = false;
m_nHeight = 0;
m_nMarginWidth = ms_nLastMarginWidth;
if (wxNORMAL_FONT)
}
vDC.SetFont(GetFont());
vDC.GetTextExtent( sStr
- ,(long *)pWidth
- ,(long *)pHeight
+ ,(wxCoord *)pWidth
+ ,(wxCoord *)pHeight
);
if (!m_strAccel.empty())
{
// Make sure that this item is at least as
// tall as the user's system settings specify
//
- if (*pHeight < m_nMinHeight)
- *pHeight = m_nMinHeight;
+ const size_t heightStd = 6; // FIXME: get value from the system
+ if ( *pHeight < heightStd )
+ *pHeight = heightStd;
m_nHeight = *pHeight; // remember height for use in OnDrawItem
return true;
} // end of wxOwnerDrawn::OnMeasureItem
//
CHARBUNDLE vCbnd;
- HPS hPS= rDC.GetHPS();
+ wxPMDCImpl *impl = (wxPMDCImpl*) rDC.GetImpl();
+ HPS hPS= impl->GetHPS();
wxColour vColBack;
wxColour vColText;
COLORREF vRef;
//
if (eStatus & wxODSelected)
{
- wxColour vCol2(wxT("WHITE"));
- vColBack.Set( (unsigned char)0
- ,(unsigned char)0
- ,(unsigned char)160
- ); // no dark blue in color table
- vColText = vCol2;
+ vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP
+ ,SYSCLR_MENUHILITEBGND
+ ,0L
+ );
+ vColBack.Set( GetRValue(vRef)
+ ,GetGValue(vRef)
+ ,GetBValue(vRef)
+ );
+ vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP
+ ,SYSCLR_MENUHILITE
+ ,0L
+ );
+ vColText.Set( GetRValue(vRef)
+ ,GetGValue(vRef)
+ ,GetBValue(vRef)
+ );
}
else if (eStatus & wxODDisabled)
{
//
// Deal with the tab, extracting the Accel text
//
- nIndex = sFullString.Find(sTgt.c_str());
+ nIndex = sFullString.Find(sTgt);
if (nIndex != -1)
{
bFoundAccel = true;
// Deal with the mnemonic character
//
sTgt = wxT("~");
- nIndex = sFullString.Find(sTgt.c_str());
+ nIndex = sFullString.Find(sTgt);
if (nIndex != -1)
{
wxString sTmp = sFullString;
bFoundMnemonic = true;
sTmp.Remove(nIndex);
rDC.GetTextExtent( sTmp
- ,(long *)&nWidth
- ,(long *)&nHeight
+ ,(wxCoord *)&nWidth
+ ,(wxCoord *)&nHeight
);
sTmp = sFullString[(size_t)(nIndex + 1)];
rDC.GetTextExtent( sTmp
- ,(long *)&nCharWidth
- ,(long *)&nHeight
+ ,(wxCoord *)&nCharWidth
+ ,(wxCoord *)&nHeight
);
sFullString.Replace(sTgt.c_str(), wxEmptyString, true);
}
// Draw the main item text sans the accel text
//
POINTL vPntStart = {nX, rRect.y + 4};
- ::GpiCharStringAt( rDC.GetHPS()
+ ::GpiCharStringAt( impl->GetHPS()
,&vPntStart
,sFullString.length()
- ,(PCH)sFullString.c_str()
+ ,sFullString.char_str()
);
if (bFoundMnemonic)
{
size_t nHeight;
rDC.GetTextExtent( sAccel
- ,(long *)&nWidth
- ,(long *)&nHeight
+ ,(wxCoord *)&nWidth
+ ,(wxCoord *)&nHeight
);
//
// Back off the starting position from the right edge
//
vPntStart.x = rRect.width - (nWidth + 7);
vPntStart.y = rRect.y + 4;
- ::GpiCharStringAt( rDC.GetHPS()
+ ::GpiCharStringAt( impl->GetHPS()
,&vPntStart
,sAccel.length()
- ,(PCH)sAccel.c_str()
+ ,sAccel.char_str()
);
}