aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog45
-rw-r--r--data/art/Makefile.am3
-rw-r--r--data/art/epiphany.pngbin0 -> 3539 bytes
-rw-r--r--data/epiphany.schemas.in11
-rw-r--r--data/glade/epiphany.glade1
-rw-r--r--embed/downloader-view.c8
-rw-r--r--embed/ephy-embed-favicon.c12
-rw-r--r--embed/ephy-embed-shell.c27
-rw-r--r--embed/ephy-embed-shell.h13
-rw-r--r--embed/ephy-embed-utils.c1
-rw-r--r--embed/mozilla/mozilla-embed-persist.cpp3
-rw-r--r--embed/mozilla/mozilla-embed.cpp20
-rwxr-xr-xsrc/appearance-prefs.c5
-rw-r--r--src/bookmarks/ephy-bookmarks.c4
-rw-r--r--src/ephy-main.c8
-rw-r--r--src/ephy-nautilus-view.c4
-rw-r--r--src/ephy-shell.c42
-rw-r--r--src/ephy-shell.h6
-rw-r--r--src/ephy-tab.c5
-rw-r--r--src/ephy-window.c29
-rwxr-xr-xsrc/general-prefs.c2
-rwxr-xr-xsrc/history-dialog.c2
-rwxr-xr-xsrc/pdm-dialog.c17
-rw-r--r--src/prefs-dialog.c4
-rw-r--r--src/window-commands.c3
25 files changed, 159 insertions, 116 deletions
diff --git a/ChangeLog b/ChangeLog
index afc934225..d918fa0cb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,48 @@
+2003-01-05 Marco Pesenti Gritti <marco@it.gnome.org>
+
+ * data/art/Makefile.am:
+ * data/art/epiphany.png:
+ * data/epiphany.schemas.in:
+ * data/glade/epiphany.glade:
+ * embed/downloader-view.c: (downloader_view_init),
+ (downloader_view_finalize):
+ * embed/ephy-embed-favicon.c: (ephy_embed_favicon_set_property):
+ * embed/ephy-embed-shell.c: (ephy_embed_shell_get_impl),
+ (ephy_embed_shell_get_type), (ephy_embed_shell_new):
+ * embed/ephy-embed-shell.h:
+ * embed/ephy-embed-utils.c:
+ (ephy_embed_utils_build_charsets_submenu):
+ * embed/mozilla/mozilla-embed-persist.cpp:
+ * embed/mozilla/mozilla-embed.cpp:
+ * src/appearance-prefs.c: (setup_font_menu):
+ * src/bookmarks/ephy-bookmarks.c: (compute_lower_fav),
+ (ephy_setup_history_notifiers):
+ * src/ephy-main.c: (main):
+ * src/ephy-nautilus-view.c: (ephy_nautilus_view_instance_init):
+ * src/ephy-shell.c: (ephy_shell_get_type), (ephy_shell_init),
+ (ephy_shell_finalize), (build_homepage_url),
+ (ephy_shell_get_autocompletion):
+ * src/ephy-shell.h:
+ * src/ephy-tab.c: (ephy_tab_init), (ephy_tab_location_cb),
+ (ephy_tab_visibility_cb):
+ * src/ephy-window.c: (favicon_cache_changed_cb),
+ (ephy_window_init), (update_favicon_control):
+ * src/general-prefs.c: (create_default_charset_menu):
+ * src/history-dialog.c: (history_dialog_init):
+ * src/pdm-dialog.c: (pdm_dialog_cookie_remove),
+ (pdm_dialog_password_remove), (pdm_dialog_cookies_free),
+ (pdm_dialog_passwords_free), (pdm_dialog_init):
+ * src/prefs-dialog.c: (prefs_clear_memory_cache_button_clicked_cb),
+ (prefs_clear_disk_cache_button_clicked_cb):
+ * src/window-commands.c: (window_cmd_file_open):
+
+ Make GaleonShell inherit from GaleonEmbedShell.
+ Ref the shell when using the downloader.
+ Use favicons for the window icon when possible.
+ This required to use jimmac icon as default,
+ we still dont have his permission, I'll remove it
+ later if necessary.
+
2003-01-04 Marco Pesenti Gritti <marco@it.gnome.org>
* embed/ephy-embed-favicon.c: (update_url), (location_changed_cb),
diff --git a/data/art/Makefile.am b/data/art/Makefile.am
index f4f5c3b5f..302d5eb3b 100644
--- a/data/art/Makefile.am
+++ b/data/art/Makefile.am
@@ -1,6 +1,7 @@
art_DATA = \
epiphany-secure.png \
- epiphany-unsecure.png
+ epiphany-unsecure.png \
+ epiphany.png
artdir = $(pkgdatadir)/art
diff --git a/data/art/epiphany.png b/data/art/epiphany.png
new file mode 100644
index 000000000..82869dc80
--- /dev/null
+++ b/data/art/epiphany.png
Binary files differ
diff --git a/data/epiphany.schemas.in b/data/epiphany.schemas.in
index f45104907..c7a17edfa 100644
--- a/data/epiphany.schemas.in
+++ b/data/epiphany.schemas.in
@@ -341,6 +341,17 @@
</locale>
</schema>
<schema>
+ <key>/schemas/apps/epiphany/downloader/show_details</key>
+ <applyto>/apps/epiphany/downloader/show_details</applyto>
+ <owner>epiphany</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Show download details</short>
+ <long>Show download details</long>
+ </locale>
+ </schema>
+ <schema>
<key>/schemas/apps/epiphany/filtering/java_enabled</key>
<applyto>/apps/epiphany/filtering/java_enabled</applyto>
<owner>epiphany</owner>
diff --git a/data/glade/epiphany.glade b/data/glade/epiphany.glade
index c9d30cb91..773bc0334 100644
--- a/data/glade/epiphany.glade
+++ b/data/glade/epiphany.glade
@@ -844,7 +844,6 @@
<child>
<widget class="GtkVBox" id="details_frame">
- <property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
diff --git a/embed/downloader-view.c b/embed/downloader-view.c
index 97e05a613..c7cdc2ef6 100644
--- a/embed/downloader-view.c
+++ b/embed/downloader-view.c
@@ -23,6 +23,7 @@
#include "ephy-ellipsizing-label.h"
#include "ephy-embed-utils.h"
#include "ephy-file-helpers.h"
+#include "ephy-embed-shell.h"
#include <gtk/gtktreeview.h>
#include <gtk/gtkliststore.h>
@@ -85,7 +86,7 @@ typedef struct
gchar *source;
gchar *dest;
DownloadStatus status;
-
+
GtkTreeRowReference *ref;
} DownloadDetails;
@@ -277,8 +278,9 @@ downloader_view_init (DownloaderView *dv)
g_direct_equal,
NULL,
(GDestroyNotify)destroy_details_cb);
-
downloader_view_build_ui (dv);
+
+ g_object_ref (embed_shell);
}
static void
@@ -295,6 +297,8 @@ downloader_view_finalize (GObject *object)
g_hash_table_destroy (dv->priv->details_hash);
+ g_object_unref (embed_shell);
+
g_free (dv->priv);
G_OBJECT_CLASS (parent_class)->finalize (object);
diff --git a/embed/ephy-embed-favicon.c b/embed/ephy-embed-favicon.c
index f7fa43e3b..7afbbd831 100644
--- a/embed/ephy-embed-favicon.c
+++ b/embed/ephy-embed-favicon.c
@@ -134,13 +134,6 @@ update_url (EphyEmbedFavicon *favicon)
}
static void
-location_changed_cb (EphyEmbed *embed,
- EphyEmbedFavicon *favicon)
-{
- update_url (favicon);
-}
-
-static void
favicon_cb (EphyEmbed *embed,
const char *favicon_url,
EphyEmbedFavicon *favicon)
@@ -186,11 +179,6 @@ ephy_embed_favicon_set_property (GObject *object,
G_CALLBACK (favicon_cb),
favicon,
0);
- g_signal_connect_object (G_OBJECT (favicon->priv->embed),
- "ge_location",
- G_CALLBACK (location_changed_cb),
- favicon,
- 0);
update_url (favicon);
}
break;
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index 9bb72942a..69d1c98dd 100644
--- a/embed/ephy-embed-shell.c
+++ b/embed/ephy-embed-shell.c
@@ -46,8 +46,6 @@ static void
ephy_embed_shell_init (EphyEmbedShell *ges);
static void
ephy_embed_shell_finalize (GObject *object);
-static void
-ephy_embed_shell_finalize (GObject *object);
static EphyHistory *
impl_get_global_history (EphyEmbedShell *shell);
@@ -60,6 +58,12 @@ static guint ephy_embed_shell_signals[LAST_SIGNAL] = { 0 };
EphyEmbedShell *embed_shell;
GType
+ephy_embed_shell_get_impl (void)
+{
+ return MOZILLA_EMBED_SHELL_TYPE;
+}
+
+GType
ephy_embed_shell_get_type (void)
{
static GType ephy_embed_shell_type = 0;
@@ -80,8 +84,8 @@ ephy_embed_shell_get_type (void)
};
ephy_embed_shell_type = g_type_register_static (G_TYPE_OBJECT,
- "EphyEmbedShell",
- &our_info, 0);
+ "EphyEmbedShell",
+ &our_info, 0);
}
return ephy_embed_shell_type;
@@ -175,21 +179,6 @@ ephy_embed_shell_new (const char *type)
return NULL;
}
-const char *supported_embeds [] = {
-#ifdef ENABLE_MOZILLA_EMBED
- "mozilla",
-#endif
-#ifdef ENABLE_GTKHTML_EMBED
- "gtkhtml",
-#endif
- NULL };
-
-const char **
-ephy_embed_shell_get_supported (void)
-{
- return supported_embeds;
-}
-
/**
* ephy_embed_shell_get_favicon_cache:
* @gs: a #EphyShell
diff --git a/embed/ephy-embed-shell.h b/embed/ephy-embed-shell.h
index 75d630f23..105db27f2 100644
--- a/embed/ephy-embed-shell.h
+++ b/embed/ephy-embed-shell.h
@@ -32,10 +32,11 @@ G_BEGIN_DECLS
typedef struct EphyEmbedShellClass EphyEmbedShellClass;
#define EPHY_EMBED_SHELL_TYPE (ephy_embed_shell_get_type ())
-#define EPHY_EMBED_SHELL(obj) (GTK_CHECK_CAST ((obj), EPHY_EMBED_SHELL_TYPE, EphyEmbedShell))
-#define EPHY_EMBED_SHELL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), EPHY_EMBED_SHELL_TYPE, EphyEmbedShellClass))
-#define IS_EPHY_EMBED_SHELL(obj) (GTK_CHECK_TYPE ((obj), EPHY_EMBED_SHELL_TYPE))
-#define IS_EPHY_EMBED_SHELL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), EPHY_EMBED_SHELL))
+#define EPHY_EMBED_SHELL_IMPL (ephy_embed_shell_get_impl ())
+#define EPHY_EMBED_SHELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EPHY_EMBED_SHELL_TYPE, EphyEmbedShell))
+#define EPHY_EMBED_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EPHY_EMBED_SHELL_TYPE, EphyEmbedShellClass))
+#define IS_EPHY_EMBED_SHELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EPHY_EMBED_SHELL_TYPE))
+#define IS_EPHY_EMBED_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EPHY_EMBED_SHELL_TYPE))
#define EPHY_EMBED_SHELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EPHY_EMBED_SHELL_TYPE, EphyEmbedShellClass))
typedef struct EphyEmbedShell EphyEmbedShell;
@@ -186,6 +187,8 @@ struct EphyEmbedShellClass
GType ephy_embed_shell_get_type (void);
+GType ephy_embed_shell_get_impl (void);
+
EphyEmbedShell *ephy_embed_shell_new (const char *type);
EphyFaviconCache *ephy_embed_shell_get_favicon_cache (EphyEmbedShell *ges);
@@ -200,8 +203,6 @@ EphyEmbed *ephy_embed_shell_get_active_embed (EphyEmbedShell *ges);
GList *ephy_embed_shell_get_embeds (EphyEmbedShell *ges);
-const char **ephy_embed_shell_get_supported (void);
-
void ephy_embed_shell_get_capabilities (EphyEmbedShell *shell,
EmbedShellCapabilities *caps);
diff --git a/embed/ephy-embed-utils.c b/embed/ephy-embed-utils.c
index f76a2b7e5..69089daa4 100644
--- a/embed/ephy-embed-utils.c
+++ b/embed/ephy-embed-utils.c
@@ -240,6 +240,7 @@ ephy_embed_utils_build_charsets_submenu (BonoboUIComponent *ui_component,
g_timer_start(timer);
#endif
+ g_return_if_fail (IS_EPHY_EMBED_SHELL (embed_shell));
g_return_if_fail (ephy_embed_shell_get_charset_groups (embed_shell, &groups) == G_OK);
xml_string = g_string_new (NULL);
diff --git a/embed/mozilla/mozilla-embed-persist.cpp b/embed/mozilla/mozilla-embed-persist.cpp
index c0c8cb06e..9f9ac185c 100644
--- a/embed/mozilla/mozilla-embed-persist.cpp
+++ b/embed/mozilla/mozilla-embed-persist.cpp
@@ -167,7 +167,8 @@ impl_save (EphyEmbedPersist *persist)
if (embed)
{
- wrapper = (EphyWrapper *) mozilla_embed_get_galeon_wrapper (MOZILLA_EMBED(embed));
+ wrapper = (EphyWrapper *) mozilla_embed_get_galeon_wrapper (MOZILLA_EMBED(embed));
+ g_return_val_if_fail (wrapper != NULL, G_FAILED);
wrapper->GetDOMWindow (getter_AddRefs (parent));
}
diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp
index 66330db4a..8c39dd460 100644
--- a/embed/mozilla/mozilla-embed.cpp
+++ b/embed/mozilla/mozilla-embed.cpp
@@ -274,7 +274,7 @@ mozilla_embed_get_type (void)
static const GInterfaceInfo embed_info =
{
- (GInterfaceInitFunc) ephy_embed_init, /* interface_init */
+ (GInterfaceInitFunc) ephy_embed_init, /* interface_init */
NULL, /* interface_finalize */
NULL /* interface_data */
};
@@ -357,8 +357,6 @@ mozilla_embed_init (MozillaEmbed *embed)
gpointer
mozilla_embed_get_galeon_wrapper (MozillaEmbed *embed)
{
- g_return_val_if_fail (embed->priv->wrapper != NULL, NULL);
-
return embed->priv->wrapper;
}
@@ -719,6 +717,8 @@ impl_get_location (EphyEmbed *embed,
}
*location = l;
+
+ if (l == NULL) return G_FAILED;
return G_OK;
}
@@ -1309,14 +1309,16 @@ mozilla_embed_visibility_cb (GtkMozEmbed *embed, gboolean visibility,
(do_GetService(WINDOWWATCHER_CONTRACTID, &rv));
if (NS_FAILED(rv) || !wwatch) return;
- EphyWrapper *wrapper = (EphyWrapper *)mozilla_embed_get_galeon_wrapper(membed);
- if(!wrapper) return;
+ EphyWrapper *wrapper = membed->priv->wrapper;
- nsCOMPtr<nsIDOMWindow> domWindow;
- rv = wrapper->GetDOMWindow(getter_AddRefs(domWindow));
- if(NS_FAILED(rv) || !domWindow) return;
+ if (wrapper)
+ {
+ nsCOMPtr<nsIDOMWindow> domWindow;
+ rv = wrapper->GetDOMWindow(getter_AddRefs(domWindow));
+ if(NS_FAILED(rv) || !domWindow) return;
- rv = wwatch->SetActiveWindow(domWindow);
+ rv = wwatch->SetActiveWindow(domWindow);
+ }
}
static void
diff --git a/src/appearance-prefs.c b/src/appearance-prefs.c
index da1056f3f..0cb928cdf 100755
--- a/src/appearance-prefs.c
+++ b/src/appearance-prefs.c
@@ -179,15 +179,12 @@ setup_font_menu (AppearancePrefs *dialog,
{
char *default_font;
GList *fonts;
- EphyEmbedShell *shell;
const char *name;
char key[255];
int pos;
GtkWidget *entry = GTK_COMBO(combo)->entry;
- shell = ephy_shell_get_embed_shell (ephy_shell);
-
- ephy_embed_shell_get_font_list (shell,
+ ephy_embed_shell_get_font_list (EPHY_EMBED_SHELL (ephy_shell),
lang_encode[dialog->priv->language],
type, &fonts, &default_font);
diff --git a/src/bookmarks/ephy-bookmarks.c b/src/bookmarks/ephy-bookmarks.c
index a4f5412a4..7110a2cd8 100644
--- a/src/bookmarks/ephy-bookmarks.c
+++ b/src/bookmarks/ephy-bookmarks.c
@@ -294,7 +294,7 @@ compute_lower_fav (EphyNode *favorites, double *score)
EphyHistory *history;
EphyNode *result = NULL;
- embed_shell = ephy_shell_get_embed_shell (ephy_shell);
+ embed_shell = EPHY_EMBED_SHELL (ephy_shell);
history = ephy_embed_shell_get_global_history (embed_shell);
*score = DBL_MAX;
@@ -399,7 +399,7 @@ ephy_setup_history_notifiers (EphyBookmarks *eb)
EphyEmbedShell *embed_shell;
EphyHistory *history;
- embed_shell = ephy_shell_get_embed_shell (ephy_shell);
+ embed_shell = EPHY_EMBED_SHELL (ephy_shell);
history = ephy_embed_shell_get_global_history (embed_shell);
g_signal_connect (history, "visited",
diff --git a/src/ephy-main.c b/src/ephy-main.c
index 0a0093974..becc1d2e5 100644
--- a/src/ephy-main.c
+++ b/src/ephy-main.c
@@ -23,12 +23,13 @@
#include "ephy-shell.h"
#include "ephy-automation.h"
#include "ephy-window.h"
+#include "ephy-file-helpers.h"
#include "EphyAutomation.h"
#include <libbonoboui.h>
#include <libgnome/gnome-program.h>
#include <libgnomeui/gnome-ui-init.h>
-#include <libgnomeui/gnome-window-icon.h>
+#include <gtk/gtkwindow.h>
#include <libgnomevfs/gnome-vfs-init.h>
#include <glade/glade-init.h>
@@ -147,10 +148,11 @@ main (int argc, char *argv[])
glade_gnome_init ();
- gnome_window_icon_set_default_from_file (PIXMAP_DIR "/ephy.png");
-
ephy_shell_new ();
+ gtk_window_set_default_icon_from_file
+ (ephy_file ("epiphany.png"), NULL);
+
g_idle_add ((GSourceFunc) ephy_main_start, NULL);
bonobo_main ();
diff --git a/src/ephy-nautilus-view.c b/src/ephy-nautilus-view.c
index 8af22ba66..c485721a5 100644
--- a/src/ephy-nautilus-view.c
+++ b/src/ephy-nautilus-view.c
@@ -174,8 +174,8 @@ ephy_nautilus_view_instance_init (EphyNautilusView *view)
EphyNautilusViewPrivate *p = g_new0 (EphyNautilusViewPrivate, 1);
view->priv = p;
- view->priv->embed = ephy_embed_new (G_OBJECT (ephy_shell_get_embed_shell (ephy_shell)));
-
+ view->priv->embed = ephy_embed_new (G_OBJECT (ephy_shell));
+
g_object_ref (G_OBJECT (ephy_shell));
g_signal_connect (view->priv->embed, "ge_link_message",
diff --git a/src/ephy-shell.c b/src/ephy-shell.c
index d408a7652..491b01b5f 100644
--- a/src/ephy-shell.c
+++ b/src/ephy-shell.c
@@ -45,7 +45,6 @@
struct EphyShellPrivate
{
- EphyEmbedShell *embed_shell;
Session *session;
EphyAutocompletion *autocompletion;
EphyBookmarks *bookmarks;
@@ -102,9 +101,9 @@ ephy_shell_get_type (void)
(GInstanceInitFunc) ephy_shell_init
};
- ephy_shell_type = g_type_register_static (G_TYPE_OBJECT,
- "EphyShell",
- &our_info, 0);
+ ephy_shell_type = g_type_register_static (EPHY_EMBED_SHELL_IMPL,
+ "EphyShell",
+ &our_info, 0);
}
return ephy_shell_type;
@@ -169,11 +168,7 @@ ephy_shell_init (EphyShell *gs)
gs->priv->session = NULL;
gs->priv->bookmarks = NULL;
- gs->priv->embed_shell = ephy_embed_shell_new ("mozilla");
-
- g_assert (gs->priv->embed_shell != NULL);
-
- g_signal_connect (G_OBJECT(embed_shell),
+ g_signal_connect (G_OBJECT (gs),
"new_window_orphan",
G_CALLBACK(ephy_shell_new_window_cb),
NULL);
@@ -195,9 +190,6 @@ ephy_shell_finalize (GObject *object)
g_assert (ephy_shell == NULL);
- g_return_if_fail (IS_EPHY_EMBED_SHELL (gs->priv->embed_shell));
- g_object_unref (G_OBJECT (gs->priv->embed_shell));
-
if (gs->priv->session)
{
g_return_if_fail (IS_SESSION(gs->priv->session));
@@ -217,12 +209,12 @@ ephy_shell_finalize (GObject *object)
g_object_unref (gs->priv->bookmarks);
}
- ephy_file_helpers_shutdown ();
- ephy_node_system_shutdown ();
+ G_OBJECT_CLASS (parent_class)->finalize (object);
g_free (gs->priv);
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ ephy_file_helpers_shutdown ();
+ ephy_node_system_shutdown ();
#ifdef DEBUG_MARCO
g_print ("Ephy shell finalized\n");
@@ -241,22 +233,6 @@ ephy_shell_new (void)
return EPHY_SHELL (g_object_new (EPHY_SHELL_TYPE, NULL));
}
-/**
- * ephy_shell_get_embed_shell:
- * @gs: a #EphyShell
- *
- * Returns the embed shell created by the #EphyShell
- *
- * Return value: the embed shell
- **/
-EphyEmbedShell *
-ephy_shell_get_embed_shell (EphyShell *gs)
-{
- g_return_val_if_fail (IS_EPHY_SHELL (gs), NULL);
-
- return gs->priv->embed_shell;
-}
-
static void
ephy_init_services (EphyShell *gs)
{
@@ -312,7 +288,7 @@ build_homepage_url (EphyShell *gs,
{
/* get location of last page */
gh = ephy_embed_shell_get_global_history
- (gs->priv->embed_shell);
+ (EPHY_EMBED_SHELL (gs));
last_page_url = ephy_history_get_last_page (gh);
result = g_strdup (last_page_url);
}
@@ -495,7 +471,7 @@ ephy_shell_get_autocompletion (EphyShell *gs)
NULL
};
- EphyHistory *gh = ephy_embed_shell_get_global_history (gs->priv->embed_shell);
+ EphyHistory *gh = ephy_embed_shell_get_global_history (EPHY_EMBED_SHELL (gs));
EphyFilesystemAutocompletion *fa = ephy_filesystem_autocompletion_new ();
p->autocompletion = ephy_autocompletion_new ();
ephy_autocompletion_set_prefixes (p->autocompletion, prefixes);
diff --git a/src/ephy-shell.h b/src/ephy-shell.h
index 3590931f9..0acd107d1 100644
--- a/src/ephy-shell.h
+++ b/src/ephy-shell.h
@@ -67,21 +67,19 @@ typedef enum
struct EphyShell
{
- GObject parent;
+ EphyEmbedShell parent;
EphyShellPrivate *priv;
};
struct EphyShellClass
{
- GObjectClass parent_class;
+ EphyEmbedShellClass parent_class;
};
GType ephy_shell_get_type (void);
EphyShell *ephy_shell_new (void);
-EphyEmbedShell *ephy_shell_get_embed_shell (EphyShell *gs);
-
EphyWindow *ephy_shell_get_active_window (EphyShell *gs);
EphyTab *ephy_shell_new_tab (EphyShell *shell,
diff --git a/src/ephy-tab.c b/src/ephy-tab.c
index b66beb2e7..5ad7090eb 100644
--- a/src/ephy-tab.c
+++ b/src/ephy-tab.c
@@ -194,7 +194,7 @@ ephy_tab_init (EphyTab *tab)
tab->priv = g_new0 (EphyTabPrivate, 1);
- shell = ephy_shell_get_embed_shell (ephy_shell);
+ shell = EPHY_EMBED_SHELL (ephy_shell);
tab->priv->embed = ephy_embed_new (G_OBJECT(shell));
@@ -468,6 +468,7 @@ ephy_tab_location_cb (EphyEmbed *embed, EphyTab *tab)
{
ephy_window_update_control (tab->priv->window, LocationControl);
ephy_window_update_control (tab->priv->window, NavControl);
+ ephy_window_update_control (tab->priv->window, FaviconControl);
}
}
@@ -735,7 +736,7 @@ ephy_tab_visibility_cb (EphyEmbed *embed, gboolean visibility,
{
gtk_widget_hide (GTK_WIDGET(embed));
}
-
+
ephy_tab_set_visibility (tab, visibility);
window = ephy_tab_get_window (tab);
diff --git a/src/ephy-window.c b/src/ephy-window.c
index d014e4378..dcba93e42 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -451,10 +451,17 @@ setup_layout_menus (EphyWindow *window)
}
static void
+favicon_cache_changed_cb (EphyFaviconCache *cache, char *url, EphyWindow *window)
+{
+ ephy_window_update_control (window, FaviconControl);
+}
+
+static void
ephy_window_init (EphyWindow *window)
{
BonoboUIComponent *ui_component;
Session *session;
+ EphyFaviconCache *cache;
session = ephy_shell_get_session (ephy_shell);
@@ -466,6 +473,13 @@ ephy_window_init (EphyWindow *window)
window->priv->closing = FALSE;
window->priv->has_default_size = FALSE;
+ cache = ephy_embed_shell_get_favicon_cache (EPHY_EMBED_SHELL (ephy_shell));
+ g_signal_connect_object (G_OBJECT (cache),
+ "changed",
+ G_CALLBACK (favicon_cache_changed_cb),
+ window,
+ 0);
+
/* Setup the window and connect verbs */
setup_bonobo_window (window, &ui_component);
window->ui_component = G_OBJECT (ui_component);
@@ -1066,6 +1080,21 @@ update_favorites_control (EphyWindow *window)
static void
update_favicon_control (EphyWindow *window)
{
+ const char *location;
+ EphyFaviconCache *cache;
+
+ cache = ephy_embed_shell_get_favicon_cache
+ (EPHY_EMBED_SHELL (ephy_shell));
+
+ location = ephy_tab_get_location (window->priv->active_tab);
+ if (location)
+ {
+ GdkPixbuf *pixbuf;
+
+ pixbuf = ephy_favicon_cache_lookup_direct (cache, location);
+ gtk_window_set_icon (GTK_WINDOW (window), pixbuf);
+ }
+
toolbar_update_favicon (window->priv->toolbar);
}
diff --git a/src/general-prefs.c b/src/general-prefs.c
index f9eecf4e6..d3d322054 100755
--- a/src/general-prefs.c
+++ b/src/general-prefs.c
@@ -218,7 +218,7 @@ create_default_charset_menu (GeneralPrefs *dialog)
GtkWidget *optionmenu;
char *value;
- shell = ephy_shell_get_embed_shell (ephy_shell);
+ shell = EPHY_EMBED_SHELL (ephy_shell);
ephy_embed_shell_get_charset_titles (shell, NULL, &l);
menu = gtk_menu_new ();
diff --git a/src/history-dialog.c b/src/history-dialog.c
index ac9aa5449..3ac3be2c7 100755
--- a/src/history-dialog.c
+++ b/src/history-dialog.c
@@ -367,7 +367,7 @@ history_dialog_init (HistoryDialog *dialog)
dialog->priv = g_new0 (HistoryDialogPrivate, 1);
- ges = ephy_shell_get_embed_shell (ephy_shell);
+ ges = EPHY_EMBED_SHELL (ephy_shell);
dialog->priv->gh = ephy_embed_shell_get_global_history (ges);
g_return_if_fail (dialog->priv->gh != NULL);
diff --git a/src/pdm-dialog.c b/src/pdm-dialog.c
index 380430911..3524d6495 100755
--- a/src/pdm-dialog.c
+++ b/src/pdm-dialog.c
@@ -427,18 +427,17 @@ static void
pdm_dialog_cookie_remove (PdmActionInfo *info,
GList *data)
{
- EphyEmbedShell *shell;
- shell = ephy_shell_get_embed_shell (ephy_shell);
- ephy_embed_shell_remove_cookies (shell, data);
+ ephy_embed_shell_remove_cookies
+ (EPHY_EMBED_SHELL (ephy_shell), data);
}
static void
pdm_dialog_password_remove (PdmActionInfo *info,
GList *data)
{
- EphyEmbedShell *shell;
- shell = ephy_shell_get_embed_shell (ephy_shell);
- ephy_embed_shell_remove_passwords (shell, data, PASSWORD_PASSWORD);
+ ephy_embed_shell_remove_passwords
+ (EPHY_EMBED_SHELL (ephy_shell), data,
+ PASSWORD_PASSWORD);
}
static void
@@ -448,7 +447,7 @@ pdm_dialog_cookies_free (PdmActionInfo *info,
EphyEmbedShell *shell;
GList *l;
- shell = ephy_shell_get_embed_shell (ephy_shell);
+ shell = EPHY_EMBED_SHELL (ephy_shell);
l = data ? data : info->list;
ephy_embed_shell_free_cookies (shell, l);
}
@@ -460,7 +459,7 @@ pdm_dialog_passwords_free (PdmActionInfo *info,
EphyEmbedShell *shell;
GList *l;
- shell = ephy_shell_get_embed_shell (ephy_shell);
+ shell = EPHY_EMBED_SHELL (ephy_shell);
l = data ? data : info->list;
ephy_embed_shell_free_passwords (shell, l);
}
@@ -474,7 +473,7 @@ pdm_dialog_init (PdmDialog *dialog)
GtkWidget *cookies_tv;
GtkWidget *passwords_tv;
- shell = ephy_shell_get_embed_shell (ephy_shell);
+ shell = EPHY_EMBED_SHELL (ephy_shell);
dialog->priv = g_new0 (PdmDialogPrivate, 1);
dialog->priv->cookies = NULL;
diff --git a/src/prefs-dialog.c b/src/prefs-dialog.c
index 8f010420c..438cd900e 100644
--- a/src/prefs-dialog.c
+++ b/src/prefs-dialog.c
@@ -320,7 +320,7 @@ prefs_clear_memory_cache_button_clicked_cb (GtkWidget *button,
{
EphyEmbedShell *shell;
- shell = ephy_shell_get_embed_shell (ephy_shell);
+ shell = EPHY_EMBED_SHELL (ephy_shell);
ephy_embed_shell_clear_cache (shell, MEMORY_CACHE);
}
@@ -330,6 +330,6 @@ prefs_clear_disk_cache_button_clicked_cb (GtkWidget *button,
{
EphyEmbedShell *shell;
- shell = ephy_shell_get_embed_shell (ephy_shell);
+ shell = EPHY_EMBED_SHELL (ephy_shell);
ephy_embed_shell_clear_cache (shell, DISK_CACHE);
}
diff --git a/src/window-commands.c b/src/window-commands.c
index c7d5ec16c..84fabab15 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -364,8 +364,7 @@ window_cmd_file_open (BonoboUIComponent *uic,
EphyEmbedShell *embed_shell;
gresult result;
- embed_shell = ephy_shell_get_embed_shell (ephy_shell);
- g_return_if_fail (embed_shell != NULL);
+ embed_shell = EPHY_EMBED_SHELL (ephy_shell);
wmain = GTK_WIDGET (window);
g_return_if_fail (wmain != NULL);