Lots of OS/2 updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
94640e0414
commit
b720b24da8
@ -43,6 +43,7 @@ MRESULT EXPENTRY wxGaugeWndProc(
|
||||
HPS hPS;
|
||||
RECTL vRect;
|
||||
RECTL vRect2;
|
||||
RECTL vRect3;
|
||||
double dPixelToRange = 0.0;
|
||||
double dRange = 0.0;
|
||||
|
||||
@ -70,28 +71,55 @@ MRESULT EXPENTRY wxGaugeWndProc(
|
||||
,0L
|
||||
,NULL
|
||||
);
|
||||
//
|
||||
// Draw the guage box
|
||||
//
|
||||
LONG lColor = 0x00FFFFFF; // White
|
||||
POINTL vPoint = {vRect.xLeft + 1, vRect.yBottom + 1};
|
||||
|
||||
::GpiSetColor(hPS, lColor);
|
||||
::GpiMove(hPS, &vPoint);
|
||||
vPoint.x = vRect.xRight - 1;
|
||||
::GpiLine(hPS, &vPoint);
|
||||
vPoint.y = vRect.yTop - 1;
|
||||
::GpiLine(hPS, &vPoint);
|
||||
lColor = 0x000C0C0C; // Darkish Grey to give depth feel
|
||||
::GpiSetColor(hPS, lColor);
|
||||
vPoint.x = vRect.xLeft + 1;
|
||||
::GpiLine(hPS, &vPoint);
|
||||
vPoint.y = vRect.yBottom + 1;
|
||||
::GpiLine(hPS, &vPoint);
|
||||
vRect3.xLeft = vRect.xLeft + 2;
|
||||
vRect3.xRight = vRect.xRight - 2;
|
||||
vRect3.yTop = vRect.yTop - 2;
|
||||
vRect3.yBottom = vRect.yBottom + 2;
|
||||
|
||||
if (pGauge->GetWindowStyleFlag() & wxGA_VERTICAL)
|
||||
{
|
||||
dRange = (double)(vRect.yTop - vRect.yBottom);
|
||||
dRange = (double)(vRect3.yTop - vRect3.yBottom);
|
||||
dPixelToRange = dRange/(double)pGauge->GetRange();
|
||||
vRect2.yTop = (int)(pGauge->GetValue() * dPixelToRange);
|
||||
vRect2.yBottom = vRect.yBottom;
|
||||
vRect2.xLeft = vRect.xLeft;
|
||||
vRect2.xRight = vRect.xRight;
|
||||
vRect.yBottom = vRect2.yTop;
|
||||
::WinFillRect(hPS, &vRect, pGauge->GetBackgroundColour().GetPixel());
|
||||
vRect2.yBottom = vRect3.yBottom;
|
||||
vRect2.xLeft = vRect3.xLeft;
|
||||
vRect2.xRight = vRect3.xRight;
|
||||
vRect3.yBottom = vRect2.yTop;
|
||||
if (vRect3.yBottom <= 1)
|
||||
vRect3.yBottom = 2;
|
||||
::WinFillRect(hPS, &vRect3, pGauge->GetBackgroundColour().GetPixel());
|
||||
::WinFillRect(hPS, &vRect2, pGauge->GetForegroundColour().GetPixel());
|
||||
}
|
||||
else
|
||||
{
|
||||
dRange = (double)(vRect.xRight - vRect.xLeft);
|
||||
dRange = (double)(vRect3.xRight - vRect3.xLeft);
|
||||
dPixelToRange = dRange/(double)pGauge->GetRange();
|
||||
vRect2.yTop = vRect.yTop;
|
||||
vRect2.yBottom = vRect.yBottom;
|
||||
vRect2.xLeft = vRect.xLeft;
|
||||
vRect2.yTop = vRect3.yTop;
|
||||
vRect2.yBottom = vRect3.yBottom;
|
||||
vRect2.xLeft = vRect3.xLeft;
|
||||
vRect2.xRight = (int)(pGauge->GetValue() * dPixelToRange);
|
||||
vRect.xLeft = vRect2.xRight;
|
||||
::WinFillRect(hPS, &vRect, pGauge->GetBackgroundColour().GetPixel());
|
||||
vRect3.xLeft = vRect2.xRight;
|
||||
if (vRect3.xLeft <= 1)
|
||||
vRect3.xLeft = 2;
|
||||
::WinFillRect(hPS, &vRect3, pGauge->GetBackgroundColour().GetPixel());
|
||||
::WinFillRect(hPS, &vRect2, pGauge->GetForegroundColour().GetPixel());
|
||||
}
|
||||
::WinEndPaint(hPS);
|
||||
@ -131,8 +159,8 @@ bool wxGauge::Create(
|
||||
#endif
|
||||
if (pParent)
|
||||
pParent->AddChild(this);
|
||||
SetBackgroundColour(pParent->GetBackgroundColour()) ;
|
||||
SetForegroundColour(pParent->GetForegroundColour()) ;
|
||||
m_backgroundColour.Set(wxString("LIGHT GREY"));
|
||||
m_foregroundColour.Set(wxString("NAVY"));
|
||||
|
||||
m_nRangeMax = nRange;
|
||||
m_nGaugePos = 0;
|
||||
|
@ -84,18 +84,12 @@ bool wxStaticBox::Create(
|
||||
,sizeof(LONG)
|
||||
,(PVOID)&lColor
|
||||
);
|
||||
wxFont* pTextFont = new wxFont( 10
|
||||
,wxMODERN
|
||||
,wxNORMAL
|
||||
,wxNORMAL
|
||||
);
|
||||
SetFont(*pTextFont);
|
||||
SetFont(*wxSMALL_FONT);
|
||||
SetSize( rPos.x
|
||||
,rPos.y
|
||||
,rSize.x
|
||||
,rSize.y
|
||||
);
|
||||
delete pTextFont;
|
||||
return TRUE;
|
||||
} // end of wxStaticBox::Create
|
||||
|
||||
|
@ -101,18 +101,14 @@ bool wxStaticText::Create(
|
||||
);
|
||||
|
||||
SubclassWin(m_hWnd);
|
||||
wxFont* pTextFont = new wxFont( 10
|
||||
,wxMODERN
|
||||
,wxNORMAL
|
||||
,wxNORMAL
|
||||
);
|
||||
wxControl::SetFont(*pTextFont);
|
||||
SetFont(*wxSMALL_FONT);
|
||||
SetXComp(0);
|
||||
SetYComp(0);
|
||||
SetSize( nX
|
||||
,nY
|
||||
,nWidth
|
||||
,nHeight
|
||||
);
|
||||
delete pTextFont;
|
||||
return TRUE;
|
||||
} // end of wxStaticText::Create
|
||||
|
||||
@ -223,9 +219,18 @@ void wxStaticText::SetLabel(
|
||||
//
|
||||
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(
|
||||
|
@ -1753,19 +1753,6 @@ void wxWindowOS2::DoSetSize(
|
||||
int nY2 = nY;
|
||||
wxWindow* pParent = (wxWindow*)GetParent();
|
||||
|
||||
if (pParent && !IsKindOf(CLASSINFO(wxDialog)))
|
||||
{
|
||||
int nOS2Height = GetOS2ParentHeight(pParent);
|
||||
|
||||
nY2 = nOS2Height - (nY2 + nHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
RECTL vRect;
|
||||
|
||||
::WinQueryWindowRect(HWND_DESKTOP, &vRect);
|
||||
nY2 = vRect.yTop - (nY2 + nHeight);
|
||||
}
|
||||
if (nX == nCurrentX && nY2 == nCurrentY &&
|
||||
nWidth == nCurrentWidth && nHeight == nCurrentHeight)
|
||||
{
|
||||
@ -1824,34 +1811,61 @@ void wxWindowOS2::DoSetClientSize(
|
||||
, int nHeight
|
||||
)
|
||||
{
|
||||
wxWindow* pParent = GetParent();
|
||||
HWND hWnd = GetHwnd();
|
||||
HWND hParentWnd = (HWND)0;
|
||||
POINTL vPoint;
|
||||
RECTL vRect;
|
||||
RECTL vRect2;
|
||||
RECTL vRect3;
|
||||
HWND hClientWnd = (HWND)0;
|
||||
int nActualWidth;
|
||||
int nActualHeight;
|
||||
wxWindow* pParent = (wxWindow*)GetParent();
|
||||
HWND hParentWnd = (HWND)0;
|
||||
|
||||
hClientWnd = ::WinWindowFromID(hWnd, FID_CLIENT);
|
||||
::WinQueryWindowRect(hClientWnd, &vRect2);
|
||||
::WinQueryWindowRect(hWnd, &vRect);
|
||||
::WinQueryWindowRect(hParentWnd, &vRect3);
|
||||
|
||||
int nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight + nWidth;
|
||||
int nActualHeight = vRect2.yTop - vRect2.yBottom - vRect.yTop + nHeight;
|
||||
|
||||
vPoint.x = vRect2.xLeft;
|
||||
vPoint.y = vRect2.yBottom;
|
||||
if (pParent)
|
||||
hParentWnd = (HWND)pParent->GetHWND();
|
||||
|
||||
if (IsKindOf(CLASSINFO(wxFrame)))
|
||||
{
|
||||
vPoint.x -= vRect3.xLeft;
|
||||
vPoint.y -= vRect3.yBottom;
|
||||
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 nY;
|
||||
|
||||
DoMoveWindow(vPoint.x, vPoint.y, nActualWidth, nActualHeight);
|
||||
GetPosition(&nX, &nY);
|
||||
nActualWidth = nWidth;
|
||||
nActualHeight = nHeight;
|
||||
|
||||
vPoint.x = nX;
|
||||
vPoint.y = nY;
|
||||
}
|
||||
DoMoveWindow( vPoint.x
|
||||
,vPoint.y
|
||||
,nActualWidth
|
||||
,nActualHeight
|
||||
);
|
||||
|
||||
wxSizeEvent vEvent( wxSize( nWidth
|
||||
,nHeight
|
||||
)
|
||||
,m_windowId
|
||||
);
|
||||
|
||||
wxSizeEvent vEvent(wxSize(nWidth, nHeight), m_windowId);
|
||||
vEvent.SetEventObject(this);
|
||||
GetEventHandler()->ProcessEvent(vEvent);
|
||||
} // end of wxWindowOS2::DoSetClientSize
|
||||
@ -5148,50 +5162,99 @@ wxWindowOS2* FindWindowForMouseEvent(
|
||||
, short* pnY
|
||||
)
|
||||
{
|
||||
wxCHECK_MSG( pnX && pnY, pWin, _T("NULL pointer in FindWindowForMouseEvent") );
|
||||
POINTL vPoint = { *pnX, *pnY };
|
||||
HWND hWnd = GetHwndOf(pWin);
|
||||
HWND hWndUnderMouse;
|
||||
POINTL vPoint;
|
||||
BOOL rcEnabled = FALSE;
|
||||
BOOL rcVisible = FALSE;
|
||||
HWND hWndDesktop = HWND_DESKTOP;
|
||||
|
||||
//
|
||||
// First try to find a non transparent child: this allows us to send events
|
||||
// to a static text which is inside a static box, for example
|
||||
//
|
||||
|
||||
hWndUnderMouse = ::WinWindowFromPoint( hWnd
|
||||
,&vPoint
|
||||
,TRUE
|
||||
);
|
||||
if (!hWndUnderMouse || hWndUnderMouse == hWnd)
|
||||
::WinQueryPointerPos(HWND_DESKTOP, &vPoint);
|
||||
hWndUnderMouse = ::WinWindowFromPoint(HWND_DESKTOP, &vPoint, TRUE);
|
||||
if (hWndUnderMouse != HWND_DESKTOP)
|
||||
{
|
||||
//
|
||||
// Now try any child window at all
|
||||
//
|
||||
hWndUnderMouse = ::WinWindowFromPoint( HWND_DESKTOP
|
||||
,&vPoint
|
||||
,TRUE
|
||||
);
|
||||
wxWindow* pWinUnderMouse = wxFindWinFromHandle((WXHWND)hWndUnderMouse);
|
||||
|
||||
if (pWinUnderMouse)
|
||||
{
|
||||
wxWindowList::Node* pCurrent = pWinUnderMouse->GetChildren().GetFirst();
|
||||
wxWindow* pChild = NULL;
|
||||
wxWindow* pGrandChild = NULL;
|
||||
RECTL vRect;
|
||||
POINTL vPoint2;
|
||||
|
||||
::WinMapWindowPoints(HWND_DESKTOP, hWndUnderMouse, &vPoint, 1);
|
||||
//
|
||||
// Find a child window mouse might be under
|
||||
//
|
||||
while (pCurrent)
|
||||
{
|
||||
wxWindow* pChild = pCurrent->GetData();
|
||||
|
||||
vPoint2.x = vPoint.x;
|
||||
vPoint2.y = vPoint.y;
|
||||
::WinMapWindowPoints(hWndUnderMouse, pChild->GetHWND(), &vPoint2, 1);
|
||||
::WinQueryWindowRect(pChild->GetHWND(), &vRect);
|
||||
if (::WinPtInRect(vHabmain, &vRect, &vPoint2))
|
||||
{
|
||||
if (pChild->IsTopLevel())
|
||||
{
|
||||
POINTL vPoint3;
|
||||
wxWindowList::Node* pCurrent2 =pChild->GetChildren().GetFirst();
|
||||
|
||||
while (pCurrent2)
|
||||
{
|
||||
wxWindow* pGrandChild = pCurrent2->GetData();
|
||||
|
||||
vPoint3.x = vPoint2.x;
|
||||
vPoint3.y = vPoint2.y;
|
||||
::WinMapWindowPoints( pChild->GetHWND()
|
||||
,pGrandChild->GetHWND()
|
||||
,&vPoint3
|
||||
,1
|
||||
);
|
||||
::WinQueryWindowRect(pGrandChild->GetHWND(), &vRect);
|
||||
if (::WinPtInRect(vHabmain, &vRect, &vPoint3))
|
||||
{
|
||||
hWndUnderMouse = GetHwndOf(pGrandChild);
|
||||
pWinUnderMouse = pGrandChild;
|
||||
break;
|
||||
}
|
||||
pCurrent2 = pCurrent2->GetNext();
|
||||
}
|
||||
if (pGrandChild)
|
||||
break;
|
||||
}
|
||||
hWndUnderMouse = GetHwndOf(pChild);
|
||||
pWinUnderMouse = pChild;
|
||||
rcVisible = ::WinIsWindowVisible(hWndUnderMouse);
|
||||
rcEnabled = ::WinIsWindowEnabled(hWndUnderMouse);
|
||||
if (rcVisible && rcEnabled)
|
||||
break;
|
||||
}
|
||||
pCurrent = pCurrent->GetNext();
|
||||
}
|
||||
}
|
||||
}
|
||||
rcVisible = ::WinIsWindowVisible(hWndUnderMouse);
|
||||
rcEnabled = ::WinIsWindowEnabled(hWndUnderMouse);
|
||||
|
||||
|
||||
//
|
||||
// Check that we have a child window which is susceptible to receive mouse
|
||||
// events: for this it must be shown and enabled
|
||||
//
|
||||
if ( hWndUnderMouse &&
|
||||
hWndUnderMouse != hWnd &&
|
||||
::WinIsWindowVisible(hWndUnderMouse) &&
|
||||
::WinIsWindowEnabled(hWndUnderMouse))
|
||||
rcVisible && rcEnabled)
|
||||
{
|
||||
wxWindow* pWinUnderMouse = wxFindWinFromHandle((WXHWND)hWndUnderMouse);
|
||||
wxWindow* pWinUnderMouse = wxFindWinFromHandle((WXHWND)hWndUnderMouse);
|
||||
|
||||
if (pWinUnderMouse)
|
||||
{
|
||||
// translate the mouse coords to the other window coords
|
||||
pWin->ClientToScreen( (int*)pnX
|
||||
,(int*)pnY
|
||||
);
|
||||
pWinUnderMouse->ScreenToClient( (int*)pnX
|
||||
,(int*)pnY
|
||||
);
|
||||
//
|
||||
// Translate the mouse coords to the other window coords
|
||||
//
|
||||
pWin = pWinUnderMouse;
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL
|
||||
CODE LOADONCALL
|
||||
|
||||
EXPORTS
|
||||
;From library: F:\Dev\Wx2\WxWindows\LIB\wx.lib
|
||||
;From library: H:\DEV\WX2\WXWINDOWS\LIB\wx.lib
|
||||
;From object file: dummy.cpp
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
wxDummyChar
|
||||
@ -1955,7 +1955,7 @@ EXPORTS
|
||||
wxEVT_NC_LEFT_DCLICK
|
||||
wxEVT_INIT_DIALOG
|
||||
wxEVT_COMMAND_SET_FOCUS
|
||||
;From object file: F:\DEV\WX2\WXWINDOWS\src\common\extended.c
|
||||
;From object file: H:\DEV\WX2\WXWINDOWS\src\common\extended.c
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
ConvertToIeeeExtended
|
||||
ConvertFromIeeeExtended
|
||||
@ -4337,10 +4337,13 @@ EXPORTS
|
||||
Get__15wxMessageOutputFv
|
||||
;wxMessageOutput::ms_msgOut
|
||||
ms_msgOut__15wxMessageOutput
|
||||
;wxMessageOutputLog::Printf(const char*,...)
|
||||
Printf__18wxMessageOutputLogFPCce
|
||||
;wxMessageOutput::Set(wxMessageOutput*)
|
||||
Set__15wxMessageOutputFP15wxMessageOutput
|
||||
__vft25wxMessageOutputMessageBox15wxMessageOutput
|
||||
__vft21wxMessageOutputStderr15wxMessageOutput
|
||||
__vft18wxMessageOutputLog15wxMessageOutput
|
||||
;wxMessageOutputStderr::Printf(const char*,...)
|
||||
Printf__21wxMessageOutputStderrFPCce
|
||||
;From object file: ..\common\mstream.cpp
|
||||
@ -6175,7 +6178,7 @@ EXPORTS
|
||||
Read32__17wxTextInputStreamFv
|
||||
;wxTextInputStream::SkipIfEndOfLine(char)
|
||||
SkipIfEndOfLine__17wxTextInputStreamFc
|
||||
;From object file: F:\DEV\WX2\WXWINDOWS\src\common\unzip.c
|
||||
;From object file: H:\DEV\WX2\WXWINDOWS\src\common\unzip.c
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
unzReadCurrentFile
|
||||
unzGetCurrentFileInfo
|
||||
@ -9135,6 +9138,8 @@ EXPORTS
|
||||
SetItem__17wxGenericListCtrlFR10wxListItem
|
||||
;wxListLineData::SetItem(int,const wxListItem&)
|
||||
SetItem__14wxListLineDataFiRC10wxListItem
|
||||
;wxGenericListCtrl::SetImageList(wxGenericImageList*,int)
|
||||
SetImageList__17wxGenericListCtrlFP18wxGenericImageListi
|
||||
;wxGenericListCtrl::SetColumnWidth(int,int)
|
||||
SetColumnWidth__17wxGenericListCtrlFiT1
|
||||
;wxGenericListCtrl::ScrollList(int,int)
|
||||
@ -9227,8 +9232,8 @@ EXPORTS
|
||||
SetItem__16wxListHeaderDataFRC10wxListItem
|
||||
;wxListMainWindow::SetItemState(long,long,long)
|
||||
SetItemState__16wxListMainWindowFlN21
|
||||
;wxListMainWindow::SetImageList(wxImageList*,int)
|
||||
SetImageList__16wxListMainWindowFP11wxImageListi
|
||||
;wxListMainWindow::SetImageList(wxGenericImageList*,int)
|
||||
SetImageList__16wxListMainWindowFP18wxGenericImageListi
|
||||
;wxGenericListCtrl::SetColumn(int,wxListItem&)
|
||||
SetColumn__17wxGenericListCtrlFiR10wxListItem
|
||||
;wxListMainWindow::SetColumnWidth(int,int)
|
||||
@ -9257,8 +9262,6 @@ EXPORTS
|
||||
DeleteColumn__17wxGenericListCtrlFi
|
||||
;wxListMainWindow::CacheLineData(unsigned int)
|
||||
CacheLineData__16wxListMainWindowFUi
|
||||
;wxGenericListCtrl::AssignImageList(wxImageList*,int)
|
||||
AssignImageList__17wxGenericListCtrlFP11wxImageListi
|
||||
;wxGenericListCtrl::GetNextItem(long,int,int) const
|
||||
GetNextItem__17wxGenericListCtrlCFliT2
|
||||
;wxConstructorForwxListCtrl()
|
||||
@ -9380,6 +9383,8 @@ EXPORTS
|
||||
DrawImage__16wxListMainWindowFiP4wxDCN21
|
||||
;wxListMainWindow::ChangeCurrent(unsigned int)
|
||||
ChangeCurrent__16wxListMainWindowFUi
|
||||
;wxGenericListCtrl::AssignImageList(wxGenericImageList*,int)
|
||||
AssignImageList__17wxGenericListCtrlFP18wxGenericImageListi
|
||||
;wxGenericListCtrl::~wxGenericListCtrl()
|
||||
__dt__17wxGenericListCtrlFv
|
||||
wxEVT_COMMAND_LIST_KEY_DOWN
|
||||
@ -9594,8 +9599,6 @@ EXPORTS
|
||||
SetItem__16wxListMainWindowFR10wxListItem
|
||||
;wxListItemData::SetItem(const wxListItem&)
|
||||
SetItem__14wxListItemDataFRC10wxListItem
|
||||
;wxGenericListCtrl::SetImageList(wxImageList*,int)
|
||||
SetImageList__17wxGenericListCtrlFP11wxImageListi
|
||||
;wxListMainWindow::SetColumn(int,wxListItem&)
|
||||
SetColumn__16wxListMainWindowFiR10wxListItem
|
||||
;wxListLineDataArray::RemoveAt(unsigned int,unsigned int)
|
||||
|
Loading…
Reference in New Issue
Block a user