#endif //WX_PRECOMP
#include "wx/module.h"
-
#include "wx/display.h"
+// controls for sending select event
+#include "wx/button.h"
+#include "wx/checkbox.h"
+#include "wx/radiobut.h"
+#include "wx/tglbtn.h"
+#include "wx/slider.h"
+
// ----------------------------------------------------------------------------
// globals
// ----------------------------------------------------------------------------
{
}
+void wxTopLevelWindowPalm::DoGetSize( int *width, int *height ) const
+{
+ RectangleType rect;
+ FrmGetFormBounds( GetForm() , &rect );
+ if(width)
+ *width = rect.extent.x;
+ if(height)
+ *height = rect.extent.y;
+}
+
// ----------------------------------------------------------------------------
// wxTopLevelWindowPalm fullscreen
// ----------------------------------------------------------------------------
return false;
}
-FormType *wxTopLevelWindowPalm::GetForm()
+FormType *wxTopLevelWindowPalm::GetForm() const
{
- return FrmGetActiveForm ();
+ return FrmGetActiveForm();
}
#ifndef __WXWINCE__
#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;
+
+ wxButton* button = wxDynamicCast(win,wxButton);
+ if(button)
+ return button->SendClickEvent();
+
+ wxCheckBox* checkbox = wxDynamicCast(win,wxCheckBox);
+ if(checkbox)
+ return checkbox->SendClickEvent();
+
+ wxToggleButton* toggle = wxDynamicCast(win,wxToggleButton);
+ if(toggle)
+ return toggle->SendClickEvent();
+
+ wxRadioButton* radio = wxDynamicCast(win,wxRadioButton);
+ if(radio)
+ return radio->SendClickEvent();
+
+ wxSlider* slider = wxDynamicCast(win,wxSlider);
+ if(slider)
+ return slider->SendUpdatedEvent();
+
+ return false;
+}
+
+bool wxTopLevelWindowPalm::HandleControlRepeat(EventType* event)
+{
+ int id = event->data.ctlRepeat.controlID;
+
+ wxWindow* win = FindWindowById(id,this);
+ if(win==NULL)
+ return false;
+
+ wxSlider* slider = wxDynamicCast(win,wxSlider);
+ if(slider)
+ return slider->SendScrollEvent(event);
+
+ 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)
{
}
* finds a better solution, please let me know. My email address is
* wbo@freeshell.org
*/
-static Boolean FrameFormHandleEvent(EventType* pEvent)
+static Boolean FrameFormHandleEvent(EventType* event)
{
- wxFrame* frame = wxDynamicCast(ActiveParentFrame,wxFrame);
- Boolean fHandled = false;
- FormType* pForm;
- WinHandle hWindow;
- int ItemID=0;
+ // 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 (pEvent->eType) {
+ switch (event->eType) {
case ctlSelectEvent:
+ 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:
- fHandled = frame->HandleMenuOpen();
+ handled = frame->HandleMenuOpen();
break;
case menuEvent:
- ItemID = pEvent->data.menu.itemID;
- fHandled = frame->HandleMenuSelect(ItemID);
+ handled = frame->HandleMenuSelect(event);
break;
#endif
default:
break;
}
- return fHandled;
+ return handled;
}