BEGIN_EVENT_TABLE(wxWindowOS2, wxWindowBase)
EVT_ERASE_BACKGROUND(wxWindowOS2::OnEraseBackground)
EVT_SYS_COLOUR_CHANGED(wxWindowOS2::OnSysColourChanged)
- EVT_INIT_DIALOG(wxWindowOS2::OnInitDialog)
EVT_IDLE(wxWindowOS2::OnIdle)
EVT_SET_FOCUS(wxWindowOS2::OnSetFocus)
END_EVENT_TABLE()
void wxWindowOS2::Init()
{
- //
- // Generic
- //
- InitBase();
-
//
// PM specific
//
m_bWinCaptured = FALSE;
- m_isBeingDeleted = FALSE;
m_fnOldWndProc = NULL;
m_bUseCtl3D = FALSE;
m_bMouseInWindow = FALSE;
if (pParent)
{
- int nTempy;
-
pParent->AddChild(this);
hParent = GetWinHwnd(pParent);
ULONG ulStyle = WS_VISIBLE | WS_SYNCPAINT;
SWP vSwp;
SWP vSwpOwner;
- RECTL vRect;
HWND hWndParent;
HWND hWndClient;
wxWindow* pParent = GetParent();
)
{
RECTL vRect;
- RECTL vRectHorz;
- RECTL vRectVert;
- RECTL vRectChild;
if (pRect)
{
} // end of wxWindowMSW::MSWGetStyle
//
-// Make a Windows extended style from the given wxWindows window style
+// Make a Windows extended style from the given wxWidgets window style
//
WXDWORD wxWindowOS2::MakeExtendedStyle(
long lStyle
//
int nState = 0;
- if (::WinGetKeyState(HWND_DESKTOP, VK_SHIFT) != 0)
- nState |= VK_SHIFT;
- if (::WinGetKeyState(HWND_DESKTOP, VK_CTRL) != 0);
- nState |= VK_CTRL;
+ if (IsShiftDown())
+ nState |= KC_SHIFT;
+ if (IsCtrlDown())
+ nState |= KC_CTRL;
wxMouseEvent rEvent(wxEVT_LEAVE_WINDOW);
RECTL vOs2Rect;
vOs2Rect.xLeft = pRect->x;
- vOs2Rect.yTop = pRect->y;
+ vOs2Rect.yBottom = pRect->y;
vOs2Rect.xRight = pRect->x + pRect->width;
- vOs2Rect.yBottom = pRect->y + pRect->height;
+ vOs2Rect.yTop = pRect->y + pRect->height;
::WinInvalidateRect(hWnd, &vOs2Rect, bEraseBack);
}
)
{
RECTL vRect;
- HWND hParent;
wxWindow* pParent = GetParent();
if (pParent && !IsKindOf(CLASSINFO(wxDialog)))
int nHeightFrameDelta = 0;
int nHeightFrame = 0;
int nWidthFrame = 0;
- ULONG ulFLag = SWP_MOVE;
wxFrame* pFrame;
pFrame = wxDynamicCast(this, wxFrame);
// Must convert Y coords to test for equality under OS/2
//
int nY2 = nY;
- wxWindow* pParent = (wxWindow*)GetParent();
if (nX == nCurrentX && nY2 == nCurrentY &&
nWidth == nCurrentWidth && nHeight == nCurrentHeight)
int i;
int l;
FONTMETRICS vFM; // metrics structure
- BOOL bRc;
+ BOOL bRc = FALSE;
char* pStr;
- ERRORID vErrorCode; // last error id code
HPS hPS;
// popup menu
// ---------------------------------------------------------------------------
//
-#if wxUSE_MENUS_NATIVE
-static void wxYieldForCommandsOnly()
-{
- //
- // Peek all WM_COMMANDs (it will always return WM_QUIT too but we don't
- // want to process it here)
- //
- QMSG vMsg;
-
- while (::WinPeekMsg(vHabmain, &vMsg, (HWND)0, WM_COMMAND, WM_COMMAND, PM_REMOVE)
- && vMsg.msg != WM_QUIT)
- {
- wxTheApp->DoMessage((WXMSG*)&vMsg);
- }
- if (vMsg.msg == WM_QUIT)
- ::WinPostMsg(NULL, WM_QUIT, 0, 0);
-}
-#endif // wxUSE_MENUS_NATIVE
-
#if wxUSE_MENUS_NATIVE
bool wxWindowOS2::DoPopupMenu(
wxMenu* pMenu
pMenu->SetInvokingWindow(this);
pMenu->UpdateUI();
-
- DoClientToScreen( &nX
- ,&nY
- );
+
+ if ( x == -1 && y == -1 )
+ {
+ wxPoint mouse = wxGetMousePosition();
+ nX = mouse.x; nY = mouse.y;
+ }
+ else
+ {
+ DoClientToScreen( &nX
+ ,&nY
+ );
+ }
wxCurrentPopupMenu = pMenu;
::WinPopupMenu( hWndParent
while(bIsWaiting)
{
QMSG vMsg;
- BOOL bRc = ::WinGetMsg(vHabmain, &vMsg, HWND(NULL), 0, 0);
if (vMsg.msg == WM_MENUEND || vMsg.msg == WM_COMMAND)
{
} // end of wxWindowOS2::UnpackMenuSelect
// ---------------------------------------------------------------------------
-// Main wxWindows window proc and the window proc for wxWindow
+// Main wxWidgets window proc and the window proc for wxWindow
// ---------------------------------------------------------------------------
//
, MPARAM lParam
)
{
- //
- // Trace all ulMsgs - useful for the debugging
- //
-#ifdef __WXDEBUG__
- wxLogTrace(wxTraceMessages, wxT("Processing %s(wParam=%8lx, lParam=%8lx)"),
- wxGetMessageName(ulMsg), wParam, lParam);
-#endif // __WXDEBUG__
-
wxWindowOS2* pWnd = wxFindWinFromHandle((WXHWND)hWnd);
//
bProcessed = HandleMouseEvent( uMsg
,nX
,nY
- ,(WXUINT)SHORT1FROMMP(wParam)
+ ,(WXUINT)SHORT2FROMMP(lParam)
);
}
else
bProcessed = pWin->HandleMouseEvent( uMsg
,nX
,nY
- ,(WXUINT)SHORT1FROMMP(wParam)
+ ,(WXUINT)SHORT2FROMMP(lParam)
);
}
}
break;
}
//
- // Simulate a WM_COMMAND here, as wxWindows expects all control
+ // Simulate a WM_COMMAND here, as wxWidgets expects all control
// button clicks to generate WM_COMMAND msgs, not WM_CONTROL
//
if (pWin->IsKindOf(CLASSINFO(wxRadioBox)))
break;
}
//
- // Simulate a WM_COMMAND here, as wxWindows expects all control
+ // Simulate a WM_COMMAND here, as wxWidgets expects all control
// button clicks to generate WM_COMMAND msgs, not WM_CONTROL
//
if (pWin->IsKindOf(CLASSINFO(wxListBox)))
return mResult;
} // end of wxWindowOS2::OS2WindowProc
-#ifndef __EMX__
-// clashes with wxDlgProc in toplevel.cpp?
-//
-// Dialog window proc
-//
-MRESULT wxDlgProc(
- HWND WXUNUSED(hWnd)
-, UINT uMsg
-, MPARAM WXUNUSED(wParam)
-, MPARAM WXUNUSED(lParam))
-{
- if (uMsg == WM_INITDLG)
- {
- //
- // For this message, returning TRUE tells system to set focus to the
- // first control in the dialog box
- //
- return (MRESULT)TRUE;
- }
- else
- {
- //
- // For all the other ones, FALSE means that we didn't process the
- // message
- //
- return (MRESULT)0;
- }
-} // end of wxDlgProc
-#endif
-
wxWindow* wxFindWinFromHandle(
WXHWND hWnd
)
if (!pNode)
return NULL;
- return (wxWindow *)pNode->Data();
+ return (wxWindow *)pNode->GetData();
} // end of wxFindWinFromHandle
void wxAssociateWinWithHandle(
int nY = 0L;
int nWidth = 0L;
int nHeight = 0L;
- wxWindow* pParent = GetParent();
- HWND hWnd = NULLHANDLE;
- HWND hParent;
long lControlId = 0L;
wxWindowCreationHook vHook(this);
wxString sClassName((wxChar*)zClass);
// which is the same but without CS_[HV]REDRAW class styles so using it
// ensures that the window is not fully repainted on each resize
//
- if (GetWindowStyleFlag() & wxNO_FULL_REPAINT_ON_RESIZE)
+ if (!HasFlag(wxFULL_REPAINT_ON_RESIZE))
{
sClassName += wxT("NR");
}
);
vDc.SetHPS(pMeasureStruct->hps);
//
- // Load the wxWindows Pallete and set to RGB mode
+ // Load the wxWidgets Pallete and set to RGB mode
//
if (!::GpiCreateLogColorTable( pMeasureStruct->hps
,0L
wxSysColourChangedEvent& rEvent
)
{
- wxNode* pNode = GetChildren().First();
+ wxWindowListNode* pNode = GetChildren().GetFirst();
while (pNode)
{
//
// Only propagate to non-top-level windows
//
- wxWindow* pWin = (wxWindow *)pNode->Data();
+ wxWindow* pWin = (wxWindow *)pNode->GetData();
if (pWin->GetParent())
{
rEvent.m_eventObject = pWin;
pWin->GetEventHandler()->ProcessEvent(vEvent);
}
- pNode = pNode->Next();
+ pNode = pNode->GetNext();
}
} // end of wxWindowOS2::OnSysColourChanged
HRGN hRgn;
wxPaintEvent vEvent(m_windowId);
HPS hPS;
- RECTL vRect;
bool bProcessed;
// Create empty region
//
HPS hPS;
RECTL vRect;
- wxFrame* pFrame;
- wxWindow* pParent;
hPS = ::WinBeginPaint( GetHwnd()
,NULLHANDLE
//
HPS hPS;
RECTL vRect;
- wxFrame* pFrame;
- wxWindow* pParent;
hPS = ::WinBeginPaint( GetHwnd()
,NULLHANDLE
PSWP pSwp
)
{
- bool bRc = FALSE;
POINTL vPoint;
switch(pSwp->fl)
, WXUINT uFlags
)
{
+ int nHeight;
+ DoGetSize(0, &nHeight);
rEvent.m_x = nX;
- rEvent.m_y = nY;
- rEvent.m_shiftDown = ((uFlags & VK_SHIFT) != 0);
- rEvent.m_controlDown = ((uFlags & VK_CTRL) != 0);
- rEvent.m_leftDown = ((uFlags & VK_BUTTON1) != 0);
- rEvent.m_middleDown = ((uFlags & VK_BUTTON3) != 0);
- rEvent.m_rightDown = ((uFlags & VK_BUTTON2) != 0);
+ // Convert to wxWidgets standard coordinate system!
+ rEvent.m_y = nHeight - nY;
+ rEvent.m_shiftDown = ((uFlags & KC_SHIFT) != 0);
+ rEvent.m_controlDown = ((uFlags & KC_CTRL) != 0);
+ rEvent.m_altDown = ((uFlags & KC_ALT) != 0);
+ rEvent.m_leftDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON1) &
+ 0x8000) != 0;
+ rEvent.m_middleDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON3) &
+ 0x8000) != 0;
+ rEvent.m_rightDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON2) &
+ 0x8000) != 0;
rEvent.SetTimestamp(s_currentMsg.time);
rEvent.m_eventObject = this;
rEvent.SetId(GetId());
bProcessed = GetEventHandler()->ProcessEvent(vEvent);
if (!bProcessed)
{
- HPOINTER hPtr = ::WinQuerySysPointer(HWND_DESKTOP, SPTR_WAIT, FALSE);
HPOINTER hCursor = (HPOINTER)GetCursor().GetHCURSOR();
if (hCursor != NULLHANDLE)
,vSwp.y - nDiff
,vSwp.cx
,vSwp.cy
- ,SWP_MOVE | SWP_SHOW | SWP_ZORDER
+ ,SWP_MOVE
);
::WinQueryWindowPos(GetHwndOf(pWin), pWin->GetSwp());
if (pWin->IsKindOf(CLASSINFO(wxRadioBox)))
//
// Getting the Y position for a window, like a control, is a real
// pain. There are three sitatuions we must deal with in determining
-// the OS2 to wxWindows Y coordinate.
+// the OS2 to wxWidgets Y coordinate.
//
// 1) The controls are created in a dialog.
// This is the easiest since a dialog is created with its original
wxWindowOS2* pParent
)
{
- wxWindowOS2* pGrandParent = NULL;
-
//
// Case 1
//
// Beginning of user defined messages
case 0x1000: return "WM_USER";
- // wxWindows user defined types
+ // wxWidgets user defined types
// listview
// case 0x1000 + 0: return "LVM_GETBKCOLOR";
POINTL vPoint;
BOOL rcEnabled = FALSE;
BOOL rcVisible = FALSE;
- HWND hWndDesktop = HWND_DESKTOP;
::WinQueryPointerPos(HWND_DESKTOP, &vPoint);
hWndUnderMouse = ::WinWindowFromPoint(HWND_DESKTOP, &vPoint, TRUE);
if (pWinUnderMouse)
{
wxWindowList::Node* pCurrent = pWinUnderMouse->GetChildren().GetFirst();
- wxWindow* pChild = NULL;
wxWindow* pGrandChild = NULL;
RECTL vRect;
POINTL vPoint2;