]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/palmos/evtloop.cpp
fix for bug 1371386, with some minor mods and cleanup
[wxWidgets.git] / src / palmos / evtloop.cpp
... / ...
CommitLineData
1///////////////////////////////////////////////////////////////////////////////
2// Name: src/palmos/evtloop.cpp
3// Purpose: implements wxEventLoop for Palm OS
4// Author: William Osborne - minimal working wxPalmOS port
5// Modified by:
6// Created: 10.14.04
7// RCS-ID: $Id$
8// Copyright: (c) William Osborne
9// License: wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12// ============================================================================
13// declarations
14// ============================================================================
15
16// ----------------------------------------------------------------------------
17// headers
18// ----------------------------------------------------------------------------
19
20// For compilers that support precompilation, includes "wx.h".
21#include "wx/wxprec.h"
22
23#ifdef __BORLANDC__
24 #pragma hdrstop
25#endif
26
27#ifndef WX_PRECOMP
28 #include "wx/window.h"
29 #include "wx/app.h"
30#endif //WX_PRECOMP
31
32#include "wx/evtloop.h"
33
34#include "wx/tooltip.h"
35#include "wx/except.h"
36#include "wx/ptr_scpd.h"
37
38#if wxUSE_THREADS
39 #include "wx/thread.h"
40
41 // define the array of MSG strutures
42 WX_DECLARE_OBJARRAY(MSG, wxMsgArray);
43
44 #include "wx/arrimpl.cpp"
45
46 WX_DEFINE_OBJARRAY(wxMsgArray);
47#endif // wxUSE_THREADS
48
49#include <Event.h>
50#include <SystemMgr.h>
51#include <Menu.h>
52#include <Form.h>
53
54// ----------------------------------------------------------------------------
55// helper class
56// ----------------------------------------------------------------------------
57
58// this object sets the wxEventLoop given to the ctor as the currently active
59// one and unsets it in its dtor
60class wxEventLoopActivator
61{
62public:
63 wxEventLoopActivator(wxEventLoop **pActive,
64 wxEventLoop *evtLoop)
65 {
66 m_pActive = pActive;
67 m_evtLoopOld = *pActive;
68 *pActive = evtLoop;
69 }
70
71 ~wxEventLoopActivator()
72 {
73 // restore the previously active event loop
74 *m_pActive = m_evtLoopOld;
75 }
76
77private:
78 wxEventLoop *m_evtLoopOld;
79 wxEventLoop **m_pActive;
80};
81
82// ============================================================================
83// wxEventLoop implementation
84// ============================================================================
85
86wxEventLoop *wxEventLoopBase::ms_activeLoop = NULL;
87
88// ----------------------------------------------------------------------------
89// ctor/dtor
90// ----------------------------------------------------------------------------
91
92wxEventLoop::wxEventLoop()
93{
94 m_shouldExit = false;
95 m_exitcode = 0;
96}
97
98// ----------------------------------------------------------------------------
99// wxEventLoop message processing
100// ----------------------------------------------------------------------------
101
102void wxEventLoop::ProcessMessage(WXMSG *msg)
103{
104}
105
106bool wxEventLoop::PreProcessMessage(WXMSG *msg)
107{
108 return false;
109}
110
111// ----------------------------------------------------------------------------
112// wxEventLoop running and exiting
113// ----------------------------------------------------------------------------
114
115bool wxEventLoop::IsRunning() const
116{
117 return true;
118}
119
120int wxEventLoop::Run()
121{
122 status_t error;
123 EventType event;
124
125 do {
126 wxTheApp && wxTheApp->ProcessIdle();
127
128 EvtGetEvent(&event, evtWaitForever);
129
130 if (SysHandleEvent(&event))
131 continue;
132
133 if (MenuHandleEvent(0, &event, &error))
134 continue;
135
136 FrmDispatchEvent(&event);
137
138 } while (event.eType != appStopEvent);
139
140 return 0;
141}
142
143void wxEventLoop::Exit(int rc)
144{
145 FrmCloseAllForms();
146
147 EventType AppStop;
148 AppStop.eType=appStopEvent;
149 EvtAddEventToQueue(&AppStop);
150}
151
152// ----------------------------------------------------------------------------
153// wxEventLoop message processing dispatching
154// ----------------------------------------------------------------------------
155
156bool wxEventLoop::Pending() const
157{
158 return false;
159}
160
161bool wxEventLoop::Dispatch()
162{
163 return false;
164}
165