#include "wx/app.h"
#include "wx/panel.h"
#include "wx/layout.h"
+ #include "wx/checkbox.h"
+ #include "wx/combobox.h"
#include "wx/dialog.h"
#include "wx/frame.h"
#include "wx/listbox.h"
#include "wx/button.h"
+ #include "wx/bmpbuttn.h"
#include "wx/msgdlg.h"
#include "wx/scrolwin.h"
#include "wx/radiobox.h"
+ #include "wx/radiobut.h"
#include "wx/slider.h"
#include "wx/statbox.h"
#include "wx/statusbr.h"
if ( hWnd )
::WinEnableWindow(hWnd, (BOOL)bEnable);
+ //
+ // The logic below doesn't apply to the top level windows -- otherwise
+ // showing a modal dialog would result in total greying out (and ungreying
+ // out later) of everything which would be really ugly
+ //
+ if (IsTopLevel())
+ return TRUE;
+
wxWindowList::Node* pNode = GetChildren().GetFirst();
while (pNode)
wxDropTarget* pDropTarget
)
{
- if (m_dropTarget != 0)
- {
- m_dropTarget->Revoke(m_hWnd);
- delete m_dropTarget;
- }
m_dropTarget = pDropTarget;
- if (m_dropTarget != 0)
- m_dropTarget->Register(m_hWnd);
} // end of wxWindowOS2::SetDropTarget
#endif
{
wxTheApp->DoMessage((WXMSG*)&vMsg);
}
+ if (vMsg.msg == WM_QUIT)
+ ::WinPostMsg(NULL, WM_QUIT, 0, 0);
}
#endif // wxUSE_MENUS_NATIVE
pBtn->OS2Command(BN_CLICKED, 0 /* unused */);
return TRUE;
}
+ else if (!IsTopLevel())
+ {
+ //
+ // if not a top level window, let parent
+ // handle it
+ //
+ return FALSE;
+ }
// else: but if it does not it makes sense to make
// it work like a TAB - and that's what we do.
// Note that Ctrl-Enter always works this way.
,&nX
,&nY
);
+ if (!pWin->IsOfStandardClass())
+ {
+ if (uMsg == WM_BUTTON1DOWN && pWin->AcceptsFocus() )
+ pWin->SetFocus();
+ }
bProcessed = pWin->HandleMouseEvent( uMsg
,nX
,nY
}
else
{
- bProcessed = OS2OnMeasureItem(nIdCtrl,
- (WXMEASUREITEMSTRUCT *)lParam);
+ return MRFROMLONG(OS2OnMeasureItem( nIdCtrl
+ ,(WXMEASUREITEMSTRUCT *)lParam
+ ));
}
if ( bProcessed )
case WM_CONTROL:
switch(SHORT2FROMMP(wParam))
{
+ case BN_PAINT:
+ {
+ HWND hWnd = ::WinWindowFromID((HWND)GetHwnd(), SHORT1FROMMP(wParam));
+ wxWindowOS2* pWin = wxFindWinFromHandle(hWnd);
+
+ if (!pWin)
+ {
+ bProcessed = FALSE;
+ break;
+ }
+ if (pWin->IsKindOf(CLASSINFO(wxBitmapButton)))
+ {
+ wxBitmapButton* pBitmapButton = wxDynamicCast(pWin, wxBitmapButton);
+
+ pBitmapButton->OS2OnDraw((WXDRAWITEMSTRUCT *)lParam);
+ }
+ return 0;
+ }
+ break;
+
case BKN_PAGESELECTEDPENDING:
{
PPAGESELECTNOTIFY pPage = (PPAGESELECTNOTIFY)lParam;
bool wxWindowOS2::HandleDestroy()
{
wxWindowDestroyEvent vEvent((wxWindow*)this);
-
+ vEvent.SetId(GetId());
(void)GetEventHandler()->ProcessEvent(vEvent);
//
#if wxUSE_DRAG_AND_DROP
if (m_dropTarget != NULL)
{
- m_dropTarget->Revoke(m_hWnd);
delete m_dropTarget;
m_dropTarget = NULL;
}
return FALSE;
} // end of wxWindowOS2::OS2OnDrawItem
-bool wxWindowOS2::OS2OnMeasureItem(
+long wxWindowOS2::OS2OnMeasureItem(
int lId
, WXMEASUREITEMSTRUCT* pItemStruct
)
,&nHeight
))
{
+ MRESULT mRc;
+
pMeasureStruct->rclItem.xRight = nWidth;
pMeasureStruct->rclItem.xLeft = 0L;
pMeasureStruct->rclItem.yTop = nHeight;
pMeasureStruct->rclItem.yBottom = 0L;
- return TRUE;
+ mRc = MRFROM2SHORT(nHeight, nWidth);
+ return LONGFROMMR(mRc);
}
- return FALSE;
+ return 0L;
}
}
wxWindow* pItem = FindItem(lId);
// painting
// ---------------------------------------------------------------------------
+void wxWindow::OnPaint (
+ wxPaintEvent& rEvent
+)
+{
+ HDC hDC = (HDC)wxPaintDC::FindDCInCache((wxWindow*) rEvent.GetEventObject());
+
+ if (hDC != 0)
+ {
+ OS2DefWindowProc( (WXUINT)WM_PAINT
+ ,(WXWPARAM)hDC
+ ,(WXLPARAM)0
+ );
+ }
+} // end of wxWindow::OnPaint
+
bool wxWindowOS2::HandlePaint()
{
HRGN hRgn;
int nDiff
)
{
- if (GetAutoLayout())
+ //
+ // We want to handle top levels ourself, manually
+ //
+ if (!IsTopLevel() && GetAutoLayout())
{
Layout();
}