aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-shell.c
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2003-11-14 01:28:04 +0800
committerMarco Pesenti Gritti <marco@src.gnome.org>2003-11-14 01:28:04 +0800
commit62caa3e6eec7b6109703071179ed260aac507db7 (patch)
tree9ccf963ec55954e7adab7b4a68eac776d9114ca1 /src/ephy-shell.c
parent00c81d309184a49f6e711c4ce0b61ae8f94b42ae (diff)
downloadgsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar
gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.gz
gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.bz2
gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.lz
gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.xz
gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.zst
gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.zip
Rework shell services initialization so that it happen either on every
2003-11-13 Marco Pesenti Gritti <marco@gnome.org> * embed/mozilla/mozilla-notifiers.cpp: * src/ephy-main.c: (main): * src/ephy-shell.c: (ephy_shell_init), (ephy_shell_startup), (ephy_shell_finalize), (ephy_shell_get_session), (ephy_shell_get_extensions_manager): * src/ephy-window.c: (ensure_default_icon), (ephy_window_init): Rework shell services initialization so that it happen either on every instance, before the automation stuff is used, either when they are requested. This appear to fix the crash with two instances runned simultaneously. (Christian I'm not quite sure this is ok for plugins manager, if there are problems let me know.)
Diffstat (limited to 'src/ephy-shell.c')
-rw-r--r--src/ephy-shell.c98
1 files changed, 23 insertions, 75 deletions
diff --git a/src/ephy-shell.c b/src/ephy-shell.c
index 6cdb6700f..a661ceceb 100644
--- a/src/ephy-shell.c
+++ b/src/ephy-shell.c
@@ -23,15 +23,12 @@
#endif
#include "ephy-shell.h"
-#include "ephy-state.h"
#include "ephy-embed-shell.h"
#include "eel-gconf-extensions.h"
#include "ephy-prefs.h"
+#include "ephy-file-helpers.h"
#include "ephy-favicon-cache.h"
-#include "ephy-stock-icons.h"
#include "ephy-window.h"
-#include "ephy-file-helpers.h"
-#include "ephy-thread-helpers.h"
#include "ephy-bookmarks-import.h"
#include "ephy-bookmarks-editor.h"
#include "ephy-history-window.h"
@@ -51,9 +48,6 @@
#include <gtk/gtkmessagedialog.h>
#include <dirent.h>
#include <unistd.h>
-#include <libgnomevfs/gnome-vfs-init.h>
-#include <gtk/gtkicontheme.h>
-#include <glade/glade-init.h>
#ifdef ENABLE_NAUTILUS_VIEW
@@ -170,6 +164,7 @@ ephy_shell_init (EphyShell *gs)
gs->priv->history_window = NULL;
gs->priv->toolbars_model = NULL;
gs->priv->fs_toolbars_model = NULL;
+ gs->priv->extensions_manager = NULL;
ephy_shell = gs;
g_object_add_weak_pointer (G_OBJECT(ephy_shell),
@@ -180,68 +175,6 @@ ephy_shell_init (EphyShell *gs)
}
static void
-init_services (EphyShell *gs, GError **error)
-{
- GtkIconTheme *icon_theme;
- GtkIconInfo *icon_info;
- const char *icon_file;
- EphyEmbedSingle *single;
-
- gnome_vfs_init ();
- glade_gnome_init ();
- ephy_debug_init ();
- ephy_thread_helpers_init ();
- ephy_file_helpers_init ();
- ephy_stock_icons_init ();
- ephy_ensure_dir_exists (ephy_dot_dir ());
-
- /* preload the prefs */
- /* it also enables notifiers support */
- eel_gconf_monitor_add ("/apps/epiphany");
- eel_gconf_monitor_add ("/system/proxy");
-
- /* This ensures mozilla is fired up */
- single = ephy_embed_shell_get_embed_single (EPHY_EMBED_SHELL (gs));
- if (single == NULL)
- {
- g_set_error (error, EPHY_SHELL_ERROR,
- EPHY_SHELL_ERROR_MOZILLA_REG_FAILED,
- _("Epiphany can't be used now. "
- "Mozilla initialization failed. Check your "
- "MOZILLA_FIVE_HOME environmental variable."));
- }
-
- /* FIXME listen on icon changes */
- /* FIXME MultiHead: icon theme is per-display, not global */
- icon_theme = gtk_icon_theme_get_default ();
- icon_info = gtk_icon_theme_lookup_icon (icon_theme, "web-browser", -1, 0);
-
- if (icon_info)
- {
-
- icon_file = gtk_icon_info_get_filename (icon_info);
- if (icon_file)
- {
- gtk_window_set_default_icon_from_file (icon_file, NULL);
- }
-
- gtk_icon_info_free (icon_info);
- }
- else
- {
- g_warning ("Web browser gnome icon not found");
- }
-
- /* Instantiate extensions manager; this will load the extensions */
- gs->priv->extensions_manager = ephy_extensions_manager_new ();
-
- /* Instantiate internal extensions */
- gs->priv->session =
- EPHY_SESSION (ephy_extensions_manager_add
- (gs->priv->extensions_manager, EPHY_TYPE_SESSION));
-}
-
-static void
open_urls (GNOME_EphyAutomation automation,
const char **args, CORBA_Environment *ev,
gboolean new_tab, gboolean existing_window,
@@ -278,6 +211,8 @@ ephy_shell_startup (EphyShell *gs,
GNOME_EphyAutomation automation;
Bonobo_RegistrationResult result;
+ ephy_ensure_dir_exists (ephy_dot_dir ());
+
#ifdef ENABLE_NAUTILUS_VIEW
ephy_nautilus_view_init_factory (gs);
#endif
@@ -290,8 +225,6 @@ ephy_shell_startup (EphyShell *gs,
switch (result)
{
case Bonobo_ACTIVATION_REG_SUCCESS:
- init_services (gs, error);
- if (*error != NULL) return TRUE;
break;
case Bonobo_ACTIVATION_REG_ALREADY_ACTIVE:
break;
@@ -423,10 +356,6 @@ ephy_shell_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
- ephy_state_save ();
- ephy_file_helpers_shutdown ();
- gnome_vfs_shutdown ();
-
if (gs->priv->automation_factory)
{
bonobo_object_unref (gs->priv->automation_factory);
@@ -613,6 +542,19 @@ ephy_shell_get_session (EphyShell *gs)
{
g_return_val_if_fail (EPHY_IS_SHELL (gs), NULL);
+ if (gs->priv->session == NULL)
+ {
+ EphyExtensionsManager *manager;
+
+ manager = EPHY_EXTENSIONS_MANAGER
+ (ephy_shell_get_extensions_manager (gs));
+
+ /* Instantiate internal extensions */
+ gs->priv->session =
+ EPHY_SESSION (ephy_extensions_manager_add
+ (manager, EPHY_TYPE_SESSION));
+ }
+
return G_OBJECT (gs->priv->session);
}
@@ -667,6 +609,12 @@ ephy_shell_get_extensions_manager (EphyShell *es)
{
g_return_val_if_fail (EPHY_IS_SHELL (es), NULL);
+ if (es->priv->extensions_manager == NULL)
+ {
+ /* Instantiate extensions manager; this will load the extensions */
+ es->priv->extensions_manager = ephy_extensions_manager_new ();
+ }
+
return G_OBJECT (es->priv->extensions_manager);
}