X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a152561c76dbed50d23f28d6e5761b4ece968156..b9efe021b554fa3967d1442cf758435c5cd5ae8f:/src/palmos/toplevel.cpp diff --git a/src/palmos/toplevel.cpp b/src/palmos/toplevel.cpp index 78e34bc01f..0fe4043a0f 100644 --- a/src/palmos/toplevel.cpp +++ b/src/palmos/toplevel.cpp @@ -47,6 +47,8 @@ #include "wx/checkbox.h" #include "wx/radiobut.h" #include "wx/tglbtn.h" +#include "wx/slider.h" +#include "wx/datectrl.h" // ---------------------------------------------------------------------------- // globals @@ -79,11 +81,6 @@ WXDWORD wxTopLevelWindowPalm::PalmGetStyle(long style, WXDWORD *exflags) const return 0; } -WXHWND wxTopLevelWindowPalm::PalmGetParent() const -{ - return NULL; -} - bool wxTopLevelWindowPalm::Create(wxWindow *parent, wxWindowID id, const wxString& title, @@ -146,6 +143,18 @@ wxTopLevelWindowPalm::~wxTopLevelWindowPalm() { } +// --------------------------------------------------------------------------- +// implementation +// --------------------------------------------------------------------------- + +WXWINHANDLE wxTopLevelWindowPalm::GetWinHandle() const +{ + FormType *form = GetForm(); + if(form) + return FrmGetWindowHandle(form); + return 0; +} + // ---------------------------------------------------------------------------- // wxTopLevelWindowPalm showing // ---------------------------------------------------------------------------- @@ -232,45 +241,88 @@ FormType *wxTopLevelWindowPalm::GetForm() const 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) { } @@ -291,12 +343,21 @@ 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: