diff options
-rw-r--r-- | embed/xulrunner/utils/Makefile.am | 2 | ||||
-rw-r--r-- | embed/xulrunner/utils/ggeAutoSurvivalArea.cpp | 42 | ||||
-rw-r--r-- | embed/xulrunner/utils/ggeAutoSurvivalArea.h | 44 |
3 files changed, 88 insertions, 0 deletions
diff --git a/embed/xulrunner/utils/Makefile.am b/embed/xulrunner/utils/Makefile.am index ef773f3fb..781735962 100644 --- a/embed/xulrunner/utils/Makefile.am +++ b/embed/xulrunner/utils/Makefile.am @@ -13,6 +13,8 @@ libephyxulrunnerutils_la_SOURCES = \ EphyUtils.h \ GeckoUtils.cpp \ GeckoUtils.h \ + ggeAutoSurvivalArea.cpp \ + ggeAutoSurvivalArea.h \ $(NULL) libephyxulrunnerutils_la_CPPFLAGS = \ diff --git a/embed/xulrunner/utils/ggeAutoSurvivalArea.cpp b/embed/xulrunner/utils/ggeAutoSurvivalArea.cpp new file mode 100644 index 000000000..0344edabe --- /dev/null +++ b/embed/xulrunner/utils/ggeAutoSurvivalArea.cpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2007 Christian Persch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include <xpcom-config.h> +#include <config.h> + +#include <nsIAppStartup.h> +#include <nsIServiceManager.h> +#include <nsServiceManagerUtils.h> +#include <nsXPFEComponentsCID.h> + +#include "ggeAutoSurvivalArea.h" + +ggeAutoSurvivalArea::ggeAutoSurvivalArea() + : mAppStartup (do_GetService (NS_APPSTARTUP_CONTRACTID)) +{ + if (mAppStartup) { + mAppStartup->EnterLastWindowClosingSurvivalArea (); + } +} + +ggeAutoSurvivalArea::~ggeAutoSurvivalArea() +{ + if (mAppStartup) { + mAppStartup->ExitLastWindowClosingSurvivalArea (); + } +} diff --git a/embed/xulrunner/utils/ggeAutoSurvivalArea.h b/embed/xulrunner/utils/ggeAutoSurvivalArea.h new file mode 100644 index 000000000..10b9a07e5 --- /dev/null +++ b/embed/xulrunner/utils/ggeAutoSurvivalArea.h @@ -0,0 +1,44 @@ +/* + * Copyright © 2007 Christian Persch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef GGE_AUTOSURVIVALAREA_H +#define GGE_AUTOSURVIVALAREA_H + +#include <nsCOMPtr.h> + +class nsIAppStartup; + +/** + * ggeAutoSurvivalArea: + * + * A helper class that has to be used whenever a window being open + * should prevent the application from shutting down. (Only needed for + * non-DOM windows.) + * Use on the stack or on the heap. + */ + +class ggeAutoSurvivalArea { + public: + ggeAutoSurvivalArea (); + ~ggeAutoSurvivalArea (); + + private: + nsCOMPtr<nsIAppStartup> mAppStartup; +}; + +#endif /* !GGE_AUTOSURVIVALAREA_H */ |