Author: kelnos
Date: 2006-07-29 07:20:13 +0000 (Sat, 29 Jul 2006)
New Revision: 22556
Modified:
xfdesktop/trunk/src/xfdesktop-file-icon-manager.c
xfdesktop/trunk/src/xfdesktop-file-icon.c
Log:
* use g_markup_printf_escaped() when dealing with filenames passed to
xfce_message_dialog(), as the labels are markup-enabled (bug 2082)
* fix fallback icon handling
Modified: xfdesktop/trunk/src/xfdesktop-file-icon-manager.c
===================================================================
--- xfdesktop/trunk/src/xfdesktop-file-icon-manager.c 2006-07-29 07:10:09 UTC
(rev 22555)
+++ xfdesktop/trunk/src/xfdesktop-file-icon-manager.c 2006-07-29 07:20:13 UTC
(rev 22556)
@@ -231,8 +231,8 @@
/* would prefer to use thunar_vfs_make_directory() here,
* but i don't want to use an async operation */
if(mkdir(pathname, 0700)) {
- gchar *primary = g_strdup_printf(_("Xfdesktop was
unable to create the folder \"%s\" to store desktop items:"),
- pathname);
+ gchar *primary = g_markup_printf_excaped(_("Xfdesktop
was unable to create the folder \"%s\" to store desktop items:"),
+ pathname);
xfce_message_dialog(NULL, _("Create Folder Failed"),
GTK_STOCK_DIALOG_WARNING, primary,
strerror(errno), GTK_STOCK_CLOSE,
@@ -240,8 +240,8 @@
g_free(primary);
}
} else if(!g_file_test(pathname, G_FILE_TEST_IS_DIR)) {
- gchar *primary = g_strdup_printf(_("Xfdesktop is unable to
use \"%s\" to hold desktop items because it is not a folder."),
- pathname);
+ gchar *primary = g_markup_printf_escaped(_("Xfdesktop is
unable to use \"%s\" to hold desktop items because it is not a folder."),
+ pathname);
xfce_message_dialog(NULL, _("Create Folder Failed"),
GTK_STOCK_DIALOG_WARNING, primary,
_("Please delete or rename the file."),
@@ -369,8 +369,8 @@
if(!thunar_vfs_volume_is_mounted(volume)) {
GtkWidget *toplevel =
gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
if(!thunar_vfs_volume_mount(volume, toplevel, &error)) {
- gchar *primary = g_strdup_printf(_("Unable to mount \"%s\":"),
-
thunar_vfs_volume_get_name(volume));
+ gchar *primary = g_markup_printf_escaped(_("Unable to mount
\"%s\":"),
+
thunar_vfs_volume_get_name(volume));
xfce_message_dialog(GTK_WINDOW(toplevel), _("Mount Failed"),
GTK_STOCK_DIALOG_ERROR, primary,
error ? error->message : _("Unknown
error."),
@@ -434,8 +434,8 @@
if(!succeeded) {
GtkWidget *toplevel =
gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
- gchar *primary = g_strdup_printf(_("Unable to launch \"%s\":"),
- info->display_name);
+ gchar *primary = g_markup_printf_escaped(_("Unable to launch \"%s\":"),
+ info->display_name);
xfce_message_dialog(GTK_WINDOW(toplevel), _("Launch Error"),
GTK_STOCK_DIALOG_ERROR, primary,
_("The associated application could not be found
or executed."),
@@ -640,8 +640,8 @@
if(g_list_length(selected) == 1) {
icon = XFDESKTOP_ICON(selected->data);
- primary = g_strdup_printf(_("Are you sure that you want to delete
\"%s\"?"),
- xfdesktop_icon_peek_label(icon));
+ primary = g_markup_printf_escaped(_("Are you sure that you want to
delete \"%s\"?"),
+ xfdesktop_icon_peek_label(icon));
ret = xfce_message_dialog(GTK_WINDOW(toplevel),
_("Question"), GTK_STOCK_DIALOG_QUESTION,
primary,
@@ -765,8 +765,8 @@
path_list,
&error))
{
- gchar *primary = g_strdup_printf(_("Unable to launch \"%s\":"),
-
thunar_vfs_mime_application_get_name(mime_app));
+ gchar *primary = g_markup_printf_escaped(_("Unable to launch \"%s\":"),
+
thunar_vfs_mime_application_get_name(mime_app));
xfce_message_dialog(GTK_WINDOW(toplevel), _("Launch Error"),
GTK_STOCK_DIALOG_ERROR, primary, error->message,
GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
@@ -799,8 +799,8 @@
gscreen = gtk_widget_get_screen(widget);
if(!xfdesktop_file_icon_launch_external(icon, gscreen)) {
- gchar *primary = g_strdup_printf(_("Unable to launch \"%s\":"),
- info->display_name);
+ gchar *primary = g_markup_printf_escaped(_("Unable to launch \"%s\":"),
+ info->display_name);
xfce_message_dialog(GTK_WINDOW(toplevel),
_("Launch Error"), GTK_STOCK_DIALOG_ERROR,
primary,
@@ -882,9 +882,9 @@
}
if(error) {
- gchar *primary = g_strdup_printf(is_mount ? _("Unable to mount
\"%s\":")
- : _("Unable to unmount
\"%s\":"),
- thunar_vfs_volume_get_name(volume));
+ gchar *primary = g_markup_printf_escaped(is_mount ? _("Unable to mount
\"%s\":")
+ : _("Unable to
unmount \"%s\":"),
+
thunar_vfs_volume_get_name(volume));
xfce_message_dialog(GTK_WINDOW(toplevel),
is_mount ? _("Mount Failed") : _("Unmount Failed"),
GTK_STOCK_DIALOG_ERROR, primary, error->message,
@@ -915,8 +915,8 @@
g_return_if_fail(volume);
if(!thunar_vfs_volume_eject(volume, toplevel, &error)) {
- gchar *primary = g_strdup_printf(_("Unable to eject \"%s\":"),
- thunar_vfs_volume_get_name(volume));
+ gchar *primary = g_markup_printf_escaped(_("Unable to eject \"%s\":"),
+
thunar_vfs_volume_get_name(volume));
xfce_message_dialog(GTK_WINDOW(toplevel), _("Eject Failed"),
GTK_STOCK_DIALOG_ERROR, primary, error->message,
GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
@@ -986,8 +986,8 @@
&error))
{
GtkWidget *toplevel =
gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
- gchar *primary = g_strdup_printf(_("Unable to set default
application for \"%s\" to \"%s\":"),
-
xfdesktop_icon_peek_label(XFDESKTOP_ICON(icon)),
+ gchar *primary = g_markup_printf_escaped(_("Unable to set default
application for \"%s\" to \"%s\":"),
+
xfdesktop_icon_peek_label(XFDESKTOP_ICON(icon)),
thunar_vfs_mime_application_get_name(mime_app));
xfce_message_dialog(GTK_WINDOW(toplevel), _("Properties Error"),
GTK_STOCK_DIALOG_ERROR, primary,
error->message,
@@ -1565,8 +1565,8 @@
GtkWidget *toplevel =
gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
const gchar *folder_name = g_object_get_data(G_OBJECT(job),
"xfdesktop-folder-name");
- gchar *primary = g_strdup_printf(_("Unable to create folder named
\"%s\":"),
- folder_name);
+ gchar *primary = g_markup_printf_escaped(_("Unable to create folder named
\"%s\":"),
+ folder_name);
xfce_message_dialog(GTK_WINDOW(toplevel), _("Create Folder Failed"),
GTK_STOCK_DIALOG_ERROR, primary, error->message,
@@ -1678,8 +1678,8 @@
GtkWidget *toplevel =
gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
const gchar *file_name = g_object_get_data(G_OBJECT(job),
"xfdesktop-file-name");
- gchar *primary = g_strdup_printf(_("Unable to create file named \"%s\":"),
- file_name);
+ gchar *primary = g_markup_printf_escaped(_("Unable to create file named
\"%s\":"),
+ file_name);
xfce_message_dialog(GTK_WINDOW(toplevel), _("Create File Failed"),
GTK_STOCK_DIALOG_ERROR, primary, error->message,
@@ -1776,7 +1776,7 @@
/* don't free |name|, GObject will do it */
} else {
if(error) {
- gchar *primary = g_strdup_printf(_("Unable to create file
\"%s\":"), name);
+ gchar *primary = g_markup_printf_escaped(_("Unable to create
file \"%s\":"), name);
xfce_message_dialog(GTK_WINDOW(toplevel), _("Create Error"),
GTK_STOCK_DIALOG_ERROR, primary,
error->message, GTK_STOCK_CLOSE,
@@ -2001,6 +2001,7 @@
if(!xfce_exec(buf, FALSE, TRUE, &error)) {
GtkWidget *toplevel =
gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
+ /* printf is to be translator-friendly */
gchar *primary = g_strdup_printf(_("Unable to launch \"%s\":"),
"xfce-setting-show");
xfce_message_dialog(GTK_WINDOW(toplevel), _("Launch Error"),
@@ -3450,8 +3451,8 @@
xfce_get_homedir(),
&error);
if(!succeeded) {
- gchar *primary = g_strdup_printf(_("Failed to run
\"%s\":"),
- tinfo->display_name);
+ gchar *primary = g_markup_printf_escaped(_("Failed to run
\"%s\":"),
+
tinfo->display_name);
xfce_message_dialog(NULL, _("Run Error"),
GTK_STOCK_DIALOG_ERROR,
primary, error->message,
Modified: xfdesktop/trunk/src/xfdesktop-file-icon.c
===================================================================
--- xfdesktop/trunk/src/xfdesktop-file-icon.c 2006-07-29 07:10:09 UTC (rev
22555)
+++ xfdesktop/trunk/src/xfdesktop-file-icon.c 2006-07-29 07:20:13 UTC (rev
22556)
@@ -120,8 +120,8 @@
static guint __signals[N_SIGS] = { 0, };
static GdkPixbuf *xfdesktop_fallback_icon = NULL;
+static gint xfdesktop_fallback_icon_size = -1;
-
#ifdef HAVE_THUNARX
G_DEFINE_TYPE_EXTENDED(XfdesktopFileIcon, xfdesktop_file_icon,
G_TYPE_OBJECT, 0,
@@ -237,6 +237,42 @@
}
}
+static void
+xfdesktop_file_icon_ensure_fallback_icon(gint size)
+{
+ if(size != xfdesktop_fallback_icon_size && xfdesktop_fallback_icon) {
+ g_object_unref(G_OBJECT(xfdesktop_fallback_icon));
+ xfdesktop_fallback_icon = NULL;
+ }
+
+ if(!xfdesktop_fallback_icon) {
+ xfdesktop_fallback_icon = gdk_pixbuf_new_from_file_at_size(DATADIR
"/pixmaps/xfdesktop/xfdesktop-fallback-icon.png",
+ size,
+ size,
+ NULL);
+ }
+
+ if(G_UNLIKELY(!xfdesktop_fallback_icon)) {
+ GtkWidget *dummy = gtk_invisible_new();
+ gtk_widget_realize(dummy);
+
+ /* this is kinda crappy, but hopefully should never happen */
+ xfdesktop_fallback_icon = gtk_widget_render_icon(dummy,
+
GTK_STOCK_MISSING_IMAGE,
+ (GtkIconSize)-1,
NULL);
+ if(gdk_pixbuf_get_width(xfdesktop_fallback_icon) != size
+ || gdk_pixbuf_get_height(xfdesktop_fallback_icon) != size)
+ {
+ GdkPixbuf *tmp = gdk_pixbuf_scale_simple(xfdesktop_fallback_icon,
+ size, size,
+ GDK_INTERP_BILINEAR);
+ g_object_unref(G_OBJECT(xfdesktop_fallback_icon));
+ xfdesktop_fallback_icon = tmp;
+ }
+ }
+
+ xfdesktop_fallback_icon_size = size;
+}
static XfdesktopFileIcon *
@@ -293,11 +329,8 @@
return;
icon->priv->pix_opacity = opacity;
- if(icon->priv->pix) {
- g_object_unref(G_OBJECT(icon->priv->pix));
- icon->priv->pix = NULL;
- }
+ xfdesktop_file_icon_invalidate_pixbuf(icon);
xfdesktop_icon_pixbuf_changed(XFDESKTOP_ICON(icon));
}
@@ -360,20 +393,8 @@
}
/* fallback */
- if(!file_icon->priv->pix) {
- if(xfdesktop_fallback_icon) {
- if(gdk_pixbuf_get_width(xfdesktop_fallback_icon) != size) {
- g_object_unref(G_OBJECT(xfdesktop_fallback_icon));
- xfdesktop_fallback_icon = NULL;
- }
- }
- if(!xfdesktop_fallback_icon) {
- xfdesktop_fallback_icon = gdk_pixbuf_new_from_file_at_size(DATADIR
"/pixmaps/xfdesktop/xfdesktop-fallback-icon.png",
- size,
- size,
- NULL);
- }
-
+ if(G_UNLIKELY(!file_icon->priv->pix)) {
+ xfdesktop_file_icon_ensure_fallback_icon(size);
file_icon->priv->pix = g_object_ref(G_OBJECT(xfdesktop_fallback_icon));
loaded_new = TRUE;
}
@@ -387,13 +408,31 @@
{
GdkPixbuf *sym_pix;
gint sym_pix_size = size * 2 / 3;
+ gint dest_size = size - sym_pix_size;
sym_pix = xfce_themed_icon_load(EMBLEM_SYMLINK, sym_pix_size);
if(sym_pix) {
+ if(gdk_pixbuf_get_width(sym_pix) != sym_pix_size
+ || gdk_pixbuf_get_height(sym_pix) != sym_pix_size)
+ {
+ GdkPixbuf *tmp = gdk_pixbuf_scale_simple(sym_pix,
+ sym_pix_size,
+ sym_pix_size,
+
GDK_INTERP_BILINEAR);
+ g_object_unref(G_OBJECT(sym_pix));
+ sym_pix = tmp;
+ }
+
+ DBG("calling gdk_pixbuf_composite(%p, %p, %d, %d, %d, %d,
%.1f, %.1f, %.1f, %.1f, %d, %d)",
+ sym_pix, file_icon->priv->pix,
+ dest_size, dest_size,
+ sym_pix_size, sym_pix_size,
+ (gdouble)dest_size, (gdouble)dest_size,
+ 1.0, 1.0, GDK_INTERP_BILINEAR, 255);
gdk_pixbuf_composite(sym_pix, file_icon->priv->pix,
- size - sym_pix_size, size - sym_pix_size,
+ dest_size, dest_size,
sym_pix_size, sym_pix_size,
- size - sym_pix_size, size - sym_pix_size,
+ dest_size, dest_size,
1.0, 1.0, GDK_INTERP_BILINEAR, 255);
g_object_unref(G_OBJECT(sym_pix));
}
@@ -566,8 +605,8 @@
g_list_free(path_list);
if(!succeeded) {
- gchar *primary = g_strdup_printf(_("Failed to run \"%s\":"),
-
file_icon->priv->info->display_name);
+ gchar *primary = g_markup_printf_escaped(_("Failed to run
\"%s\":"),
+
file_icon->priv->info->display_name);
xfce_message_dialog(NULL, _("Run Error"), GTK_STOCK_DIALOG_ERROR,
primary, error->message,
GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
@@ -692,8 +731,8 @@
gpointer user_data)
{
XfdesktopFileIcon *icon = XFDESKTOP_FILE_ICON(user_data);
- gchar *primary = g_strdup_printf("There was an error deleting \"%s\":",
- icon->priv->info->display_name);
+ gchar *primary = g_markup_printf_escaped("There was an error deleting
\"%s\":",
+ icon->priv->info->display_name);
xfce_message_dialog(NULL, _("Error"), GTK_STOCK_DIALOG_ERROR, primary,
error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
@@ -750,9 +789,9 @@
FALSE);
if(!thunar_vfs_info_rename(icon->priv->info, new_name, &error)) {
- gchar *primary = g_strdup_printf(_("Failed to rename \"%s\" to
\"%s\":"),
- icon->priv->info->display_name,
- new_name);
+ gchar *primary = g_markup_printf_escaped(_("Failed to rename \"%s\" to
\"%s\":"),
+
icon->priv->info->display_name,
+ new_name);
xfce_message_dialog(NULL, _("Error"), GTK_STOCK_DIALOG_ERROR,
primary, error->message,
GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits