X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bdb5436554c910fe850db1470514ee83ded76db3..d79decb5b4cea1616129b07f9768c98f0b4634d5:/src/palmos/toplevel.cpp diff --git a/src/palmos/toplevel.cpp b/src/palmos/toplevel.cpp index 58fe1ddc46..2ff38362b7 100644 --- a/src/palmos/toplevel.cpp +++ b/src/palmos/toplevel.cpp @@ -40,9 +40,15 @@ #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 // ---------------------------------------------------------------------------- @@ -98,12 +104,14 @@ bool wxTopLevelWindowPalm::Create(wxWindow *parent, if ( parent ) parent->AddChild(this); - m_windowId = id == wxID_ANY ? NewControlId() : id; + SetId( id == wxID_ANY ? NewControlId() : id ); WinConstraintsType constraints; memset(&constraints, 0, sizeof(WinConstraintsType)); + // position constraints.x_pos = ( pos.x == wxDefaultCoord ) ? winUndefConstraint : pos.x; constraints.y_pos = ( pos.y == wxDefaultCoord ) ? winUndefConstraint : pos.y; + // size constraints.x_min = winUndefConstraint; constraints.x_max = winMaxConstraint; constraints.x_pref = ( size.x == wxDefaultCoord ) ? winUndefConstraint : size.x; @@ -112,7 +120,7 @@ bool wxTopLevelWindowPalm::Create(wxWindow *parent, constraints.y_pref = ( size.y == wxDefaultCoord ) ? winUndefConstraint : size.y; FrameForm = FrmNewFormWithConstraints( - m_windowId, + GetId(), title.c_str(), winFlagBackBuffer, &constraints, @@ -184,6 +192,16 @@ void wxTopLevelWindowPalm::Restore() { } +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 // ---------------------------------------------------------------------------- @@ -210,9 +228,9 @@ bool wxTopLevelWindowPalm::EnableCloseButton(bool enable) return false; } -FormType *wxTopLevelWindowPalm::GetForm() +FormType *wxTopLevelWindowPalm::GetForm() const { - return FrmGetActiveForm (); + return FrmGetActiveForm(); } #ifndef __WXWINCE__ @@ -228,6 +246,36 @@ bool wxTopLevelWindowPalm::SetShape(const wxRegion& region) // wxTopLevelWindow 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; +} + void wxTopLevelWindowPalm::OnActivate(wxActivateEvent& event) { } @@ -246,29 +294,26 @@ 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; + Boolean handled = false; - switch (pEvent->eType) { + switch (event->eType) { case ctlSelectEvent: + handled = frame->HandleControlSelect(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; }