#include "wx/checkbox.h"
#include "wx/radiobut.h"
#include "wx/tglbtn.h"
+#include "wx/slider.h"
+#include "wx/datectrl.h"
// ----------------------------------------------------------------------------
// globals
return 0;
}
-WXHWND wxTopLevelWindowPalm::PalmGetParent() const
-{
- return NULL;
-}
-
bool wxTopLevelWindowPalm::Create(wxWindow *parent,
wxWindowID id,
const wxString& title,
{
}
+// ---------------------------------------------------------------------------
+// implementation
+// ---------------------------------------------------------------------------
+
+WXWINHANDLE wxTopLevelWindowPalm::GetWinHandle() const
+{
+ FormType *form = GetForm();
+ if(form)
+ return FrmGetWindowHandle(form);
+ return 0;
+}
+
// ----------------------------------------------------------------------------
// wxTopLevelWindowPalm showing
// ----------------------------------------------------------------------------
return FrmGetActiveForm();
}
-#ifndef __WXWINCE__
-
bool wxTopLevelWindowPalm::SetShape(const wxRegion& region)
{
return false;
}
-#endif // !__WXWINCE__
-
// ----------------------------------------------------------------------------
-// wxTopLevelWindow event handling
+// wxTopLevelWindow native event handling
// ----------------------------------------------------------------------------
bool wxTopLevelWindowPalm::HandleControlSelect(EventType* event)
{
int id = event->data.ctlSelect.controlID;
+
wxWindow* win = FindWindowById(id,this);
if(win==NULL)
return false;
+#if wxUSE_BUTTON
wxButton* button = wxDynamicCast(win,wxButton);
if(button)
return button->SendClickEvent();
+#endif // wxUSE_BUTTON
+#if wxUSE_CHECKBOX
wxCheckBox* checkbox = wxDynamicCast(win,wxCheckBox);
if(checkbox)
return checkbox->SendClickEvent();
+#endif // wxUSE_CHECKBOX
+#if wxUSE_TOGGLEBTN
wxToggleButton* toggle = wxDynamicCast(win,wxToggleButton);
if(toggle)
return toggle->SendClickEvent();
+#endif // wxUSE_TOGGLEBTN
+#if wxUSE_RADIOBTN
wxRadioButton* radio = wxDynamicCast(win,wxRadioButton);
if(radio)
return radio->SendClickEvent();
+#endif // wxUSE_RADIOBTN
+
+#if wxUSE_DATEPICKCTRL
+ wxDatePickerCtrl* datepicker = wxDynamicCast(win,wxDatePickerCtrl);
+ if(datepicker)
+ return datepicker->SendClickEvent();
+#endif // wxUSE_DATEPICKCTRL
+
+#if wxUSE_SLIDER
+ wxSlider* slider = wxDynamicCast(win,wxSlider);
+ if(slider)
+ return slider->SendUpdatedEvent();
+#endif // wxUSE_SLIDER
+
+ return false;
+}
+
+bool wxTopLevelWindowPalm::HandleControlRepeat(EventType* event)
+{
+ int id = event->data.ctlRepeat.controlID;
+
+ wxWindow* win = FindWindowById(id,this);
+ if(win==NULL)
+ return false;
+
+#if wxUSE_SLIDER
+ wxSlider* slider = wxDynamicCast(win,wxSlider);
+ if(slider)
+ return slider->SendScrollEvent(event);
+#endif // wxUSE_SLIDER
return false;
}
+bool wxTopLevelWindowPalm::HandleSize(EventType* event)
+{
+ wxSize newSize(event->data.winResized.newBounds.extent.x,
+ event->data.winResized.newBounds.extent.y);
+ wxSizeEvent eventWx(newSize,GetId());
+ eventWx.SetEventObject(this);
+ return GetEventHandler()->ProcessEvent(eventWx);
+}
+
void wxTopLevelWindowPalm::OnActivate(wxActivateEvent& event)
{
}
*/
static Boolean FrameFormHandleEvent(EventType* event)
{
- wxFrame* frame = wxDynamicCast(ActiveParentFrame,wxFrame);
+ // frame and tlw point to the same object but they are for convenience
+ // of calling proper structure withiout later dynamic typcasting
+ wxFrame* frame = wxDynamicCast(ActiveParentFrame,wxFrame);
+ wxTopLevelWindowPalm* tlw = ActiveParentFrame;
Boolean handled = false;
switch (event->eType) {
case ctlSelectEvent:
- handled = frame->HandleControlSelect(event);
+ handled = tlw->HandleControlSelect(event);
+ break;
+ case ctlRepeatEvent:
+ handled = tlw->HandleControlRepeat(event);
+ break;
+ case winResizedEvent:
+ handled = tlw->HandleSize(event);
break;
#if wxUSE_MENUS_NATIVE
case menuOpenEvent: