diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | embed/mozilla/EphyPromptService.cpp | 58 | ||||
-rw-r--r-- | embed/mozilla/EphyPromptService.h | 12 | ||||
-rw-r--r-- | embed/mozilla/MozRegisterComponents.cpp | 8 | ||||
-rw-r--r-- | m4/gecko.m4 | 16 |
5 files changed, 103 insertions, 8 deletions
@@ -1,5 +1,22 @@ 2006-02-02 Christian Persch <chpe@cvs.gnome.org> + * m4/gecko.m4: + + Add GECKO_CHECK_HEADERS, wrapping AC_CHECK_HEADERS. + + * configure.ac: + + Simplify some header checks with GECKO_CHECK_HEADERS. + Check for nsINonBlockingAlertService.h. + + * embed/mozilla/EphyPromptService.cpp: + * embed/mozilla/EphyPromptService.h: + * embed/mozilla/MozRegisterComponents.cpp: + + Implement nsINonBlockingAlertService. + +2006-02-02 Christian Persch <chpe@cvs.gnome.org> + * embed/downloader-view.c: * embed/downloader-view.h: * embed/ephy-embed-shell.c: diff --git a/embed/mozilla/EphyPromptService.cpp b/embed/mozilla/EphyPromptService.cpp index 265dd9f31..6b6abf382 100644 --- a/embed/mozilla/EphyPromptService.cpp +++ b/embed/mozilla/EphyPromptService.cpp @@ -86,6 +86,7 @@ public: void GetSelected (PRInt32*); PRInt32 Run (PRBool * = nsnull); + static void ShowAndForget (Prompter*); PRBool IsCalledFromScript (); void PerformScriptAbortion (); @@ -515,6 +516,35 @@ Prompter::Run (PRBool *aSuccess) return mResponse; } +static void +DeletePrompter (gpointer aPromptPtr, + GObject *aZombie) +{ + Prompter *prompt = NS_STATIC_CAST (Prompter*, aPromptPtr); + + delete prompt; +} + +static void +DestroyOnResonse (GtkWidget *aDialog, + int aResponse, + gpointer aUserData) +{ + gtk_widget_destroy (aDialog); +} + +/* static */ void +Prompter::ShowAndForget (Prompter *aPrompt) +{ + g_signal_connect (aPrompt->mDialog, "response", + G_CALLBACK (DestroyOnResonse), NULL); + g_object_weak_ref (G_OBJECT (aPrompt->mDialog), + (GWeakNotify) DeletePrompter, + NS_STATIC_CAST (gpointer, aPrompt)); + + gtk_widget_show (GTK_WIDGET (aPrompt->mDialog)); +} + PRBool Prompter::IsCalledFromScript() { @@ -604,7 +634,14 @@ Prompter::ConvertAndEscapeButtonText(const PRUnichar *aText, } /* FIXME: needs THREADSAFE? */ -NS_IMPL_ISUPPORTS1 (EphyPromptService, nsIPromptService) +#if HAVE_NSINONBLOCKINGALERTSERVICE_H +NS_IMPL_ISUPPORTS2 (EphyPromptService, + nsIPromptService, + nsINonBlockingAlertService) +#else +NS_IMPL_ISUPPORTS1 (EphyPromptService, + nsIPromptService) +#endif EphyPromptService::EphyPromptService() { @@ -822,3 +859,22 @@ EphyPromptService::Select (nsIDOMWindow *aParent, return RETVAL(response); } + +#if HAVE_NSINONBLOCKINGALERTSERVICE_H + +/* showNonBlockingAlert (in nsIDOMWindow aParent, in wstring aDialogTitle, in wstring aText); */ +NS_IMETHODIMP +EphyPromptService::ShowNonBlockingAlert (nsIDOMWindow *aParent, + const PRUnichar *aDialogTitle, + const PRUnichar *aText) +{ + Prompter *prompt = new Prompter (GTK_STOCK_DIALOG_INFO, aParent, aDialogTitle, aText); + if (!prompt) return NS_ERROR_OUT_OF_MEMORY; + + prompt->AddStockButton (GTK_STOCK_OK, GTK_RESPONSE_ACCEPT); + prompt->ShowAndForget (); + + return NS_OK; +} + +#endif /* HAVE_NSINONBLOCKINGALERTSERVICE_H */ diff --git a/embed/mozilla/EphyPromptService.h b/embed/mozilla/EphyPromptService.h index 0eb100d76..915ecf947 100644 --- a/embed/mozilla/EphyPromptService.h +++ b/embed/mozilla/EphyPromptService.h @@ -23,6 +23,10 @@ #include <nsIPromptService.h> +#if HAVE_NSINONBLOCKINGALERTSERVICE_H +#include <nsINonBlockingAlertService.h> +#endif + #define EPHY_PROMPT_SERVICE_IID \ { /* 6e8b90d4-78a6-41c5-98da-b1559a40d30d */ \ 0x6e8b90d4, 0x78a6, 0x41c5, \ @@ -31,11 +35,17 @@ #define EPHY_PROMPT_SERVICE_CLASSNAME "Epiphany Prompt Service" class EphyPromptService : public nsIPromptService +#if HAVE_NSINONBLOCKINGALERTSERVICE_H + , public nsINonBlockingAlertService +#endif { public: NS_DECL_ISUPPORTS NS_DECL_NSIPROMPTSERVICE - +#if HAVE_NSINONBLOCKINGALERTSERVICE_H + NS_DECL_NSINONBLOCKINALERTSERVICE +#endif + EphyPromptService(); virtual ~EphyPromptService(); }; diff --git a/embed/mozilla/MozRegisterComponents.cpp b/embed/mozilla/MozRegisterComponents.cpp index a7fe6d08b..03867c699 100644 --- a/embed/mozilla/MozRegisterComponents.cpp +++ b/embed/mozilla/MozRegisterComponents.cpp @@ -229,6 +229,14 @@ static const nsModuleComponentInfo sAppComps[] = { "@mozilla.org/embedcomp/prompt-service;1", EphyPromptServiceConstructor }, +#ifdef HAVE_NSINONBLOCKINGALERTSERVICE_H + { + EPHY_PROMPT_SERVICE_CLASSNAME, + EPHY_PROMPT_SERVICE_IID, + "@mozilla.org/embedcomp/nbalert-service;1", + EphyPromptServiceConstructor + }, +#endif /* HAVE_NSINONBLOCKINGALERTSERVICE_H */ }; #if defined(HAVE_MOZILLA_PSM) && !defined(HAVE_GECKO_1_8) diff --git a/m4/gecko.m4 b/m4/gecko.m4 index 22f95151f..0611b024d 100644 --- a/m4/gecko.m4 +++ b/m4/gecko.m4 @@ -283,7 +283,7 @@ $1[]_VERSION_MINOR=$gecko_cv_gecko_version_minor # *************************************************************************** # *************************************************************************** -# GECKO_DISPATCH([MACRO], [HEADERS], ...) +# GECKO_DISPATCH([MACRO], [INCLUDEDIRS], ...) m4_define([GECKO_DISPATCH], [ @@ -301,15 +301,15 @@ CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS -I$_GECKO_INCLUDE_ROOT $($PKG_CONFIG CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-xpcom)" LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS $($PKG_CONFIG --libs ${gecko_cv_gecko}-xpcom) -Wl,--rpath=$_GECKO_HOME" -_GECKO_DISPATCH_HEADERS="$2" +_GECKO_DISPATCH_INCLUDEDIRS="$2" # Sigh Gentoo has a rubbish header layout # http://bugs.gentoo.org/show_bug.cgi?id=100804 # Mind you, it's useful to be able to test against uninstalled mozilla builds... -_GECKO_DISPATCH_HEADERS="$_GECKO_DISPATCH_HEADERS necko dom" +_GECKO_DISPATCH_INCLUDEDIRS="$_GECKO_DISPATCH_INCLUDEDIRS dom necko pref" # Now add them to CPPFLAGS -for i in $_GECKO_DISPATCH_HEADERS; do +for i in $_GECKO_DISPATCH_INCLUDEDIRS; do CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT/$i" done @@ -327,11 +327,15 @@ AC_LANG_POP([C++]) # *************************************************************************** # *************************************************************************** -# GECKO_COMPILE_IFELSE(HEADERS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# GECKO_CHECK_HEADERS(INCLUDEDIRS, HEADERS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [INCLUDES]) + +AC_DEFUN([GECKO_CHECK_HEADERS],[GECKO_DISPATCH([AC_CHECK_HEADERS],$@)]) + +# GECKO_COMPILE_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) AC_DEFUN([GECKO_COMPILE_IFELSE],[GECKO_DISPATCH([AC_COMPILE_IFELSE],$@)]) -# GECKO_RUN_IFELSE(HEADERS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# GECKO_RUN_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) AC_DEFUN([GECKO_RUN_IFELSE],[GECKO_DISPATCH([AC_RUN_IFELSE],$@)]) |