Fixed sizing and positioning, simplifying code (too much?) in the process.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36682 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1299,7 +1299,10 @@ void wxWindowOS2::DoGetPosition(
|
|||||||
, int* pY
|
, int* pY
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
HWND hWnd = GetHwnd();
|
//
|
||||||
|
// Return parameters assume wxWidgets coordinate system
|
||||||
|
//
|
||||||
|
HWND hWnd;
|
||||||
SWP vSwp;
|
SWP vSwp;
|
||||||
POINTL vPoint;
|
POINTL vPoint;
|
||||||
wxWindow* pParent = GetParent();
|
wxWindow* pParent = GetParent();
|
||||||
@@ -1309,17 +1312,30 @@ void wxWindowOS2::DoGetPosition(
|
|||||||
// the WIN32 WinGetRect, but unlike WinGetRect which returns the window
|
// the WIN32 WinGetRect, but unlike WinGetRect which returns the window
|
||||||
// origin position in screen coordinates, WinQueryWindowRect returns it
|
// origin position in screen coordinates, WinQueryWindowRect returns it
|
||||||
// relative to itself, i.e. (0,0). To get the same under PM we must
|
// relative to itself, i.e. (0,0). To get the same under PM we must
|
||||||
// us WinQueryWindowPos. This call, unlike the WIN32 call, however,
|
// use WinQueryWindowPos. This call, unlike the WIN32 call, however,
|
||||||
// returns a position relative to it's parent, so no parent adujstments
|
// returns a position relative to it's parent, so no parent adujstments
|
||||||
// are needed under OS/2. Also, windows should be created using
|
// are needed under OS/2. Also, windows should be created using
|
||||||
// wxWindow coordinates, i.e 0,0 is the TOP left so vSwp will already
|
// wxWindow coordinates, i.e 0,0 is the TOP left.
|
||||||
// reflect that.
|
|
||||||
//
|
//
|
||||||
|
if (IsKindOf(CLASSINFO(wxFrame)))
|
||||||
|
{
|
||||||
|
wxFrame* pFrame = wxDynamicCast(this, wxFrame);
|
||||||
|
hWnd = pFrame->GetFrame();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
hWnd = GetHwnd();
|
||||||
|
|
||||||
::WinQueryWindowPos(hWnd, &vSwp);
|
::WinQueryWindowPos(hWnd, &vSwp);
|
||||||
|
|
||||||
vPoint.x = vSwp.x;
|
vPoint.x = vSwp.x;
|
||||||
vPoint.y = vSwp.y;
|
vPoint.y = vSwp.y;
|
||||||
|
|
||||||
|
// We need to convert to wxWidgets coordinates
|
||||||
|
int vHeight;
|
||||||
|
DoGetSize(NULL,&vHeight);
|
||||||
|
wxWindow* pWindow = wxDynamicCast(this,wxWindow);
|
||||||
|
vPoint.y = pWindow->GetOS2ParentHeight(pParent) - vPoint.y - vHeight;
|
||||||
|
|
||||||
//
|
//
|
||||||
// We may be faking the client origin. So a window that's really at (0,
|
// We may be faking the client origin. So a window that's really at (0,
|
||||||
// 30) may appear (to wxWin apps) to be at (0, 0).
|
// 30) may appear (to wxWin apps) to be at (0, 0).
|
||||||
@@ -1451,18 +1467,12 @@ void wxWindowOS2::DoMoveWindow(
|
|||||||
, int nHeight
|
, int nHeight
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
// Input parameters assume wxWidgets coordinate system
|
||||||
|
//
|
||||||
RECTL vRect;
|
RECTL vRect;
|
||||||
wxWindow* pParent = GetParent();
|
wxWindow* pParent = GetParent();
|
||||||
|
HWND hWnd = GetHwnd();
|
||||||
/* Due to OS/2's inverted coordinate system, changing the height
|
|
||||||
of a window requires repositioning all it's children, e.g. if
|
|
||||||
you want a child of height 100 to be at the top left corner of
|
|
||||||
the parent you need to position the lower left corner of the
|
|
||||||
child at (0, (height of parent - 100)), so, obviously, if the
|
|
||||||
height of the parent changes, the child needs to be repositioned. */
|
|
||||||
int nHeightDelta;
|
|
||||||
GetSize(0, &nHeightDelta);
|
|
||||||
nHeightDelta = nHeight - nHeightDelta;
|
|
||||||
|
|
||||||
if (pParent && !IsKindOf(CLASSINFO(wxDialog)))
|
if (pParent && !IsKindOf(CLASSINFO(wxDialog)))
|
||||||
{
|
{
|
||||||
@@ -1492,64 +1502,26 @@ void wxWindowOS2::DoMoveWindow(
|
|||||||
if (IsKindOf(CLASSINFO(wxFrame)))
|
if (IsKindOf(CLASSINFO(wxFrame)))
|
||||||
{
|
{
|
||||||
RECTL vFRect;
|
RECTL vFRect;
|
||||||
HWND hWndFrame;
|
|
||||||
int nWidthFrameDelta = 0;
|
int nWidthFrameDelta = 0;
|
||||||
int nHeightFrameDelta = 0;
|
int nHeightFrameDelta = 0;
|
||||||
int nHeightFrame = 0;
|
|
||||||
int nWidthFrame = 0;
|
|
||||||
wxFrame* pFrame;
|
wxFrame* pFrame;
|
||||||
|
|
||||||
pFrame = wxDynamicCast(this, wxFrame);
|
pFrame = wxDynamicCast(this, wxFrame);
|
||||||
hWndFrame = pFrame->GetFrame();
|
hWnd = pFrame->GetFrame();
|
||||||
::WinQueryWindowRect(hWndFrame, &vRect);
|
::WinQueryWindowRect(hWnd, &vRect);
|
||||||
::WinMapWindowPoints(hWndFrame, HWND_DESKTOP, (PPOINTL)&vRect, 2);
|
::WinMapWindowPoints(hWnd, HWND_DESKTOP, (PPOINTL)&vRect, 2);
|
||||||
vFRect = vRect;
|
vFRect = vRect;
|
||||||
::WinCalcFrameRect(hWndFrame, &vRect, TRUE);
|
::WinCalcFrameRect(hWnd, &vRect, TRUE);
|
||||||
nWidthFrameDelta = ((vRect.xLeft - vFRect.xLeft) + (vFRect.xRight - vRect.xRight));
|
nWidthFrameDelta = ((vRect.xLeft - vFRect.xLeft) + (vFRect.xRight - vRect.xRight));
|
||||||
nHeightFrameDelta = ((vRect.yBottom - vFRect.yBottom) + (vFRect.yTop - vRect.yTop));
|
nHeightFrameDelta = ((vRect.yBottom - vFRect.yBottom) + (vFRect.yTop - vRect.yTop));
|
||||||
nWidthFrame = vFRect.xRight - vFRect.xLeft;
|
// Input values refer to the window position relative to its parent
|
||||||
nHeightFrame = vFRect.yTop - vFRect.yBottom;
|
// which may be the Desktop so we need to calculate
|
||||||
|
// the new frame values to keep the wxWidgets frame origin constant
|
||||||
if (nWidth == vFRect.xRight - vFRect.xLeft &&
|
nY -= nHeightFrameDelta;
|
||||||
nHeight == vFRect.yTop - vFRect.yBottom)
|
nWidth += nWidthFrameDelta;
|
||||||
{
|
nHeight += nHeightFrameDelta;
|
||||||
//
|
|
||||||
// In this case the caller is not aware of OS/2's need to size both
|
|
||||||
// the frame and it's client and is really only moving the window,
|
|
||||||
// not resizeing it. So move the frame, and back off the sizes
|
|
||||||
// for a proper client fit.
|
|
||||||
//
|
|
||||||
::WinSetWindowPos( hWndFrame
|
|
||||||
,HWND_TOP
|
|
||||||
,(LONG)nX - (vRect.xLeft - vFRect.xLeft)
|
|
||||||
,(LONG)nY - (vRect.yBottom - vFRect.yBottom)
|
|
||||||
,(LONG)0
|
|
||||||
,(LONG)0
|
|
||||||
,SWP_MOVE
|
|
||||||
);
|
|
||||||
nX += (vRect.xLeft - vFRect.xLeft);
|
|
||||||
nY += (vRect.yBottom - vFRect.yBottom);
|
|
||||||
nWidth -= nWidthFrameDelta;
|
|
||||||
nHeight -= nHeightFrameDelta;
|
|
||||||
}
|
}
|
||||||
else
|
::WinSetWindowPos( hWnd
|
||||||
{
|
|
||||||
if (nWidth > nWidthFrame - nHeightFrameDelta ||
|
|
||||||
nHeight > nHeightFrame - nHeightFrameDelta)
|
|
||||||
{
|
|
||||||
::WinSetWindowPos( hWndFrame
|
|
||||||
,HWND_TOP
|
|
||||||
,(LONG)nX - (vRect.xLeft - vFRect.xLeft)
|
|
||||||
,(LONG)nY - (vRect.yBottom - vFRect.yBottom)
|
|
||||||
,(LONG)nWidth + nWidthFrameDelta
|
|
||||||
,(LONG)nHeight + nHeightFrameDelta
|
|
||||||
,SWP_MOVE | SWP_SIZE
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
::WinSetWindowPos( GetHwnd()
|
|
||||||
,HWND_TOP
|
,HWND_TOP
|
||||||
,(LONG)nX
|
,(LONG)nX
|
||||||
,(LONG)nY
|
,(LONG)nY
|
||||||
@@ -1561,11 +1533,9 @@ void wxWindowOS2::DoMoveWindow(
|
|||||||
//
|
//
|
||||||
// Uninitialized
|
// Uninitialized
|
||||||
//
|
//
|
||||||
::WinQueryWindowPos(GetHwnd(), &m_vWinSwp);
|
::WinQueryWindowPos(hWnd, &m_vWinSwp);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int nYDiff = m_vWinSwp.cy - nHeight;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Handle resizing of scrolled windows. The target or window to
|
// Handle resizing of scrolled windows. The target or window to
|
||||||
// be scrolled is the owner (gets the scroll notifications). The
|
// be scrolled is the owner (gets the scroll notifications). The
|
||||||
@@ -1600,8 +1570,8 @@ void wxWindowOS2::DoMoveWindow(
|
|||||||
nAdjustWidth = 0L;
|
nAdjustWidth = 0L;
|
||||||
else
|
else
|
||||||
nAdjustWidth = nVSBWidth;
|
nAdjustWidth = nVSBWidth;
|
||||||
::WinQueryWindowPos(GetHwnd(), &vSwpScroll);
|
::WinQueryWindowPos(hWnd, &vSwpScroll);
|
||||||
::WinSetWindowPos( GetHwnd()
|
::WinSetWindowPos( hWnd
|
||||||
,HWND_TOP
|
,HWND_TOP
|
||||||
,vSwpScroll.x
|
,vSwpScroll.x
|
||||||
,vSwpScroll.y + nAdjustHeight
|
,vSwpScroll.y + nAdjustHeight
|
||||||
@@ -1609,19 +1579,9 @@ void wxWindowOS2::DoMoveWindow(
|
|||||||
,vSwpScroll.cy - nAdjustHeight
|
,vSwpScroll.cy - nAdjustHeight
|
||||||
,SWP_MOVE | SWP_SIZE
|
,SWP_MOVE | SWP_SIZE
|
||||||
);
|
);
|
||||||
nYDiff -= nAdjustHeight;
|
|
||||||
}
|
}
|
||||||
MoveChildren(nYDiff);
|
::WinQueryWindowPos(hWnd, &m_vWinSwp);
|
||||||
::WinQueryWindowPos(GetHwnd(), &m_vWinSwp);
|
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
// FIXME: By my logic, the next line should be needed as it moves child
|
|
||||||
// windows when resizing the parent (see comment at beginning of
|
|
||||||
// function). However, this seems to cause lots of problems. At
|
|
||||||
// least, e.g. the grid sample almost works with this line
|
|
||||||
// commented out but crashes badly with it.
|
|
||||||
MoveChildren(nHeightDelta);
|
|
||||||
#endif
|
|
||||||
} // end of wxWindowOS2::DoMoveWindow
|
} // end of wxWindowOS2::DoMoveWindow
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -1640,6 +1600,10 @@ void wxWindowOS2::DoSetSize( int nX,
|
|||||||
int nHeight,
|
int nHeight,
|
||||||
int nSizeFlags )
|
int nSizeFlags )
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
// Input & output parameters assume wxWidgets coordinate system
|
||||||
|
//
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get the current size and position...
|
// Get the current size and position...
|
||||||
//
|
//
|
||||||
@@ -1655,12 +1619,7 @@ void wxWindowOS2::DoSetSize( int nX,
|
|||||||
//
|
//
|
||||||
// ... and don't do anything (avoiding flicker) if it's already ok
|
// ... and don't do anything (avoiding flicker) if it's already ok
|
||||||
//
|
//
|
||||||
//
|
if (nX == nCurrentX && nY == nCurrentY &&
|
||||||
// Must convert Y coords to test for equality under OS/2
|
|
||||||
//
|
|
||||||
int nY2 = nY;
|
|
||||||
|
|
||||||
if (nX == nCurrentX && nY2 == nCurrentY &&
|
|
||||||
nWidth == nCurrentWidth && nHeight == nCurrentHeight)
|
nWidth == nCurrentWidth && nHeight == nCurrentHeight)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -1712,50 +1671,15 @@ void wxWindowOS2::DoSetSize( int nX,
|
|||||||
void wxWindowOS2::DoSetClientSize( int nWidth,
|
void wxWindowOS2::DoSetClientSize( int nWidth,
|
||||||
int nHeight )
|
int nHeight )
|
||||||
{
|
{
|
||||||
POINTL vPoint;
|
//
|
||||||
int nActualWidth;
|
// nX & nY assume wxWidgets coordinate system
|
||||||
int nActualHeight;
|
//
|
||||||
wxWindow* pParent = (wxWindow*)GetParent();
|
|
||||||
HWND hParentWnd = (HWND)0;
|
|
||||||
|
|
||||||
if (pParent)
|
|
||||||
hParentWnd = (HWND)pParent->GetHWND();
|
|
||||||
|
|
||||||
if (IsKindOf(CLASSINFO(wxFrame)))
|
|
||||||
{
|
|
||||||
wxFrame* pFrame = wxDynamicCast(this, wxFrame);
|
|
||||||
HWND hFrame = pFrame->GetFrame();
|
|
||||||
RECTL vRect;
|
|
||||||
RECTL vRect2;
|
|
||||||
RECTL vRect3;
|
|
||||||
|
|
||||||
::WinQueryWindowRect(GetHwnd(), &vRect2);
|
|
||||||
::WinQueryWindowRect(hFrame, &vRect);
|
|
||||||
::WinQueryWindowRect(hParentWnd, &vRect3);
|
|
||||||
nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight + nWidth;
|
|
||||||
nActualHeight = vRect2.yTop - vRect2.yBottom - vRect.yTop + nHeight;
|
|
||||||
|
|
||||||
vPoint.x = vRect2.xLeft;
|
|
||||||
vPoint.y = vRect2.yBottom;
|
|
||||||
if (pParent)
|
|
||||||
{
|
|
||||||
vPoint.x -= vRect3.xLeft;
|
|
||||||
vPoint.y -= vRect3.yBottom;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int nX;
|
int nX;
|
||||||
int nY;
|
int nY;
|
||||||
|
|
||||||
GetPosition(&nX, &nY);
|
GetPosition(&nX, &nY);
|
||||||
nActualWidth = nWidth;
|
|
||||||
nActualHeight = nHeight;
|
|
||||||
|
|
||||||
vPoint.x = nX;
|
DoMoveWindow( nX, nY, nWidth, nHeight );
|
||||||
vPoint.y = nY;
|
|
||||||
}
|
|
||||||
DoMoveWindow( vPoint.x, vPoint.y, nActualWidth, nActualHeight );
|
|
||||||
|
|
||||||
wxSize size( nWidth, nHeight );
|
wxSize size( nWidth, nHeight );
|
||||||
wxSizeEvent vEvent( size, m_windowId );
|
wxSizeEvent vEvent( size, m_windowId );
|
||||||
@@ -2984,16 +2908,16 @@ void wxAssociateWinWithHandle(
|
|||||||
wxCHECK_RET( hWnd != (HWND)NULL,
|
wxCHECK_RET( hWnd != (HWND)NULL,
|
||||||
wxT("attempt to add a NULL hWnd to window list ignored") );
|
wxT("attempt to add a NULL hWnd to window list ignored") );
|
||||||
|
|
||||||
|
|
||||||
wxWindow* pOldWin = wxFindWinFromHandle((WXHWND) hWnd);
|
wxWindow* pOldWin = wxFindWinFromHandle((WXHWND) hWnd);
|
||||||
|
|
||||||
if (pOldWin && (pOldWin != pWin))
|
if (pOldWin && (pOldWin != pWin))
|
||||||
{
|
{
|
||||||
wxString str(pWin->GetClassInfo()->GetClassName());
|
wxString Newstr(pWin->GetClassInfo()->GetClassName());
|
||||||
|
wxString Oldstr(pOldWin->GetClassInfo()->GetClassName());
|
||||||
wxLogError( _T("Bug! Found existing HWND %X for new window of class %s")
|
wxLogError( _T("Bug! New window of class %s has same HWND %X as old window of class %s"),
|
||||||
,(int)hWnd
|
Newstr.c_str(),
|
||||||
,str.c_str()
|
(int)hWnd,
|
||||||
|
Oldstr.c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if (!pOldWin)
|
else if (!pOldWin)
|
||||||
@@ -3144,7 +3068,7 @@ bool wxWindowOS2::OS2Create( PSZ zClass,
|
|||||||
,nHeight
|
,nHeight
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
} // end of WinGuiBase_Window::OS2Create
|
} // end of wxWindowOS2::OS2Create
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
// OS2 PM message handlers
|
// OS2 PM message handlers
|
||||||
@@ -4301,88 +4225,9 @@ bool wxWindowOS2::OS2OnScroll( int nOrientation,
|
|||||||
return GetEventHandler()->ProcessEvent(vEvent);
|
return GetEventHandler()->ProcessEvent(vEvent);
|
||||||
} // end of wxWindowOS2::OS2OnScroll
|
} // end of wxWindowOS2::OS2OnScroll
|
||||||
|
|
||||||
void wxWindowOS2::MoveChildren(
|
|
||||||
int nDiff
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// We want to handle top levels ourself, manually
|
|
||||||
//
|
|
||||||
if (!IsTopLevel() && GetAutoLayout())
|
|
||||||
{
|
|
||||||
Layout();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SWP vSwp;
|
|
||||||
|
|
||||||
for (wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
|
|
||||||
node;
|
|
||||||
node = node->GetNext())
|
|
||||||
{
|
|
||||||
wxWindow* pWin = node->GetData();
|
|
||||||
|
|
||||||
::WinQueryWindowPos( GetHwndOf(pWin)
|
|
||||||
,&vSwp
|
|
||||||
);
|
|
||||||
// Actually, only move children that already are placed on the
|
|
||||||
// frame, not ones which are still at wxDefaultCoord.
|
|
||||||
if (vSwp.y == wxDefaultCoord)
|
|
||||||
continue;
|
|
||||||
if (pWin->IsKindOf(CLASSINFO(wxControl)))
|
|
||||||
{
|
|
||||||
wxControl* pCtrl;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Must deal with controls that have margins like ENTRYFIELD. The SWP
|
|
||||||
// struct of such a control will have and origin offset from its intended
|
|
||||||
// position by the width of the margins.
|
|
||||||
//
|
|
||||||
pCtrl = wxDynamicCast(pWin, wxControl);
|
|
||||||
vSwp.y -= pCtrl->GetYComp();
|
|
||||||
vSwp.x -= pCtrl->GetXComp();
|
|
||||||
}
|
|
||||||
::WinSetWindowPos( GetHwndOf(pWin)
|
|
||||||
,HWND_TOP
|
|
||||||
,vSwp.x
|
|
||||||
,vSwp.y - nDiff
|
|
||||||
,vSwp.cx
|
|
||||||
,vSwp.cy
|
|
||||||
,SWP_MOVE
|
|
||||||
);
|
|
||||||
::WinQueryWindowPos(GetHwndOf(pWin), pWin->GetSwp());
|
|
||||||
if (pWin->IsKindOf(CLASSINFO(wxRadioBox)))
|
|
||||||
{
|
|
||||||
wxRadioBox* pRadioBox;
|
|
||||||
|
|
||||||
pRadioBox = wxDynamicCast(pWin, wxRadioBox);
|
|
||||||
pRadioBox->AdjustButtons( (int)vSwp.x
|
|
||||||
,(int)vSwp.y - nDiff
|
|
||||||
,(int)vSwp.cx
|
|
||||||
,(int)vSwp.cy
|
|
||||||
,pRadioBox->GetSizeFlags()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (pWin->IsKindOf(CLASSINFO(wxSlider)))
|
|
||||||
{
|
|
||||||
wxSlider* pSlider;
|
|
||||||
|
|
||||||
pSlider = wxDynamicCast(pWin, wxSlider);
|
|
||||||
pSlider->AdjustSubControls( (int)vSwp.x
|
|
||||||
,(int)vSwp.y - nDiff
|
|
||||||
,(int)vSwp.cx
|
|
||||||
,(int)vSwp.cy
|
|
||||||
,(int)pSlider->GetSizeFlags()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Refresh();
|
|
||||||
} // end of wxWindowOS2::MoveChildren
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Getting the Y position for a window, like a control, is a real
|
// Getting the Y position for a window, like a control, is a real
|
||||||
// pain. There are three sitatuions we must deal with in determining
|
// pain. There are three situations we must deal with in determining
|
||||||
// the OS2 to wxWidgets Y coordinate.
|
// the OS2 to wxWidgets Y coordinate.
|
||||||
//
|
//
|
||||||
// 1) The controls are created in a dialog.
|
// 1) The controls are created in a dialog.
|
||||||
@@ -4413,6 +4258,8 @@ void wxWindowOS2::MoveChildren(
|
|||||||
//
|
//
|
||||||
int wxWindowOS2::GetOS2ParentHeight( wxWindowOS2* pParent )
|
int wxWindowOS2::GetOS2ParentHeight( wxWindowOS2* pParent )
|
||||||
{
|
{
|
||||||
|
if (pParent)
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Case 1
|
// Case 1
|
||||||
//
|
//
|
||||||
@@ -4453,12 +4300,15 @@ int wxWindowOS2::GetOS2ParentHeight( wxWindowOS2* pParent )
|
|||||||
// and it's height must be different. Otherwise the standard
|
// and it's height must be different. Otherwise the standard
|
||||||
// applies.
|
// applies.
|
||||||
//
|
//
|
||||||
// else
|
else
|
||||||
// {
|
|
||||||
|
|
||||||
return(pParent->GetClientSize().y);
|
return(pParent->GetClientSize().y);
|
||||||
|
}
|
||||||
// }
|
else // We must be a child of the screen
|
||||||
|
{
|
||||||
|
int nHeight;
|
||||||
|
wxDisplaySize(NULL,&nHeight);
|
||||||
|
return(nHeight);
|
||||||
|
}
|
||||||
} // end of wxWindowOS2::GetOS2ParentHeight
|
} // end of wxWindowOS2::GetOS2ParentHeight
|
||||||
|
|
||||||
//
|
//
|
||||||
|
Reference in New Issue
Block a user