aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog28
-rw-r--r--doc/reference/Makefile.am3
-rw-r--r--embed/Makefile.am6
-rw-r--r--embed/ephy-embed-factory.c80
-rw-r--r--embed/ephy-embed-factory.h32
-rw-r--r--embed/ephy-embed-persist.c8
-rw-r--r--embed/ephy-embed-persist.h2
-rw-r--r--embed/ephy-embed-popup-control.c7
-rw-r--r--embed/ephy-embed-shell.c4
-rw-r--r--embed/ephy-embed.c8
-rw-r--r--embed/ephy-embed.h2
-rw-r--r--embed/ephy-favicon-cache.c4
-rw-r--r--embed/mozilla/mozilla-embed-persist.cpp14
-rw-r--r--embed/mozilla/mozilla-embed-single.cpp6
-rw-r--r--embed/mozilla/mozilla-embed-single.h2
-rw-r--r--embed/mozilla/mozilla-embed.cpp17
-rw-r--r--src/Makefile.am2
-rw-r--r--src/ephy-nautilus-view.c9
-rw-r--r--src/ephy-tab.c8
-rw-r--r--src/popup-commands.c9
-rw-r--r--src/window-commands.c10
21 files changed, 208 insertions, 53 deletions
diff --git a/ChangeLog b/ChangeLog
index 007791f30..3084ae704 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2003-11-22 Marco Pesenti Gritti <marco@gnome.org>
+
+ * doc/reference/Makefile.am:
+ * embed/Makefile.am:
+ * embed/ephy-embed-persist.c: (ephy_embed_persist_save):
+ * embed/ephy-embed-persist.h:
+ * embed/ephy-embed-popup-control.c: (save_url),
+ (embed_popup_set_image_as_background_cmd):
+ * embed/ephy-embed-shell.c: (ephy_embed_shell_get_embed_single):
+ * embed/ephy-embed.c:
+ * embed/ephy-embed.h:
+ * embed/ephy-favicon-cache.c: (ephy_favicon_cache_download):
+ * embed/mozilla/mozilla-embed-persist.cpp:
+ * embed/mozilla/mozilla-embed-single.cpp:
+ * embed/mozilla/mozilla-embed-single.h:
+ * embed/mozilla/mozilla-embed.cpp:
+ * src/Makefile.am:
+ * src/ephy-nautilus-view.c: (ephy_nautilus_view_instance_init):
+ * src/ephy-tab.c: (ephy_tab_init):
+ * src/popup-commands.c: (save_property_url),
+ (popup_cmd_set_image_as_background):
+ * src/window-commands.c: (window_cmd_file_save_as),
+ (save_temp_source):
+
+ Add a factory to create embed objects and use it.
+ Deal with dependency of mozilla-embed and mozilla-embed-persist
+ on mozilla-embed-single internally.
+
2003-11-22 Christian Persch <chpe@cvs.gnome.org>
* embed/mozilla/mozilla-embed-single.cpp:
diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am
index 148e4d299..9c531717d 100644
--- a/doc/reference/Makefile.am
+++ b/doc/reference/Makefile.am
@@ -168,8 +168,9 @@ GTKDOC_CFLAGS = -I$(top_srcdir)/src \
GTKDOC_LIBS = \
$(top_builddir)/src/libephymain.la \
$(top_builddir)/src/bookmarks/libephybookmarks.la \
- $(top_builddir)/embed/libephyembed.la \
+ $(top_builddir)/embed/libephyembedfactory.la \
$(top_builddir)/embed/mozilla/libephymozillaembed.la \
+ $(top_builddir)/embed/libephyembed.la \
$(top_builddir)/lib/widgets/libephywidgets.la \
$(top_builddir)/lib/libephymisc.la \
$(top_builddir)/lib/egg/libegg.la \
diff --git a/embed/Makefile.am b/embed/Makefile.am
index 511050639..e082e2c91 100644
--- a/embed/Makefile.am
+++ b/embed/Makefile.am
@@ -13,7 +13,7 @@ INCLUDES += -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED \
-DGNOME_DISABLE_DEPRECATED -DBONOBO_DISABLE_DEPRECATED $(WARN_CFLAGS)
endif
-noinst_LTLIBRARIES = libephyembed.la
+noinst_LTLIBRARIES = libephyembed.la libephyembedfactory.la
headerdir = $(prefix)/include/epiphany-@EPIPHANY_MAJOR@/epiphany
header_DATA = $(INST_H_FILES)
@@ -63,4 +63,6 @@ libephyembed_la_SOURCES = \
$(INST_H_FILES) \
$(NOINST_H_FILES)
-libephyembed_la_LIBADD = $(top_builddir)/embed/mozilla/libephymozillaembed.la
+libephyembedfactory_la_SOURCES = \
+ ephy-embed-factory.c \
+ ephy-embed-factory.h
diff --git a/embed/ephy-embed-factory.c b/embed/ephy-embed-factory.c
new file mode 100644
index 000000000..74dfd4853
--- /dev/null
+++ b/embed/ephy-embed-factory.c
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2000-2003 Marco Pesenti Gritti
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU 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 "ephy-embed-factory.h"
+#include "mozilla-embed.h"
+#include "mozilla-embed-persist.h"
+#include "mozilla-embed-single.h"
+
+#include <string.h>
+
+typedef enum
+{
+ EPHY_EMBED_OBJECT,
+ EPHY_EMBED_PERSIST_OBJECT,
+ EPHY_EMBED_SINGLE_OBJECT
+} EmbedObjectType;
+
+static EmbedObjectType
+type_from_id (const char *object_id)
+{
+ EmbedObjectType result = 0;
+
+ if (strcmp (object_id, "EphyEmbed") == 0)
+ {
+ result = EPHY_EMBED_OBJECT;
+ }
+ else if (strcmp (object_id, "EphyEmbedPersist") == 0)
+ {
+ result = EPHY_EMBED_PERSIST_OBJECT;
+ }
+ else if (strcmp (object_id, "EphyEmbedSingle") == 0)
+ {
+ result = EPHY_EMBED_SINGLE_OBJECT;
+ }
+ else
+ {
+ g_assert_not_reached ();
+ }
+
+ return result;
+}
+
+GObject *
+ephy_embed_factory_new_object (const char *object_id)
+{
+ GObject *object;
+
+ switch (type_from_id (object_id))
+ {
+ case EPHY_EMBED_OBJECT:
+ object = g_object_new (MOZILLA_TYPE_EMBED, NULL);
+ break;
+ case EPHY_EMBED_PERSIST_OBJECT:
+ object = g_object_new (MOZILLA_TYPE_EMBED_PERSIST, NULL);
+ break;
+ case EPHY_EMBED_SINGLE_OBJECT:
+ object = g_object_new (MOZILLA_TYPE_EMBED_SINGLE, NULL);
+ break;
+ default:
+ object = NULL;
+ }
+
+ return object;
+}
diff --git a/embed/ephy-embed-factory.h b/embed/ephy-embed-factory.h
new file mode 100644
index 000000000..c32c9cdff
--- /dev/null
+++ b/embed/ephy-embed-factory.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2000-2003 Marco Pesenti Gritti
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU 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 EPHY_EMBED_FACTORY_H
+#define EPHY_EMBED_FACTORY_H
+
+#include <glib-object.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+GObject *ephy_embed_factory_new_object (const char *object_id);
+
+G_END_DECLS
+
+#endif
diff --git a/embed/ephy-embed-persist.c b/embed/ephy-embed-persist.c
index 41224a38e..28cddbb2b 100644
--- a/embed/ephy-embed-persist.c
+++ b/embed/ephy-embed-persist.c
@@ -435,11 +435,3 @@ ephy_embed_persist_save (EphyEmbedPersist *persist)
EphyEmbedPersistClass *klass = EPHY_EMBED_PERSIST_GET_CLASS (persist);
return klass->save (persist);
}
-
-EphyEmbedPersist *
-ephy_embed_persist_new (EphyEmbed *embed)
-{
- return EPHY_EMBED_PERSIST (g_object_new (MOZILLA_TYPE_EMBED_PERSIST,
- "embed", embed,
- NULL));
-}
diff --git a/embed/ephy-embed-persist.h b/embed/ephy-embed-persist.h
index 1eadb5940..403544973 100644
--- a/embed/ephy-embed-persist.h
+++ b/embed/ephy-embed-persist.h
@@ -73,8 +73,6 @@ struct EphyEmbedPersistClass
GType ephy_embed_persist_get_type (void);
-EphyEmbedPersist *ephy_embed_persist_new (EphyEmbed *embed);
-
gboolean ephy_embed_persist_save (EphyEmbedPersist *persist);
void ephy_embed_persist_cancel (EphyEmbedPersist *persist);
diff --git a/embed/ephy-embed-popup-control.c b/embed/ephy-embed-popup-control.c
index 0fc39c767..157f13744 100644
--- a/embed/ephy-embed-popup-control.c
+++ b/embed/ephy-embed-popup-control.c
@@ -20,6 +20,7 @@
*/
#include "ephy-embed-popup-control.h"
+#include "ephy-embed-factory.h"
#include "ephy-embed-persist.h"
#include "ephy-bonobo-extensions.h"
#include "ephy-prefs.h"
@@ -488,7 +489,8 @@ save_url (EphyEmbedPopupControl *popup,
widget = GTK_WIDGET (popup->priv->embed);
window = gtk_widget_get_toplevel (widget);
- persist = ephy_embed_persist_new (popup->priv->embed);
+ persist = EPHY_EMBED_PERSIST
+ (ephy_embed_factory_new_object ("EphyEmbedPersist"));
ephy_embed_persist_set_fc_title (persist, title);
ephy_embed_persist_set_fc_parent (persist,GTK_WINDOW (window));
@@ -593,7 +595,8 @@ embed_popup_set_image_as_background_cmd (BonoboUIComponent *uic,
ephy_embed_event_get_property (info, "image", &value);
location = g_value_get_string (value);
- persist = ephy_embed_persist_new (popup->priv->embed);
+ persist = EPHY_EMBED_PERSIST
+ (ephy_embed_factory_new_object ("EphyEmbedPersist"));
base = g_path_get_basename (location);
dest = g_build_filename (ephy_dot_dir (), base, NULL);
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index e15aba244..9797751ea 100644
--- a/embed/ephy-embed-shell.c
+++ b/embed/ephy-embed-shell.c
@@ -21,6 +21,7 @@
#include <config.h>
#include "ephy-embed-shell.h"
+#include "ephy-embed-factory.h"
#include "ephy-marshal.h"
#include "ephy-file-helpers.h"
#include "ephy-favicon-cache.h"
@@ -209,7 +210,8 @@ ephy_embed_shell_get_embed_single (EphyEmbedShell *shell)
if (!shell->priv->embed_single)
{
- shell->priv->embed_single = mozilla_embed_single_new ();
+ shell->priv->embed_single = EPHY_EMBED_SINGLE
+ (ephy_embed_factory_new_object ("EphyEmbedSingle"));
}
return shell->priv->embed_single;
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c
index 78f137fe1..6028472fe 100644
--- a/embed/ephy-embed.c
+++ b/embed/ephy-embed.c
@@ -156,14 +156,6 @@ ephy_embed_base_init (gpointer g_class)
}
}
-EphyEmbed *
-ephy_embed_new (GObject *single)
-{
- g_assert (MOZILLA_IS_EMBED_SINGLE (single));
-
- return EPHY_EMBED (g_object_new (MOZILLA_TYPE_EMBED, NULL));
-}
-
void
ephy_embed_load_url (EphyEmbed *embed,
const char *url)
diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h
index e3e577c95..8d16da850 100644
--- a/embed/ephy-embed.h
+++ b/embed/ephy-embed.h
@@ -243,8 +243,6 @@ struct EphyEmbedClass
GType ephy_embed_get_type (void);
-EphyEmbed *ephy_embed_new (GObject *single);
-
/* Base */
void ephy_embed_load_url (EphyEmbed *embed,
const char *url);
diff --git a/embed/ephy-favicon-cache.c b/embed/ephy-favicon-cache.c
index 6c443773f..4da3ab2e8 100644
--- a/embed/ephy-favicon-cache.c
+++ b/embed/ephy-favicon-cache.c
@@ -25,6 +25,7 @@
#include <sys/stat.h>
#include "ephy-embed-persist.h"
+#include "ephy-embed-factory.h"
#include "ephy-file-helpers.h"
#include "ephy-favicon-cache.h"
#include "ephy-node-common.h"
@@ -354,7 +355,8 @@ ephy_favicon_cache_download (EphyFaviconCache *cache,
dest = g_build_filename (cache->priv->directory, filename, NULL);
- persist = ephy_embed_persist_new (NULL);
+ persist = EPHY_EMBED_PERSIST
+ (ephy_embed_factory_new_object ("EphyEmbedPersist"));
ephy_embed_persist_set_dest (persist, dest);
ephy_embed_persist_set_flags (persist, EMBED_PERSIST_NO_VIEW);
diff --git a/embed/mozilla/mozilla-embed-persist.cpp b/embed/mozilla/mozilla-embed-persist.cpp
index 166942139..2818bb3b4 100644
--- a/embed/mozilla/mozilla-embed-persist.cpp
+++ b/embed/mozilla/mozilla-embed-persist.cpp
@@ -24,6 +24,7 @@
#include "mozilla-embed-persist.h"
#include "mozilla-embed.h"
+#include "ephy-embed-shell.h"
#include "EphyBrowser.h"
#include "EphyHeaderSniffer.h"
#include "MozDownload.h"
@@ -85,7 +86,6 @@ static void
mozilla_embed_persist_init (MozillaEmbedPersist *persist)
{
persist->priv = MOZILLA_EMBED_PERSIST_GET_PRIVATE (persist);
-
persist->priv->mPersist = do_CreateInstance (NS_WEBBROWSERPERSIST_CONTRACTID);
}
@@ -264,6 +264,17 @@ impl_save (EphyEmbedPersist *persist)
return TRUE;
}
+static GObject *
+mozilla_embed_persist_constructor (GType type, guint n_construct_properties,
+ GObjectConstructParam *construct_params)
+{
+ /* we depend on single because of mozilla initialization */
+ ephy_embed_shell_get_embed_single (embed_shell);
+
+ return parent_class->constructor (type, n_construct_properties,
+ construct_params);
+}
+
static void
mozilla_embed_persist_class_init (MozillaEmbedPersistClass *klass)
{
@@ -273,6 +284,7 @@ mozilla_embed_persist_class_init (MozillaEmbedPersistClass *klass)
parent_class = (GObjectClass *) g_type_class_peek_parent (klass);
object_class->finalize = mozilla_embed_persist_finalize;
+ object_class->constructor = mozilla_embed_persist_constructor;
persist_class->save = impl_save;
persist_class->cancel = impl_cancel;
diff --git a/embed/mozilla/mozilla-embed-single.cpp b/embed/mozilla/mozilla-embed-single.cpp
index a3a88c465..3df1860ad 100644
--- a/embed/mozilla/mozilla-embed-single.cpp
+++ b/embed/mozilla/mozilla-embed-single.cpp
@@ -173,12 +173,6 @@ mozilla_embed_single_get_type (void)
return type;
}
-EphyEmbedSingle *
-mozilla_embed_single_new (void)
-{
- return EPHY_EMBED_SINGLE (g_object_new (MOZILLA_TYPE_EMBED_SINGLE, NULL));
-}
-
static gboolean
mozilla_set_default_prefs (MozillaEmbedSingle *mes)
{
diff --git a/embed/mozilla/mozilla-embed-single.h b/embed/mozilla/mozilla-embed-single.h
index 08732a837..3e47febeb 100644
--- a/embed/mozilla/mozilla-embed-single.h
+++ b/embed/mozilla/mozilla-embed-single.h
@@ -54,8 +54,6 @@ struct MozillaEmbedSingleClass
GType mozilla_embed_single_get_type (void);
-EphyEmbedSingle *mozilla_embed_single_new (void);
-
G_END_DECLS
#endif
diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp
index 497bc3753..1ebec735a 100644
--- a/embed/mozilla/mozilla-embed.cpp
+++ b/embed/mozilla/mozilla-embed.cpp
@@ -19,10 +19,9 @@
*/
#include "mozilla-embed.h"
-
+#include "ephy-embed-shell.h"
#include "ephy-command-manager.h"
#include "ephy-string.h"
-#include "ephy-embed.h"
#include "ephy-debug.h"
#include "MozillaPrivate.h"
@@ -247,6 +246,17 @@ mozilla_embed_realize (GtkWidget *widget)
}
}
+static GObject *
+mozilla_embed_constructor (GType type, guint n_construct_properties,
+ GObjectConstructParam *construct_params)
+{
+ /* we depend on single because of mozilla initialization */
+ ephy_embed_shell_get_embed_single (embed_shell);
+
+ return parent_class->constructor (type, n_construct_properties,
+ construct_params);
+}
+
static void
mozilla_embed_class_init (MozillaEmbedClass *klass)
{
@@ -256,6 +266,8 @@ mozilla_embed_class_init (MozillaEmbedClass *klass)
parent_class = (GObjectClass *) g_type_class_peek_parent (klass);
+ object_class->constructor = mozilla_embed_constructor;
+
gtk_object_class->destroy = mozilla_embed_destroy;
widget_class->realize = mozilla_embed_realize;
@@ -267,7 +279,6 @@ static void
mozilla_embed_init (MozillaEmbed *embed)
{
embed->priv = MOZILLA_EMBED_GET_PRIVATE (embed);
-
embed->priv->browser = new EphyBrowser ();
embed->priv->security_state = -1;
diff --git a/src/Makefile.am b/src/Makefile.am
index 936f76e20..e4c3c48be 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -121,6 +121,8 @@ epiphany_bin_SOURCES = ephy-main.c
epiphany_bin_LDADD = \
$(top_builddir)/src/libephymain.la \
$(top_builddir)/src/bookmarks/libephybookmarks.la \
+ $(top_builddir)/embed/libephyembedfactory.la \
+ $(top_builddir)/embed/mozilla/libephymozillaembed.la \
$(top_builddir)/embed/libephyembed.la \
$(top_builddir)/lib/widgets/libephywidgets.la \
$(top_builddir)/lib/libephymisc.la \
diff --git a/src/ephy-nautilus-view.c b/src/ephy-nautilus-view.c
index 14587ae3d..84351e0eb 100644
--- a/src/ephy-nautilus-view.c
+++ b/src/ephy-nautilus-view.c
@@ -27,6 +27,7 @@
#include <bonobo/bonobo-ui-util.h>
#include <string.h>
+#include "ephy-embed-factory.h"
#include "ephy-embed-popup-control.h"
#include "ephy-nautilus-view.h"
#include "ephy-embed.h"
@@ -157,17 +158,15 @@ ephy_nautilus_view_instance_init (EphyNautilusView *view)
{
GtkWidget *w;
EphyNautilusViewPrivate *p = EPHY_NAUTILUS_VIEW_GET_PRIVATE (view);
- EphyEmbedSingle *single;
float *levels;
gchar **names;
guint i;
BonoboControl *control;
- single = ephy_embed_shell_get_embed_single
- (EPHY_EMBED_SHELL (ephy_shell));
-
view->priv = p;
- view->priv->embed = ephy_embed_new (G_OBJECT (single));
+
+ view->priv->embed = EPHY_EMBED
+ (ephy_embed_factory_new_object ("EphyEmbed"));
g_signal_connect (view->priv->embed, "link_message",
G_CALLBACK (gnv_embed_link_message_cb),
diff --git a/src/ephy-tab.c b/src/ephy-tab.c
index ac8859f69..def1e741b 100644
--- a/src/ephy-tab.c
+++ b/src/ephy-tab.c
@@ -26,6 +26,7 @@
#include "ephy-shell.h"
#include "eel-gconf-extensions.h"
#include "ephy-prefs.h"
+#include "ephy-embed-factory.h"
#include "ephy-embed-prefs.h"
#include "ephy-debug.h"
#include "ephy-string.h"
@@ -1035,15 +1036,11 @@ static void
ephy_tab_init (EphyTab *tab)
{
GObject *embed, *embed_widget;
- EphyEmbedSingle *single;
EphyFaviconCache *cache;
char *id;
LOG ("EphyTab initialising %p", tab)
- single = ephy_embed_shell_get_embed_single
- (EPHY_EMBED_SHELL (ephy_shell));
-
tab->priv = EPHY_TAB_GET_PRIVATE (tab);
tab->priv->window = NULL;
@@ -1065,7 +1062,8 @@ ephy_tab_init (EphyTab *tab)
tab->priv->setting_zoom = FALSE;
tab->priv->address_expire = TAB_ADDRESS_EXPIRE_NOW;
- tab->priv->embed = ephy_embed_new (G_OBJECT(single));
+ tab->priv->embed = EPHY_EMBED
+ (ephy_embed_factory_new_object ("EphyEmbed"));
g_assert (tab->priv->embed != NULL);
embed = G_OBJECT (tab->priv->embed);
diff --git a/src/popup-commands.c b/src/popup-commands.c
index 6d8a1c4a7..ac5e5ee43 100644
--- a/src/popup-commands.c
+++ b/src/popup-commands.c
@@ -25,6 +25,7 @@
#include "popup-commands.h"
#include "ephy-shell.h"
#include "ephy-new-bookmark.h"
+#include "ephy-embed-factory.h"
#include "ephy-embed-persist.h"
#include "ephy-prefs.h"
#include "eel-gconf-extensions.h"
@@ -282,8 +283,10 @@ save_property_url (GtkAction *action,
ephy_embed_event_get_property (info, property, &value);
location = g_value_get_string (value);
- persist = ephy_embed_persist_new (embed);
+ persist = EPHY_EMBED_PERSIST
+ (ephy_embed_factory_new_object ("EphyEmbedPersist"));
+ ephy_embed_persist_set_embed (persist, embed);
ephy_embed_persist_set_fc_title (persist, title);
ephy_embed_persist_set_fc_parent (persist,GTK_WINDOW (window));
ephy_embed_persist_set_flags
@@ -373,11 +376,13 @@ popup_cmd_set_image_as_background (GtkAction *action,
ephy_embed_event_get_property (info, "image", &value);
location = g_value_get_string (value);
- persist = ephy_embed_persist_new (embed);
+ persist = EPHY_EMBED_PERSIST
+ (ephy_embed_factory_new_object ("EphyEmbedPersist"));
base = g_path_get_basename (location);
dest = g_build_filename (ephy_dot_dir (), base, NULL);
+ ephy_embed_persist_set_embed (persist, embed);
ephy_embed_persist_set_dest (persist, dest);
ephy_embed_persist_set_flags (persist, EMBED_PERSIST_NO_VIEW);
ephy_embed_persist_set_source (persist, location);
diff --git a/src/window-commands.c b/src/window-commands.c
index c5a693f9e..f545747fb 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -23,6 +23,7 @@
#endif
#include "ephy-shell.h"
+#include "ephy-embed-factory.h"
#include "ephy-embed-persist.h"
#include "ephy-debug.h"
#include "ephy-command-manager.h"
@@ -378,8 +379,10 @@ window_cmd_file_save_as (GtkAction *action,
embed = ephy_window_get_active_embed (window);
g_return_if_fail (embed != NULL);
- persist = ephy_embed_persist_new (embed);
+ persist = EPHY_EMBED_PERSIST
+ (ephy_embed_factory_new_object ("EphyEmbedPersist"));
+ ephy_embed_persist_set_embed (persist, embed);
ephy_embed_persist_set_fc_title (persist, _("Save As"));
ephy_embed_persist_set_fc_parent (persist,GTK_WINDOW (window));
ephy_embed_persist_set_flags
@@ -736,7 +739,10 @@ save_temp_source (EphyEmbed *embed)
tmp = ephy_file_tmp_filename (base, "html");
g_free (base);
- persist = ephy_embed_persist_new (embed);
+ persist = EPHY_EMBED_PERSIST
+ (ephy_embed_factory_new_object ("EphyEmbedPersist"));
+
+ ephy_embed_persist_set_embed (persist, embed);
ephy_embed_persist_set_flags (persist, EMBED_PERSIST_COPY_PAGE |
EMBED_PERSIST_NO_VIEW);
ephy_embed_persist_set_dest (persist, tmp);