// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-#pragma implementation "stattext.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/event.h"
#include "wx/app.h"
#include "wx/brush.h"
+#include "wx/scrolwin.h"
#endif
#include "wx/stattext.h"
long lSstyle = 0L;
- lSstyle = WS_VISIBLE | SS_TEXT | DT_VCENTER;
+ // Used to have DT_VCENTER but that doesn't work correctly with
+ // multiline strings and DT_WORDBREAK. Accept a reasonable
+ // compromise for now
+ lSstyle = WS_VISIBLE | SS_TEXT | DT_WORDBREAK | DT_MNEMONIC;
if (m_windowStyle & wxALIGN_CENTRE)
lSstyle |= DT_CENTER;
else if (m_windowStyle & wxALIGN_RIGHT)
lSstyle |= DT_RIGHT;
else
lSstyle |= DT_LEFT;
- //
- // If the parent is a scrolled window the controls must
- // have this style or they will overlap the scrollbars
- //
- if (pParent)
- if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
- pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
- lSstyle |= WS_CLIPSIBLINGS;
+
+ wxString sLabel = ::wxPMTextToLabel(rsLabel);
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
- ,(PSZ)rsLabel.c_str() // Initial Text
+ ,(PSZ)sLabel.c_str() // Initial Text
,(ULONG)lSstyle // Style flags
,0L, 0L, 0L, 0L // Origin -- 0 size
,(HWND)GetHwndOf(pParent) // owner window handle (same as parent
wxColour vColour;
- vColour.Set(wxString("BLACK"));
+ vColour.Set(wxString(wxT("BLACK")));
LONG lColor = (LONG)vColour.GetPixel();
);
SubclassWin(m_hWnd);
- wxControl::SetFont(pParent->GetFont());
+ SetFont(*wxSMALL_FONT);
+ SetXComp(0);
+ SetYComp(0);
SetSize( nX
,nY
,nWidth
int nHeightLineDefault = 0;
int nHeightLine = 0;
wxString sCurLine;
+ bool bLastWasTilde = FALSE;
for (const wxChar *pc = sText; ; pc++)
{
}
else
{
+ //
+ // We shouldn't take into account the '~' which just introduces the
+ // mnemonic characters and so are not shown on the screen -- except
+ // when it is preceded by another '~' in which case it stands for a
+ // literal tilde
+ //
+ if (*pc == _T('~'))
+ {
+ if (!bLastWasTilde)
+ {
+ bLastWasTilde = TRUE;
+
+ //
+ // Skip the statement adding pc to curLine below
+ //
+ continue;
+ }
+
+ //
+ // It is a literal tilde
+ //
+ bLastWasTilde = FALSE;
+ }
sCurLine += *pc;
}
}
const wxString& rsLabel
)
{
- ::WinSetWindowText(GetHwnd(), rsLabel.c_str());
+ wxString sLabel = ::wxPMTextToLabel(rsLabel);
+ ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str());
//
// Adjust the size of the window to fit to the label unless autoresizing is
//
if (!(GetWindowStyle() & wxST_NO_AUTORESIZE))
{
- DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+ wxCoord vX;
+ wxCoord vY;
+ wxCoord vWidth;
+ wxCoord vHeight;
+
+ GetPosition(&vX, &vY);
+ GetSize(&vWidth, &vHeight);
+ if (!(vX == -1 && vY == -1 && vWidth == -1 && vHeight == -1))
+ DoSetSize(vX, vY, vWidth, vHeight, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+ else
+ DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
}
- DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
} // end of wxStaticText::SetLabel
MRESULT wxStaticText::OS2WindowProc(
,lParam
);
} // end of wxStaticText::OS2WindowProc
-
-