-// Copyright 2005 Ben Hutchings <ben@decadent.org.uk>.
+// Copyright 2005-8 Ben Hutchings <ben@decadent.org.uk>.
// See the file "COPYING" for licence details.
#include "browser_widget.hpp"
#include <cassert>
+#include <cstring>
+#include <limits.h>
+
+#include "wchar_t_short.h"
#include <gtkmozembed_internal.h>
+#if MOZ_VERSION_MAJOR == 1 && MOZ_VERSION_MINOR == 9
+#include <gtkmozembed_glue.cpp>
+#endif
+#include "wchar_t_default.h"
+
+#include "xpcom_support.hpp"
+
+using xpcom_support::check;
browser_widget::browser_widget()
: Gtk::Bin(GTK_BIN(gtk_moz_embed_new()))
browser_widget::initialiser::initialiser()
{
+#if MOZ_VERSION_MAJOR == 1 && MOZ_VERSION_MINOR == 9
+ static const GREVersionRange gre_versions = {
+#if MOZ_VERSION_MICRO == 0
+ "1.9a", PR_TRUE,
+ "1.9.1", PR_FALSE
+#elif MOZ_VERSION_MICRO == 1
+ "1.9.1", PR_TRUE,
+ "1.9.2", PR_FALSE
+#else
+#error "version is unsupported, but you could try continuing the pattern above"
+#endif
+ };
+ char path[PATH_MAX];
+ check(GRE_GetGREPathWithProperties(&gre_versions, 1, 0, 0,
+ path, sizeof(path)));
+
+ check(XPCOMGlueStartup(path));
+ check(GTKEmbedGlueStartup());
+ check(GTKEmbedGlueStartupInternal());
+
+ char * last_slash = std::strrchr(path, '/');
+ if (last_slash != path)
+ *last_slash = '\0';
+ gtk_moz_embed_set_path(path);
+#else
gtk_moz_embed_set_comp_path(MOZ_LIB_DIR);
+#endif
+
gtk_moz_embed_push_startup();
wrap_register(gtk_moz_embed_get_type(), wrap_new);
browser_widget::initialiser::~initialiser()
{
gtk_moz_embed_pop_startup();
+
+#if MOZ_VERSION_MAJOR == 1 && MOZ_VERSION_MINOR == 9
+ XPCOMGlueShutdown();
+#endif
}
namespace Glib