12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #include <precomp.h>
- #include "deactivatemgr.h"
- #define FAKE_PTR (ifc_window *)-1
- #define BYPASS_DEACTIVATE_ATOM "BYPASS_DEACTIVATE_MGR"
- int AppDeactivationMgr::is_deactivation_allowed(ifc_window *w) {
- #ifdef WIN32
- if (FindAtomA(BYPASS_DEACTIVATE_ATOM) != NULL) return 1; // so people don't _need_ an api pointer to bypass us, however, if you can please call api->appdeactivation_setbypass
- #else
- DebugString( "portme -- AppDeactivationMgr::is_deactivation_allowed\n");
- #endif
- return list.getNumItems() == 0;
- }
- void AppDeactivationMgr::push_disallow(ifc_window *w) {
- if (w == NULL)
- w = FAKE_PTR;
- list.addItem(w);
- }
- void AppDeactivationMgr::pop_disallow(ifc_window *w) {
- if (w == NULL)
- w = FAKE_PTR;
- if (list.getNumItems() == 0) {
- return;
- }
- while (list.getNumItems()>0) {
- int p = list.searchItem(w);
- if (p >= 0)
- list.removeByPos(p);
- else break;
- }
- }
- void AppDeactivationMgr::setbypass(int i) {
- #ifdef WIN32
- if (i) {
- ATOM a = FindAtomA(BYPASS_DEACTIVATE_ATOM);
- if (a != NULL) return;
- AddAtomA(BYPASS_DEACTIVATE_ATOM);
- } else {
- ATOM a = FindAtomA(BYPASS_DEACTIVATE_ATOM);
- if (a != NULL) {
- DeleteAtom(a);
- return;
- }
- }
- #else
- DebugString( "portme -- AppDeactivationMgr::setbypass\n" );
- #endif
- }
- PtrList<ifc_window> AppDeactivationMgr::list;
|