[Xfce4-commits] <ristretto:master> Show current image as icon in taskbar (Bug #8837)
Stephan Arts
noreply at xfce.org
Sat Aug 4 22:08:01 CEST 2012
Updating branch refs/heads/master
to 90f831384b05a30b62a170415771579af6524109 (commit)
from fd0e863fdf07fdf91666c5a2a1c779c4ff474155 (commit)
commit 90f831384b05a30b62a170415771579af6524109
Author: Stephan Arts <stephan at xfce.org>
Date: Sat Aug 4 22:06:55 2012 +0200
Show current image as icon in taskbar (Bug #8837)
src/main_window.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/src/main_window.c b/src/main_window.c
index df4d8e4..2e9b1f3 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -38,6 +38,7 @@
#include "util.h"
#include "file.h"
#include "icon_bar.h"
+#include "thumbnailer.h"
#include "image_list.h"
#include "image_viewer.h"
#include "main_window.h"
@@ -94,6 +95,7 @@ struct _RsttoMainWindowPriv
GtkRecentManager *recent_manager;
RsttoSettings *settings_manager;
RsttoWallpaperManager *wallpaper_manager;
+ RsttoThumbnailer *thumbnailer;
GtkWidget *menubar;
GtkWidget *toolbar;
@@ -161,6 +163,11 @@ static gint
cb_compare_app_infos (
gconstpointer a,
gconstpointer b);
+static void
+cb_rstto_thumbnailer_ready(
+ RsttoThumbnailer *thumbnailer,
+ RsttoFile *file,
+ gpointer user_data);
static gboolean
rstto_window_save_geometry_timer (gpointer user_data);
@@ -764,6 +771,7 @@ rstto_main_window_init (RsttoMainWindow *window)
window->priv->ui_manager = gtk_ui_manager_new ();
window->priv->recent_manager = gtk_recent_manager_get_default();
window->priv->settings_manager = rstto_settings_new();
+ window->priv->thumbnailer = rstto_thumbnailer_new();
/* Setup the image filter list for drag and drop */
window->priv->filter = gtk_file_filter_new ();
@@ -1109,6 +1117,12 @@ rstto_main_window_init (RsttoMainWindow *window)
G_CALLBACK (cb_rstto_desktop_type_changed),
window);
+ g_signal_connect (
+ G_OBJECT(window->priv->thumbnailer),
+ "ready",
+ G_CALLBACK (cb_rstto_thumbnailer_ready),
+ window);
+
}
static void
@@ -1247,6 +1261,7 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
const gchar *id;
GtkWidget *menu_item = NULL;
GDesktopAppInfo *app_info = NULL;
+ const GdkPixbuf *pixbuf = NULL;
GtkWidget *open_with_menu = gtk_menu_new();
GtkWidget *open_with_window_menu = gtk_menu_new();
@@ -1270,6 +1285,17 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
-1.0,
0);
+ pixbuf = rstto_file_get_thumbnail (cur_file, THUMBNAIL_SIZE_VERY_SMALL);
+ if (pixbuf != NULL)
+ {
+ gtk_window_set_icon (GTK_WINDOW (window), gdk_pixbuf_copy (pixbuf));
+ }
+ else
+ {
+ gtk_window_set_icon (GTK_WINDOW (window), NULL);
+ gtk_window_set_icon_name (GTK_WINDOW (window), "ristretto");
+ }
+
app_list = g_app_info_get_all_for_type (content_type);
editor = rstto_mime_db_lookup (window->priv->db, content_type);
@@ -1358,6 +1384,9 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
gtk_widget_show_all (open_with_window_menu);
title = g_strdup (RISTRETTO_APP_TITLE);
+
+ gtk_window_set_icon (GTK_WINDOW (window), NULL);
+ gtk_window_set_icon_name (GTK_WINDOW (window), "ristretto");
}
rstto_main_window_update_buttons (window);
@@ -4157,3 +4186,28 @@ cb_compare_app_infos (
{
return g_app_info_equal (G_APP_INFO (a), G_APP_INFO (b)) ? 0 : 1;
}
+
+static void
+cb_rstto_thumbnailer_ready(
+ RsttoThumbnailer *thumbnailer,
+ RsttoFile *file,
+ gpointer user_data)
+{
+ RsttoMainWindow *window = RSTTO_MAIN_WINDOW (user_data);
+ RsttoFile *cur_file = rstto_image_list_iter_get_file (window->priv->iter);
+ const GdkPixbuf *pixbuf = NULL;
+
+ if (file == cur_file)
+ {
+ pixbuf = rstto_file_get_thumbnail (file, THUMBNAIL_SIZE_VERY_SMALL);
+ if (pixbuf != NULL)
+ {
+ gtk_window_set_icon (GTK_WINDOW (window), gdk_pixbuf_copy(pixbuf));
+ }
+ else
+ {
+ gtk_window_set_icon (GTK_WINDOW (window), NULL);
+ gtk_window_set_icon_name (GTK_WINDOW (window), "ristretto");
+ }
+ }
+}
More information about the Xfce4-commits
mailing list