void wxWindowOS2::Init()
{
- //
- // Generic
- //
- InitBase();
-
//
// PM specific
//
m_bWinCaptured = FALSE;
- m_isBeingDeleted = FALSE;
m_fnOldWndProc = NULL;
m_bUseCtl3D = FALSE;
m_bMouseInWindow = FALSE;
DestroyChildren();
- if (m_parent)
- m_parent->RemoveChild(this);
-
if (m_hWnd)
{
if(!::WinDestroyWindow(GetHWND()))
return dwStyle;
} // end of wxWindowOS2::MakeExtendedStyle
-//
-// Determines whether simulated 3D effects or CTL3D should be used,
-// applying a default border style if required, and returning an extended
-// style to pass to OS2Create.
-//
-WXDWORD wxWindowOS2::Determine3DEffects(
- WXDWORD dwDefaultBorderStyle
-, bool* pbWant3D
-) const
-{
- WXDWORD dwStyle = 0L;
-
- //
- // Native PM does not have any specialize 3D effects like WIN32 does,
- // so we have to try and invent them.
- //
-
- //
- // If matches certain criteria, then assume no 3D effects
- // unless specifically requested (dealt with in MakeExtendedStyle)
- //
- if (!GetParent() ||
- !IsKindOf(CLASSINFO(wxControl)) ||
- (m_windowStyle & wxNO_BORDER)
- )
- {
- *pbWant3D = FALSE;
- return MakeExtendedStyle(m_windowStyle, FALSE);
- }
-
- //
- // 1) App can specify global 3D effects
- //
- *pbWant3D = wxTheApp->GetAuto3D();
-
- //
- // 2) If the parent is being drawn with user colours, or simple border
- // specified, switch effects off.
- //
- if (GetParent() &&
- (GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS) ||
- (m_windowStyle & wxSIMPLE_BORDER)
- )
- *pbWant3D = FALSE;
-
- //
- // 3) Control can override this global setting by defining
- // a border style, e.g. wxSUNKEN_BORDER
- //
- if ((m_windowStyle & wxDOUBLE_BORDER) ||
- (m_windowStyle & wxRAISED_BORDER) ||
- (m_windowStyle & wxSTATIC_BORDER) ||
- (m_windowStyle & wxSUNKEN_BORDER)
- )
- *pbWant3D = TRUE;
-
- dwStyle = MakeExtendedStyle( m_windowStyle
- ,FALSE
- );
-
- //
- // If we want 3D, but haven't specified a border here,
- // apply the default border style specified.
- //
- if (dwDefaultBorderStyle && (*pbWant3D) &&
- !((m_windowStyle & wxDOUBLE_BORDER) ||
- (m_windowStyle & wxRAISED_BORDER) ||
- (m_windowStyle & wxSTATIC_BORDER) ||
- (m_windowStyle & wxSIMPLE_BORDER)
- )
- )
- dwStyle |= dwDefaultBorderStyle;
- return dwStyle;
-} // end of wxWindowOS2::Determine3DEffects
-
//
// Setup background and foreground colours correctly
//
//
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);
}
int i;
int l;
FONTMETRICS vFM; // metrics structure
- BOOL bRc;
+ BOOL bRc = FALSE;
char* pStr;
ERRORID vErrorCode; // last error id code
HPS hPS;
while (::WinPeekMsg(vHabmain, &vMsg, (HWND)0, WM_COMMAND, WM_COMMAND, PM_REMOVE)
&& vMsg.msg != WM_QUIT)
{
- wxTheApp->DoMessage((WXMSG*)&vMsg);
+ // luckily (as we don't have access to wxEventLoopImpl method from here
+ // anyhow...) we don't need to pre process WM_COMMANDs so dispatch it
+ // immediately
+ ::WinDispatchMsg(vHabmain, &vMsg);
}
if (vMsg.msg == WM_QUIT)
::WinPostMsg(NULL, WM_QUIT, 0, 0);
bProcessed = HandleMouseEvent( uMsg
,nX
,nY
- ,(WXUINT)SHORT1FROMMP(wParam)
+ ,(WXUINT)SHORT2FROMMP(lParam)
);
}
else
bProcessed = pWin->HandleMouseEvent( uMsg
,nX
,nY
- ,(WXUINT)SHORT1FROMMP(wParam)
+ ,(WXUINT)SHORT2FROMMP(lParam)
);
}
}
// 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");
}
, 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 wxWindows 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());