diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c index 3e14d748..1207ff69 100644 --- a/src/common/cfgfiles.c +++ b/src/common/cfgfiles.c @@ -416,6 +416,7 @@ const struct prefs vars[] = {"gui_dialog_left", P_OFFINT (hex_gui_dialog_left), TYPE_INT}, {"gui_dialog_top", P_OFFINT (hex_gui_dialog_top), TYPE_INT}, {"gui_dialog_width", P_OFFINT (hex_gui_dialog_width), TYPE_INT}, + {"gui_filesize_iec", P_OFFINT (hex_gui_filesize_iec), TYPE_BOOL}, {"gui_focus_omitalerts", P_OFFINT (hex_gui_focus_omitalerts), TYPE_BOOL}, {"gui_hide_menu", P_OFFINT (hex_gui_hide_menu), TYPE_BOOL}, {"gui_input_attr", P_OFFINT (hex_gui_input_attr), TYPE_BOOL}, diff --git a/src/common/hexchat.h b/src/common/hexchat.h index 5d96fd4b..1c48fe71 100644 --- a/src/common/hexchat.h +++ b/src/common/hexchat.h @@ -156,6 +156,7 @@ struct hexchatprefs unsigned int hex_gui_autoopen_recv; unsigned int hex_gui_autoopen_send; unsigned int hex_gui_compact; + unsigned int hex_gui_filesize_iec; unsigned int hex_gui_focus_omitalerts; unsigned int hex_gui_hide_menu; unsigned int hex_gui_input_attr; diff --git a/src/fe-gtk/dccgui.c b/src/fe-gtk/dccgui.c index 6d6a033d..10ec8388 100644 --- a/src/fe-gtk/dccgui.c +++ b/src/fe-gtk/dccgui.c @@ -107,11 +107,20 @@ static short view_mode; /* 1=download 2=upload 3=both */ static void proper_unit (DCC_SIZE size, char *buf, int buf_len) { - gchar *formated_str = g_format_size ((guint64)size); + gchar *formatted_str; + GFormatSizeFlags format_flags = G_FORMAT_SIZE_DEFAULT; - g_strlcpy (buf, formated_str, buf_len); +#ifndef __APPLE__ /* OS X uses SI */ +#ifndef WIN32 /* Windows uses IEC size (with SI format) */ + if (prefs.hex_gui_filesize_iec) /* Linux can't decide... */ +#endif + format_flags = G_FORMAT_SIZE_IEC_UNITS; +#endif - g_free (formated_str); + formatted_str = g_format_size_full ((guint64)size, format_flags); + g_strlcpy (buf, formatted_str, buf_len); + + g_free (formatted_str); } static void