'Y' positioning fixes for OS/2 controls

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster
2001-12-21 18:08:31 +00:00
parent dccb75b60d
commit d8a3f66ca7
8 changed files with 272 additions and 47 deletions

View File

@@ -49,6 +49,80 @@ wxSlider::~wxSlider()
::WinDestroyWindow((HWND)m_hStaticValue);
} // end of wxSlider::~wxSlider
void wxSlider::AdjustSubControls(
int nX
, int nY
, int nWidth
, int nHeight
, int nSizeFlags
)
{
SWP vSwp;
int nXOffset = nX;
int nYOffset = nY;
int nCx; // slider,min,max sizes
int nCy;
int nCyf;
char zBuf[300];
wxGetCharSize( GetHWND()
,&nCx
,&nCy
,&this->GetFont()
);
if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL)
{
if (m_windowStyle & wxSL_LABELS )
{
int nMinLen = 0;
int nMaxLen = 0;
::WinQueryWindowText((HWND)m_hStaticMin, 300, zBuf);
GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &this->GetFont());
::WinQueryWindowText((HWND)m_hStaticMax, 300, zBuf);
GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &this->GetFont());
if (m_hStaticValue)
{
int nNewWidth = wxMax(nMinLen, nMaxLen);
int nValueHeight = nCyf;
::WinSetWindowPos( (HWND)m_hStaticValue
,HWND_TOP
,(LONG)nXOffset - (nNewWidth + nCx + nMinLen + nCx)
,(LONG)nYOffset
,(LONG)nNewWidth
,(LONG)nValueHeight
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
);
}
::WinSetWindowPos( (HWND)m_hStaticMin
,HWND_TOP
,(LONG)nXOffset - (nMinLen + nCx)
,(LONG)nYOffset
,(LONG)nMinLen
,(LONG)nCy
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
);
nXOffset += nWidth + nCx;
::WinSetWindowPos( (HWND)m_hStaticMax
,HWND_TOP
,(LONG)nXOffset
,(LONG)nYOffset
,(LONG)nMaxLen
,(LONG)nCy
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
);
}
}
//
// Now deal with a vertical slider -- OS/2 doesn't have vertical sliders
//
} // end of wxSlider::AdjustSubControls
void wxSlider::ClearSel()
{
} // end of wxSlider::ClearSel
@@ -345,24 +419,11 @@ void wxSlider::DoSetSize(
if (pParent)
{
//
// Under OS/2, where a frame window is the parent, most child windows
// that are not specific frame clients are actually children of the
// frame's client, not the frame itself, and so position themselves
// with regards to the client origin, not the frame.
//
if (pParent->IsKindOf(CLASSINFO(wxFrame)))
{
nYOffset = pParent->GetClientSize().y - (nYOffset + nOS2Height);
if (nY != -1)
nY1 = pParent->GetClientSize().y - (nY1 + nOS2Height);
}
else
{
nYOffset = pParent->GetSize().y - (nYOffset + nOS2Height);
if (nY != -1)
nY1 = pParent->GetSize().y - (nY1 + nOS2Height);
}
int nOS2ParentHeight = GetOS2ParentHeight(pParent);
nYOffset = nOS2ParentHeight - (nYOffset + nOS2Height);
if (nY != -1)
nY1 = nOS2ParentHeight - (nY1 + nOS2Height);
}
else
{
@@ -373,6 +434,7 @@ void wxSlider::DoSetSize(
if (nY != -1)
nY1 = vRect.yTop - (nY1 + nOS2Height);
}
m_nSizeFlags = nSizeFlags;
GetPosition( &nCurrentX
,&nCurrentY