[Xfce4-commits] <midori:master> Move icon path setup and clearing into Midori.Paths
Christian Dywan
noreply at xfce.org
Fri Dec 7 20:20:03 CET 2012
Updating branch refs/heads/master
to d107b6e07496eb6eeca4ee10bfaa9d5afb9844a0 (commit)
from 08d8ceb253f8e5ac47340678e292e6c17b5bbb61 (commit)
commit d107b6e07496eb6eeca4ee10bfaa9d5afb9844a0
Author: Christian Dywan <christian at twotoasts.de>
Date: Fri Dec 7 18:53:14 2012 +0100
Move icon path setup and clearing into Midori.Paths
katze/katze-net.c | 3 +-
katze/katze-net.h | 3 ++
katze/midori-paths.vala | 15 ++++++++++
midori/midori-browser.c | 60 +++++++++++++------------------------------
midori/midori-frontend.c | 2 +-
midori/midori-privatedata.c | 17 +-----------
midori/midori-session.c | 6 ----
midori/midori-view.c | 9 +-----
midori/midori-view.h | 3 --
9 files changed, 42 insertions(+), 76 deletions(-)
diff --git a/katze/katze-net.c b/katze/katze-net.c
index 05841e5..fc82510 100644
--- a/katze/katze-net.c
+++ b/katze/katze-net.c
@@ -22,7 +22,6 @@
#include <glib/gstdio.h>
#include <libsoup/soup.h>
-#include <webkit/webkit.h>
struct _KatzeNet
{
@@ -78,6 +77,7 @@ katze_net_priv_free (KatzeNetPriv* priv)
g_slice_free (KatzeNetPriv, priv);
}
+#if !WEBKIT_CHECK_VERSION (1, 8, 0)
gchar*
katze_net_get_cached_path (KatzeNet* net,
const gchar* uri,
@@ -110,6 +110,7 @@ katze_net_get_cached_path (KatzeNet* net,
g_free (cached_filename);
return cached_path;
}
+#endif
static void
katze_net_got_body_cb (SoupMessage* msg,
diff --git a/katze/katze-net.h b/katze/katze-net.h
index eea2df4..87c0912 100644
--- a/katze/katze-net.h
+++ b/katze/katze-net.h
@@ -12,6 +12,7 @@
#ifndef __KATZE_NET_H__
#define __KATZE_NET_H__
+#include <webkit/webkit.h>
#include "katze-utils.h"
G_BEGIN_DECLS
@@ -66,10 +67,12 @@ katze_net_load_uri (KatzeNet* net,
KatzeNetTransferCb transfer_cb,
gpointer user_data);
+#if !WEBKIT_CHECK_VERSION (1, 8, 0)
gchar*
katze_net_get_cached_path (KatzeNet* net,
const gchar* uri,
const gchar* subfolder);
+#endif
G_END_DECLS
diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala
index 6c1ed41..2f62a90 100644
--- a/katze/midori-paths.vala
+++ b/katze/midori-paths.vala
@@ -116,6 +116,10 @@ namespace Midori {
tmp_dir = Path.build_path (Path.DIR_SEPARATOR_S,
Environment.get_tmp_dir (), "midori-" + Environment.get_user_name ());
}
+#if HAVE_WEBKIT_1_8_0
+ if (user_data_dir != null)
+ WebKit.get_favicon_database ().set_path (Path.build_filename (user_data_dir, "webkit", "icondatabase"));
+#endif
if (strcmp (Environment.get_variable ("MIDORI_DEBUG"), "paths") == 0) {
stdout.printf ("config: %s\ncache: %s\nuser_data: %s\ntmp: %s\n",
config_dir, cache_dir, user_data_dir, tmp_dir);
@@ -364,6 +368,17 @@ namespace Midori {
#endif
}
+ public static void clear_icons () {
+ assert (cache_dir != null);
+ assert (user_data_dir != null);
+#if HAVE_WEBKIT_1_8_0
+ WebKit.get_favicon_database ().clear ();
+#endif
+ /* FIXME: Exclude search engine icons */
+ remove_path (Path.build_filename (cache_dir, "icons"));
+ remove_path (Path.build_filename (user_data_dir, "webkit", "icondatabase"));
+ }
+
public static Gdk.Pixbuf? get_icon (string? uri, Gtk.Widget? widget) {
if (!Midori.URI.is_resource (uri))
return null;
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index c773c51..df60c75 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -2411,23 +2411,18 @@ _action_add_desktop_shortcut_activate (GtkAction* action,
KatzeItem* item = midori_view_get_proxy_item (MIDORI_VIEW (tab));
const gchar* app_name = katze_item_get_name (item);
gchar* app_exec = g_strconcat ("midori -a ", katze_item_get_uri (item), NULL);
- const gchar* icon_uri = midori_view_get_icon_uri (MIDORI_VIEW (tab));
- gchar* app_icon;
GKeyFile* keyfile = g_key_file_new ();
- gchar* filename = g_strconcat (app_name, ".desktop", NULL);
- gchar* app_dir;
- int i = 0;
- while (filename[i] != '\0')
- {
- if (filename[i] == '/')
- filename[i] = '_';
- i++;
- }
- app_dir = g_build_filename (g_get_user_data_dir (),
- "applications", filename, NULL);
- app_icon = katze_net_get_cached_path (NULL, icon_uri, "icons");
+ gchar* filename = g_strdelimit (g_strconcat (app_name, ".desktop", NULL), "/", '_');
+ gchar* app_dir = g_build_filename (g_get_user_data_dir (), "applications", filename, NULL);
+ #if WEBKIT_CHECK_VERSION (1, 8, 0)
+ /* FIXME: midori_paths_get_icon */
+ gchar* app_icon = g_strdup (STOCK_WEB_BROWSER);
+ #else
+ const gchar* icon_uri = midori_view_get_icon_uri (MIDORI_VIEW (tab));
+ gchar* app_icon = katze_net_get_cached_path (NULL, icon_uri, "icons");
if (!g_file_test (app_icon, G_FILE_TEST_EXISTS))
katze_assign (app_icon, g_strdup (STOCK_WEB_BROWSER));
+ #endif
g_key_file_set_string (keyfile, "Desktop Entry", "Version", "1.0");
g_key_file_set_string (keyfile, "Desktop Entry", "Type", "Application");
g_key_file_set_string (keyfile, "Desktop Entry", "Name", app_name);
@@ -2439,6 +2434,7 @@ _action_add_desktop_shortcut_activate (GtkAction* action,
g_free (app_dir);
g_free (filename);
g_free (app_exec);
+ g_free (app_icon);
g_key_file_free (keyfile);
#elif defined(GDK_WINDOWING_QUARTZ)
/* TODO: Implement */
@@ -6422,7 +6418,6 @@ midori_browser_toolbar_popup_context_menu_history (MidoriBrowser* browser,
const gint step = back ? -1 : 1;
gint steps = step;
GtkWidget* menu;
- GtkWidget* menu_item;
WebKitWebBackForwardList* list;
WebKitWebHistoryItem* current_item;
WebKitWebHistoryItem* history_item;
@@ -6448,36 +6443,17 @@ midori_browser_toolbar_popup_context_menu_history (MidoriBrowser* browser,
for (; (history_item = history_next (list)); history_action (list), steps += step)
{
- #if WEBKIT_CHECK_VERSION (1, 3, 13)
- gchar* icon_uri;
- gchar* icon_path;
- GdkPixbuf* pixbuf;
- GdkPixbuf* pixbuf_scaled = NULL;
- #endif
-
- menu_item = gtk_image_menu_item_new_with_label (
+ const gchar* uri = webkit_web_history_item_get_uri (history_item);
+ GtkWidget* menu_item = gtk_image_menu_item_new_with_label (
webkit_web_history_item_get_title (history_item));
- #if WEBKIT_CHECK_VERSION (1, 3, 13)
- icon_uri = webkit_icon_database_get_icon_uri (webkit_get_icon_database (),
- webkit_web_history_item_get_uri (history_item));
- icon_path = katze_net_get_cached_path (NULL, icon_uri, "icons");
- if ((pixbuf = gdk_pixbuf_new_from_file (icon_path, NULL)))
+ GdkPixbuf* pixbuf;
+ if ((pixbuf = midori_paths_get_icon (uri, widget)))
{
- gint w = 16, h = 16;
- gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (widget),
- GTK_ICON_SIZE_MENU, &w, &h);
- pixbuf_scaled = gdk_pixbuf_scale_simple (pixbuf,
- w, h, GDK_INTERP_BILINEAR);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item),
+ gtk_image_new_from_pixbuf (pixbuf));
+ g_object_unref (pixbuf);
}
- gtk_image_menu_item_set_image (
- GTK_IMAGE_MENU_ITEM (menu_item),
- pixbuf_scaled ? gtk_image_new_from_pixbuf (pixbuf_scaled) :
- gtk_image_new_from_stock (GTK_STOCK_FILE, GTK_ICON_SIZE_MENU));
- g_free (icon_uri);
- g_free (icon_path);
- #endif
- g_object_set_data (G_OBJECT (menu_item), "uri",
- (gpointer) webkit_web_history_item_get_uri (history_item));
+ g_object_set_data (G_OBJECT (menu_item), "uri", (gpointer)uri);
g_object_set_data (G_OBJECT (menu_item), "steps", GINT_TO_POINTER (steps));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
g_signal_connect (G_OBJECT (menu_item), "activate",
diff --git a/midori/midori-frontend.c b/midori/midori-frontend.c
index b6c68b9..142619d 100644
--- a/midori/midori-frontend.c
+++ b/midori/midori-frontend.c
@@ -250,7 +250,7 @@ midori_browser_privacy_preferences_cb (MidoriBrowser* browser,
static void
midori_app_add_browser_cb (MidoriApp* app,
MidoriBrowser* browser,
- KatzeNet* net)
+ gpointer user_data)
{
GtkWidget* panel;
GtkWidget* addon;
diff --git a/midori/midori-privatedata.c b/midori/midori-privatedata.c
index 48504cd..89fdce6 100644
--- a/midori/midori-privatedata.c
+++ b/midori/midori-privatedata.c
@@ -291,21 +291,6 @@ midori_clear_web_cache_cb (void)
}
#endif
-static void
-midori_clear_page_icons_cb (void)
-{
- gchar* cache = g_build_filename (midori_paths_get_cache_dir (), "icons", NULL);
- /* FIXME: Exclude search engine icons */
- midori_paths_remove_path (cache);
- g_free (cache);
- cache = g_build_filename (midori_paths_get_user_data_dir (), "webkit", "icondatabase", NULL);
- midori_paths_remove_path (cache);
- g_free (cache);
- #if WEBKIT_CHECK_VERSION (1, 8, 0)
- webkit_favicon_database_clear (webkit_get_favicon_database ());
- #endif
-}
-
void
midori_private_data_register_built_ins ()
{
@@ -320,7 +305,7 @@ midori_private_data_register_built_ins ()
G_CALLBACK (midori_clear_web_cache_cb));
#endif
midori_private_data_register_item ("page-icons", _("Website icons"),
- G_CALLBACK (midori_clear_page_icons_cb));
+ G_CALLBACK (midori_paths_clear_icons));
}
void
diff --git a/midori/midori-session.c b/midori/midori-session.c
index be2f09a..17b5166 100644
--- a/midori/midori-session.c
+++ b/midori/midori-session.c
@@ -298,12 +298,6 @@ midori_load_soup_session_full (gpointer settings)
katze_object_get_int (settings, "maximum-cache-size") * 1024 * 1024);
soup_cache_load (SOUP_CACHE (feature));
#endif
-
- #if WEBKIT_CHECK_VERSION (1, 8, 0)
- katze_assign (config_file, g_build_filename (midori_paths_get_user_data_dir (),
- "webkit", "icondatabase", NULL));
- webkit_favicon_database_set_path (webkit_get_favicon_database (), config_file);
- #endif
g_free (config_file);
return FALSE;
diff --git a/midori/midori-view.c b/midori/midori-view.c
index ea9e354..c48a752 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -561,13 +561,7 @@ static void
_midori_web_view_load_icon (MidoriView* view)
{
GdkPixbuf* pixbuf = NULL;
- gint icon_width, icon_height;
- GtkSettings* settings;
-
#if WEBKIT_CHECK_VERSION (1, 8, 0)
- settings = gtk_widget_get_settings (view->web_view);
- gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU,
- &icon_width, &icon_height);
if ((pixbuf = webkit_web_view_try_get_favicon_pixbuf (
WEBKIT_WEB_VIEW (view->web_view), 16, 16)))
midori_view_apply_icon (view, pixbuf, view->icon_uri);
@@ -620,7 +614,8 @@ _midori_web_view_load_icon (MidoriView* view)
if (pixbuf)
{
- settings = gtk_widget_get_settings (view->web_view);
+ gint icon_width, icon_height;
+ GtkSettings* settings = gtk_widget_get_settings (view->web_view);
gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU,
&icon_width, &icon_height);
pixbuf_scaled = gdk_pixbuf_scale_simple (pixbuf, icon_width,
diff --git a/midori/midori-view.h b/midori/midori-view.h
index a62e69d..40ede7c 100644
--- a/midori/midori-view.h
+++ b/midori/midori-view.h
@@ -60,9 +60,6 @@ GType
midori_view_get_type (void) G_GNUC_CONST;
GtkWidget*
-midori_view_new (KatzeNet* net);
-
-GtkWidget*
midori_view_new_with_title (const gchar* title,
MidoriWebSettings* settings,
gboolean append);
More information about the Xfce4-commits
mailing list