#ifndef __POPUPEXITCHECKER_H #define __POPUPEXITCHECKER_H #include #include class ifc_window; class PopupExitCallback; class PopupExitCallbackEntry { public: PopupExitCallbackEntry(PopupExitCallback *_cb, ifc_window *_watched, api_dependent *_cbd, api_dependent *_wd) : cb(_cb), watched(_watched), cbd(_cbd), wd(_wd) {} virtual ~PopupExitCallbackEntry() {} PopupExitCallback *cb; ifc_window *watched; api_dependent *cbd; api_dependent *wd; }; class PopupExitChecker : public DependentViewerI { public: PopupExitChecker(); virtual ~PopupExitChecker(); void registerCallback(PopupExitCallback *cb, ifc_window *watched); void deregisterCallback(PopupExitCallback *cb); #undef check int check(ifc_window *w); void signal(); int isGrandChildren(ifc_window *parent, ifc_window *child); // recursive PtrList watchers; virtual int viewer_onItemDeleted(api_dependent *item); }; #endif