xref: /aoo41x/main/vcl/inc/vcl/vclevent.hxx (revision 6485ffd2)
10d63794cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
30d63794cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
40d63794cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
50d63794cSAndrew Rist  * distributed with this work for additional information
60d63794cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
70d63794cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
80d63794cSAndrew Rist  * "License"); you may not use this file except in compliance
90d63794cSAndrew Rist  * with the License.  You may obtain a copy of the License at
100d63794cSAndrew Rist  *
110d63794cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
120d63794cSAndrew Rist  *
130d63794cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
140d63794cSAndrew Rist  * software distributed under the License is distributed on an
150d63794cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
160d63794cSAndrew Rist  * KIND, either express or implied.  See the License for the
170d63794cSAndrew Rist  * specific language governing permissions and limitations
180d63794cSAndrew Rist  * under the License.
190d63794cSAndrew Rist  *
200d63794cSAndrew Rist  *************************************************************/
210d63794cSAndrew Rist 
220d63794cSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _VCL_VCLEVENT_HXX
25cdf0e10cSrcweir #define _VCL_VCLEVENT_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "tools/link.hxx"
28cdf0e10cSrcweir #include "tools/rtti.hxx"
29cdf0e10cSrcweir #include "vcl/dllapi.h"
30cdf0e10cSrcweir #include "vcl/impdel.hxx"
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include <list>
35cdf0e10cSrcweir #include <vector>
36cdf0e10cSrcweir 
37cdf0e10cSrcweir class Window;
38cdf0e10cSrcweir class Menu;
39cdf0e10cSrcweir 
40cdf0e10cSrcweir namespace com { namespace sun { namespace star {
41cdf0e10cSrcweir     namespace accessibility {
42cdf0e10cSrcweir         class XAccessible;
43cdf0e10cSrcweir     }
44cdf0e10cSrcweir }}}
45cdf0e10cSrcweir 
46cdf0e10cSrcweir #define VCLEVENT_OBJECT_DYING                  1
47cdf0e10cSrcweir 
48cdf0e10cSrcweir // VclWindowEvent:
49cdf0e10cSrcweir #define VCLEVENT_WINDOW_CHILDCREATED         500    // pData = Window*
50cdf0e10cSrcweir #define VCLEVENT_WINDOW_CHILDDESTROYED       501    // pData = Window*
51cdf0e10cSrcweir #define VCLEVENT_WINDOW_PAINT               1000    // pData = Rectangle*
52cdf0e10cSrcweir #define VCLEVENT_WINDOW_MOVE                1001
53cdf0e10cSrcweir #define VCLEVENT_WINDOW_RESIZE              1002
54cdf0e10cSrcweir #define VCLEVENT_WINDOW_SHOW                1003
55cdf0e10cSrcweir #define VCLEVENT_WINDOW_HIDE                1004
56cdf0e10cSrcweir #define VCLEVENT_WINDOW_ACTIVATE            1005
57cdf0e10cSrcweir #define VCLEVENT_WINDOW_DEACTIVATE          1006    // pData = Window* = pPrevActiveWindow
58cdf0e10cSrcweir #define VCLEVENT_WINDOW_CLOSE               1007
59cdf0e10cSrcweir #define VCLEVENT_WINDOW_GETFOCUS            1008
60cdf0e10cSrcweir #define VCLEVENT_WINDOW_LOSEFOCUS           1009
61cdf0e10cSrcweir #define VCLEVENT_WINDOW_MINIMIZE            1010
62cdf0e10cSrcweir #define VCLEVENT_WINDOW_NORMALIZE           1011
63cdf0e10cSrcweir #define VCLEVENT_WINDOW_KEYINPUT            1012    // pData = KeyEvent*
64cdf0e10cSrcweir #define VCLEVENT_WINDOW_KEYUP               1013    // pData = KeyEvent*
65cdf0e10cSrcweir #define VCLEVENT_WINDOW_COMMAND             1014    // pData = CommandEvent*
66cdf0e10cSrcweir #define VCLEVENT_WINDOW_MOUSEMOVE           1015    // pData = MouseEvent*
67cdf0e10cSrcweir #define VCLEVENT_WINDOW_MOUSEBUTTONDOWN     1016    // pData = MouseEvent*
68cdf0e10cSrcweir #define VCLEVENT_WINDOW_MOUSEBUTTONUP       1017    // pData = MouseEvent*
69cdf0e10cSrcweir #define VCLEVENT_WINDOW_FRAMETITLECHANGED   1018    // pData = XubString* = oldTitle
70cdf0e10cSrcweir #define VCLEVENT_APPLICATION_DATACHANGED    1019    // pData = DataChangedEvent*
71cdf0e10cSrcweir #define VCLEVENT_WINDOW_ENABLED             1020
72cdf0e10cSrcweir #define VCLEVENT_WINDOW_DISABLED            1021
73cdf0e10cSrcweir #define VCLEVENT_WINDOW_DATACHANGED         1022    // pData = DataChangedEvent*
74cdf0e10cSrcweir 
75cdf0e10cSrcweir // VclWindowEvent
76cdf0e10cSrcweir #define VCLEVENT_CONTROL_GETFOCUS           1100
77cdf0e10cSrcweir #define VCLEVENT_CONTROL_LOSEFOCUS          1101
78cdf0e10cSrcweir #define VCLEVENT_BUTTON_CLICK               1102
79cdf0e10cSrcweir #define VCLEVENT_PUSHBUTTON_TOGGLE          1103
80cdf0e10cSrcweir #define VCLEVENT_RADIOBUTTON_TOGGLE         1104
81cdf0e10cSrcweir #define VCLEVENT_CHECKBOX_TOGGLE            1105
82cdf0e10cSrcweir #define VCLEVENT_COMBOBOX_SELECT            1106
83cdf0e10cSrcweir #define VCLEVENT_COMBOBOX_DOUBLECLICK       1107
84cdf0e10cSrcweir #define VCLEVENT_LISTBOX_SELECT             1108
85cdf0e10cSrcweir #define VCLEVENT_LISTBOX_DOUBLECLICK        1109
86cdf0e10cSrcweir #define VCLEVENT_EDIT_MODIFY                1110
87cdf0e10cSrcweir #define VCLEVENT_SCROLLBAR_SCROLL           1111
88cdf0e10cSrcweir #define VCLEVENT_SCROLLBAR_ENDSCROLL        1112
89cdf0e10cSrcweir #define VCLEVENT_SPINBUTTON_UP              1113
90cdf0e10cSrcweir #define VCLEVENT_SPINBUTTON_DOWN            1114
91cdf0e10cSrcweir #define VCLEVENT_SPINFIELD_UP               1115
92cdf0e10cSrcweir #define VCLEVENT_SPINFIELD_DOWN             1116
93cdf0e10cSrcweir #define VCLEVENT_SPINFIELD_FIRST            1117
94cdf0e10cSrcweir #define VCLEVENT_SPINFIELD_LAST             1118
95cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_CLICK            1119
96cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_DOUBLECLICK      1120
97cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_CLICK              1121
98cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_DOUBLECLICK        1122
99cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ACTIVATE           1123
100cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_DEACTIVATE         1124
101cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_HIGHLIGHT          1125
102cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_SELECT             1126
103cdf0e10cSrcweir // Resort later...
104cdf0e10cSrcweir #define VCLEVENT_LISTBOX_SCROLLED           1127
105cdf0e10cSrcweir #define VCLEVENT_COMBOBOX_SCROLLED          1128
106cdf0e10cSrcweir #define VCLEVENT_EDIT_SELECTIONCHANGED      1129
107cdf0e10cSrcweir #define VCLEVENT_DROPDOWN_OPEN				1130
108cdf0e10cSrcweir #define VCLEVENT_DROPDOWN_CLOSE			    1131
109cdf0e10cSrcweir 
110cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ITEMADDED          1132        // pData = itempos
111cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ITEMREMOVED        1133        // pData = itempos
112cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ALLITEMSCHANGED    1134
113cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_HIGHLIGHTOFF       1135        // pData = itempos
114cdf0e10cSrcweir #define VCLEVENT_WINDOW_MENUBARADDED		1136        // pData = pMenuBar
115cdf0e10cSrcweir #define VCLEVENT_TABPAGE_ACTIVATE           1137        // pData = pageid
116cdf0e10cSrcweir #define VCLEVENT_TABPAGE_DEACTIVATE         1138        // pData = pageid
117cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGEENABLED         1139        // pData = pageid
118cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGEDISABLED        1140        // pData = pageid
119cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGESELECTED        1141        // pData = pageid
120cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGEACTIVATED       1142        // pData = pageid
121cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGEDEACTIVATED     1143        // pData = pageid
122cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGEINSERTED        1144        // pData = pageid
123cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGEREMOVED         1145        // pData = pageid
124cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGEMOVED           1146        // pData = Pair( pagepos_old, pagepos_new )
125cdf0e10cSrcweir #define VCLEVENT_TABBAR_PAGETEXTCHANGED     1147        // pData = pageid
126cdf0e10cSrcweir #define VCLEVENT_COMBOBOX_DESELECT          1148
127cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ITEMTEXTCHANGED    1149        // pData = itempos
128cdf0e10cSrcweir #define VCLEVENT_TABPAGE_INSERTED           1150        // pData = pageid
129cdf0e10cSrcweir #define VCLEVENT_TABPAGE_REMOVED            1151        // pData = pageid
130cdf0e10cSrcweir #define VCLEVENT_TABPAGE_REMOVEDALL         1152
131cdf0e10cSrcweir #define VCLEVENT_LISTBOX_ITEMADDED          1153        // pData = itempos
132cdf0e10cSrcweir #define VCLEVENT_LISTBOX_ITEMREMOVED        1154        // pData = itempos, -1=ALL
133cdf0e10cSrcweir #define VCLEVENT_COMBOBOX_ITEMADDED         1155        // pData = itempos
134cdf0e10cSrcweir #define VCLEVENT_COMBOBOX_ITEMREMOVED       1156        // pData = itempos, -1=ALL
135cdf0e10cSrcweir // free                                     1157
136cdf0e10cSrcweir #define VCLEVENT_WINDOW_MENUBARREMOVED      1158        // pData = pMenuBar
137cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_ITEMADDED        1159        // pData = itemid
138cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_ITEMREMOVED      1160        // pData = itemid
139cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_ALLITEMSREMOVED  1161
140cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_SHOWITEM         1162        // pData = itemid
141cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_HIDEITEM         1163        // pData = itemid
142cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_SHOWALLITEMS     1164
143cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_HIDEALLITEMS     1165
144cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_DRAWITEM			1166		// pData = itemid
145cdf0e10cSrcweir #define VCLEVENT_STATUSBAR_NAMECHANGED		1167		// pData = itemid
146cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ITEMENABLED        1168        // pData = itempos
147cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ITEMDISABLED       1169        // pData = itempos
148cdf0e10cSrcweir #define VCLEVENT_TABPAGE_PAGETEXTCHANGED    1170        // pData = pageid
149cdf0e10cSrcweir #define VCLEVENT_ROADMAP_ITEMSELECTED       1171
150cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_FORMATCHANGED      1172        // request new layout
151cdf0e10cSrcweir #define VCLEVENT_COMBOBOX_SETTEXT           1173
152cdf0e10cSrcweir // --> OD 2009-04-01 #i92103#
153cdf0e10cSrcweir #define VCLEVENT_ITEM_EXPANDED              1174
154cdf0e10cSrcweir #define VCLEVENT_ITEM_COLLAPSED             1175
155cdf0e10cSrcweir // <--
156cdf0e10cSrcweir #define VCLEVENT_DROPDOWN_PRE_OPEN          1176
157*6485ffd2SSteve Yin #define VCLEVENT_DROPDOWN_SELECT			1177
15821075d77SSteve Yin #define VCLEVENT_LISTBOX_FOCUSITEMCHANGED	1180
15921075d77SSteve Yin // #define VCLEVENT_EDIT_CARETCHANGED  		xxxx	// IA2 CWS. MT: VCL only has selection API - difference for selection_changed vs. caret_changed is handled in accessibility wrapper since OOo 3.2
160cdf0e10cSrcweir 
161cdf0e10cSrcweir // VclMenuEvent
162cdf0e10cSrcweir #define VCLEVENT_MENU_ACTIVATE              1200
163cdf0e10cSrcweir #define VCLEVENT_MENU_DEACTIVATE            1201
164cdf0e10cSrcweir #define VCLEVENT_MENU_HIGHLIGHT             1202
165cdf0e10cSrcweir #define VCLEVENT_MENU_SELECT                1203
166cdf0e10cSrcweir #define VCLEVENT_MENU_ENABLE                1204
167cdf0e10cSrcweir #define VCLEVENT_MENU_INSERTITEM            1205
168cdf0e10cSrcweir #define VCLEVENT_MENU_REMOVEITEM            1206
169cdf0e10cSrcweir #define VCLEVENT_MENU_SUBMENUACTIVATE       1207
170cdf0e10cSrcweir #define VCLEVENT_MENU_SUBMENUDEACTIVATE     1208
171cdf0e10cSrcweir #define VCLEVENT_MENU_SUBMENUCHANGED        1209
172cdf0e10cSrcweir #define VCLEVENT_MENU_DEHIGHLIGHT           1210
173cdf0e10cSrcweir #define VCLEVENT_MENU_DISABLE               1211
174cdf0e10cSrcweir #define VCLEVENT_MENU_ITEMTEXTCHANGED		1212
175cdf0e10cSrcweir #define VCLEVENT_MENU_ITEMCHECKED			1213
176cdf0e10cSrcweir #define VCLEVENT_MENU_ITEMUNCHECKED			1214
177cdf0e10cSrcweir #define VCLEVENT_MENU_ACCESSIBLENAMECHANGED	1215
178ad3a95a3SSteve Yin #define VCLEVENT_TOOLBOX_ITEMWINDOWCHANGED  1216
179ad3a95a3SSteve Yin #define VCLEVENT_TOOLBOX_ITEMUPDATED  1217
180cdf0e10cSrcweir 
181cdf0e10cSrcweir #define VCLEVENT_MENU_SHOW                  1250
182cdf0e10cSrcweir #define VCLEVENT_MENU_HIDE                  1251
183cdf0e10cSrcweir 
184cdf0e10cSrcweir #define VCLEVENT_TOOLBOX_ITEMWINDOWCHANGED  1216
185ad3a95a3SSteve Yin #define VCLEVENT_LISTBOX_TREEEXPAND             1218
186ad3a95a3SSteve Yin #define VCLEVENT_LISTBOX_TREECOLLAPSE           1219
187ad3a95a3SSteve Yin #define VCLEVENT_LISTBOX_TREEFOCUS	            1220
188ad3a95a3SSteve Yin #define VCLEVENT_LISTBOX_TREESELECT	            1221
189ad3a95a3SSteve Yin #define VCLEVENT_EDIT_CARETCHANGED  1222
190ad3a95a3SSteve Yin #define VCLEVENT_COMBOBOX_UPDATEVALUE  1223
191ad3a95a3SSteve Yin 
192ad3a95a3SSteve Yin #define VCLEVENT_LISTBOX_FOCUS             1224
193ad3a95a3SSteve Yin #define VCLEVENT_LISTBOX_CLEAR             1225
194cdf0e10cSrcweir // DockingWindow
195ad3a95a3SSteve Yin #define VCLEVENT_WINDOW_STARTDOCKING            1227    // pData = DockingData
196ad3a95a3SSteve Yin #define VCLEVENT_WINDOW_DOCKING                 1228
197ad3a95a3SSteve Yin #define VCLEVENT_WINDOW_ENDDOCKING              1229    // pData = EndDockingData
198ad3a95a3SSteve Yin #define VCLEVENT_WINDOW_PREPARETOGGLEFLOATING   1230    // pData = sal_Bool
199ad3a95a3SSteve Yin #define VCLEVENT_WINDOW_TOGGLEFLOATING          1231
200ad3a95a3SSteve Yin #define VCLEVENT_WINDOW_ENDPOPUPMODE            1232    // pData = EndPopupModeData
201ad3a95a3SSteve Yin 
202ad3a95a3SSteve Yin #define VCLEVENT_TOOLBOX_BUTTONSTATECHANGED     1233    // pData = itempos
203ad3a95a3SSteve Yin #define VCLEVENT_TABLECELL_NAMECHANGED          1234    // pData = struct(Entry, Column, oldText)
204ad3a95a3SSteve Yin #define VCLEVENT_TABLEROW_SELECT				1235
205ad3a95a3SSteve Yin #define VCLEVENT_LISTBOX_STATEUPDATE			1236
206cdf0e10cSrcweir class VCL_DLLPUBLIC VclSimpleEvent
207cdf0e10cSrcweir {
208cdf0e10cSrcweir private:
209cdf0e10cSrcweir     sal_uLong nId;
210cdf0e10cSrcweir 
211cdf0e10cSrcweir public:
VclSimpleEvent(sal_uLong n)212cdf0e10cSrcweir     VclSimpleEvent( sal_uLong n ) { nId = n; }
213cdf0e10cSrcweir 	TYPEINFO();
214cdf0e10cSrcweir 
GetId() const215cdf0e10cSrcweir 	sal_uLong GetId() const { return nId; }
216cdf0e10cSrcweir };
217cdf0e10cSrcweir 
218cdf0e10cSrcweir class VCL_DLLPUBLIC VclWindowEvent : public VclSimpleEvent
219cdf0e10cSrcweir {
220cdf0e10cSrcweir private:
221cdf0e10cSrcweir     Window* pWindow;
222cdf0e10cSrcweir     void*   pData;
223cdf0e10cSrcweir 
224cdf0e10cSrcweir public:
VclWindowEvent(Window * pWin,sal_uLong n,void * pDat=NULL)225cdf0e10cSrcweir     VclWindowEvent( Window* pWin, sal_uLong n, void* pDat = NULL ) : VclSimpleEvent(n) { pWindow = pWin; pData = pDat; }
226cdf0e10cSrcweir 	TYPEINFO();
227cdf0e10cSrcweir 
GetWindow() const228cdf0e10cSrcweir 	Window* GetWindow() const { return pWindow; }
GetData() const229cdf0e10cSrcweir 	void*   GetData() const { return pData; }
230cdf0e10cSrcweir };
231cdf0e10cSrcweir 
232cdf0e10cSrcweir /*
233cdf0e10cSrcweir class VclMouseEvent : public VclWindowEvent
234cdf0e10cSrcweir {
235cdf0e10cSrcweir private:
236cdf0e10cSrcweir     MouseEvent aEvent;
237cdf0e10cSrcweir 
238cdf0e10cSrcweir public:
239cdf0e10cSrcweir     VclMouseEvent( Window* pWin, sal_uLong n, const MouseEvent& rEvent ) : VclWindowEvent( pWin, n ), aEvent(rEvent) { ; }
240cdf0e10cSrcweir 	TYPEINFO();
241cdf0e10cSrcweir 
242cdf0e10cSrcweir 	const MouseEvent& GetEvent() const { return aEvent; }
243cdf0e10cSrcweir };
244cdf0e10cSrcweir */
245cdf0e10cSrcweir 
246cdf0e10cSrcweir class VCL_DLLPUBLIC VclMenuEvent : public VclSimpleEvent
247cdf0e10cSrcweir {
248cdf0e10cSrcweir private:
249cdf0e10cSrcweir     Menu* pMenu;
250cdf0e10cSrcweir     sal_uInt16 mnPos;
251cdf0e10cSrcweir 
252cdf0e10cSrcweir public:
VclMenuEvent(Menu * pM,sal_uLong n,sal_uInt16 nPos)253cdf0e10cSrcweir     VclMenuEvent( Menu* pM, sal_uLong n, sal_uInt16 nPos ) : VclSimpleEvent(n) { pMenu = pM; mnPos = nPos; }
254cdf0e10cSrcweir 	TYPEINFO();
255cdf0e10cSrcweir 
GetMenu() const256cdf0e10cSrcweir 	Menu* GetMenu() const { return pMenu; }
GetItemPos() const257cdf0e10cSrcweir     sal_uInt16 GetItemPos() const { return mnPos; }
258cdf0e10cSrcweir };
259cdf0e10cSrcweir 
260cdf0e10cSrcweir class VCL_DLLPUBLIC VclAccessibleEvent: public VclSimpleEvent
261cdf0e10cSrcweir {
262cdf0e10cSrcweir public:
263cdf0e10cSrcweir     VclAccessibleEvent( sal_uLong n, const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxAccessible );
264cdf0e10cSrcweir     virtual ~VclAccessibleEvent();
265cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetAccessible() const;
266cdf0e10cSrcweir 
267cdf0e10cSrcweir private:
268cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxAccessible;
269cdf0e10cSrcweir };
270cdf0e10cSrcweir 
271cdf0e10cSrcweir class VCL_DLLPUBLIC VclEventListeners : public std::list<Link>
272cdf0e10cSrcweir {
273cdf0e10cSrcweir public:
274cdf0e10cSrcweir     void Call( VclSimpleEvent* pEvent ) const;
275cdf0e10cSrcweir 
276cdf0e10cSrcweir     // stops notifying when any handler has processed the event
277cdf0e10cSrcweir     // and returns sal_True in that case
278cdf0e10cSrcweir     // a handler must return sal_True to signal that it has processed the event
279cdf0e10cSrcweir     sal_Bool Process( VclSimpleEvent* pEvent ) const;
280cdf0e10cSrcweir };
281cdf0e10cSrcweir 
282cdf0e10cSrcweir class VCL_DLLPUBLIC VclEventListeners2 : public vcl::DeletionNotifier
283cdf0e10cSrcweir {
284cdf0e10cSrcweir     std::list< Link >                               m_aListeners;
285cdf0e10cSrcweir 
286cdf0e10cSrcweir     struct ListenerIt
287cdf0e10cSrcweir     {
288cdf0e10cSrcweir         std::list< Link >::iterator     m_aIt;
289cdf0e10cSrcweir         bool                            m_bWasInvalidated;
290cdf0e10cSrcweir 
ListenerItVclEventListeners2::ListenerIt291cdf0e10cSrcweir         ListenerIt(const std::list<Link>::iterator& rIt)
292cdf0e10cSrcweir             : m_aIt(rIt)
293cdf0e10cSrcweir             , m_bWasInvalidated( false )
294cdf0e10cSrcweir         {}
295cdf0e10cSrcweir     };
296cdf0e10cSrcweir 
297cdf0e10cSrcweir     std::vector< ListenerIt >      m_aIterators;
298cdf0e10cSrcweir 
299cdf0e10cSrcweir 
300cdf0e10cSrcweir public:
301cdf0e10cSrcweir     VclEventListeners2();
302cdf0e10cSrcweir     ~VclEventListeners2();
303cdf0e10cSrcweir 
304cdf0e10cSrcweir     void addListener( const Link& );
305cdf0e10cSrcweir     void removeListener( const Link& );
306cdf0e10cSrcweir 
307cdf0e10cSrcweir     void callListeners( VclSimpleEvent* );
308cdf0e10cSrcweir };
309cdf0e10cSrcweir 
310cdf0e10cSrcweir #endif // _VCL_VCLEVENT_HXX
311