X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b554cf63711f985030c5d5f338f9614d158a8718..810994672a118c1e44161e15b7569a32c45634a3:/src/msw/dialog.cpp diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp index e11bff6afb..cda785f0b3 100644 --- a/src/msw/dialog.cpp +++ b/src/msw/dialog.cpp @@ -43,14 +43,16 @@ #include "wx/evtloop.h" #include "wx/ptr_scpd.h" -#if wxUSE_COMMON_DIALOGS && !defined(__WXMICROWIN__) - #include -#endif +#include "wx/msw/wrapcdlg.h" #if defined(__SMARTPHONE__) && defined(__WXWINCE__) #include "wx/msw/wince/resources.h" #endif // __SMARTPHONE__ && __WXWINCE__ +#if wxUSE_TOOLBAR && defined(__POCKETPC__) +#include "wx/toolbar.h" +#endif + // ---------------------------------------------------------------------------- // wxWin macros // ---------------------------------------------------------------------------- @@ -160,6 +162,9 @@ void wxDialog::Init() m_isShown = false; m_modalData = NULL; m_endModalCalled = false; +#if wxUSE_TOOLBAR && defined(__POCKETPC__) + m_dialogToolBar = NULL; +#endif } bool wxDialog::Create(wxWindow *parent, @@ -187,6 +192,9 @@ bool wxDialog::Create(wxWindow *parent, #if defined(__SMARTPHONE__) && defined(__WXWINCE__) SetLeftMenu(wxID_OK, _("OK")); #endif +#if wxUSE_TOOLBAR && defined(__POCKETPC__) + CreateToolBar(); +#endif return true; } @@ -433,6 +441,50 @@ void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(event)) Refresh(); } +#ifdef __POCKETPC__ +// Responds to the OK button in a PocketPC titlebar. This +// can be overridden, or you can change the id used for +// sending the event, by calling SetAffirmativeId. +bool wxDialog::DoOK() +{ + wxButton *btn = wxDynamicCast(FindWindow(GetAffirmativeId()), wxButton); + + if ( btn && btn->IsEnabled() ) + { + // If we have this button, press it + btn->MSWCommand(BN_CLICKED, 0 /* unused */); + return true; + } + else + { + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, GetAffirmativeId()); + event.SetEventObject(this); + + return GetEventHandler()->ProcessEvent(event); + } +} +#endif + +#if wxUSE_TOOLBAR && defined(__POCKETPC__) +// create main toolbar by calling OnCreateToolBar() +wxToolBar* wxDialog::CreateToolBar(long style, wxWindowID winid, const wxString& name) +{ + m_dialogToolBar = OnCreateToolBar(style, winid, name); + + return m_dialogToolBar; +} + +// return a new toolbar +wxToolBar *wxDialog::OnCreateToolBar(long style, + wxWindowID winid, + const wxString& name) +{ + return new wxToolMenuBar(this, winid, + wxDefaultPosition, wxDefaultSize, + style, name); +} +#endif + // --------------------------------------------------------------------------- // dialog window proc // --------------------------------------------------------------------------- @@ -450,32 +502,13 @@ WXLRESULT wxDialog::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPar { switch ( LOWORD(wParam) ) { -#ifndef __SMARTPHONE__ +#ifdef __POCKETPC__ case IDOK: - // First, try the OK button, since it's closest in meaning. - wxButton *btn = wxDynamicCast(FindWindow(wxID_OK), wxButton); - - // Next, try Cancel or Close buttons - if (!btn) - btn = wxDynamicCast(FindWindow(wxID_CANCEL), wxButton); - if (!btn) - btn = wxDynamicCast(FindWindow(wxID_CLOSE), wxButton); - - if ( btn && btn->IsEnabled() ) - { - // if we do have a cancel button, do press it - btn->MSWCommand(BN_CLICKED, 0 /* unused */); - processed = true; - break; - } - else - { - // Finally, if there aren't appropriate buttons, - // act as if it were the normal close button. + processed = DoOK(); + if (!processed) processed = !Close(); - } - -#else // ifdef __SMARTPHONE__ +#endif +#ifdef __SMARTPHONE__ case IDM_LEFT: case IDM_RIGHT: processed = HandleCommand( LOWORD(wParam) , 0 , NULL );