summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamiro Estrugo <ramiro@src.gnome.org>2000-07-05 17:26:37 +0000
committerRamiro Estrugo <ramiro@src.gnome.org>2000-07-05 17:26:37 +0000
commit1a3bf03d52dea207526d86a24cbf283ac0a6a52b (patch)
treee9900ef26fc86f67591ddafb07c20153d76afadc
parentfb85312413c21b4a3a6cce67998b9c0fab70f699 (diff)
downloadnautilus-1a3bf03d52dea207526d86a24cbf283ac0a6a52b.tar.gz
libnautilus-extensions/nautilus-icon-container.c, New function to set the
* libnautilus-extensions/nautilus-icon-container.c, * libnautilus-extensions/nautilus-icon-container.h: (nautilus_icon_container_set_label_font_for_zoom_level): New function to set the font for a zoom level. (nautilus_icon_container_initialize), Initialize to fonts to a well known font. Dont look at font preferences here. Fonts should be suppied by the icon container user. * src/file-manager/fm-icon-view.c: (fm_icon_view_update_icon_container_fonts), New function to update the icon container's zoom level specific fonts. (directory_view_font_familiy_changed_callback), (fm_icon_view_initialize), (fm_icon_view_destroy), Keep track of font familiy preference changes and update the icon container fonts as needed. (create_icon_container): Update the fonts for the first time when the icon container is created.
-rw-r--r--ChangeLog27
-rw-r--r--libnautilus-extensions/nautilus-icon-container.c37
-rw-r--r--libnautilus-extensions/nautilus-icon-container.h78
-rw-r--r--libnautilus-private/nautilus-icon-container.c37
-rw-r--r--libnautilus-private/nautilus-icon-container.h78
-rw-r--r--src/file-manager/fm-icon-view.c80
6 files changed, 230 insertions, 107 deletions
diff --git a/ChangeLog b/ChangeLog
index fe6201bbe..51e2353b9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,32 @@
2000-07-05 Ramiro Estrugo <ramiro@eazel.com>
+ * libnautilus-extensions/nautilus-icon-container.c,
+ * libnautilus-extensions/nautilus-icon-container.h:
+ (nautilus_icon_container_set_label_font_for_zoom_level):
+ New function to set the font for a zoom level.
+
+ (nautilus_icon_container_initialize),
+ Initialize to fonts to a well known font. Dont look at font
+ preferences here. Fonts should be suppied by the icon container
+ user.
+
+ * src/file-manager/fm-icon-view.c:
+ (fm_icon_view_update_icon_container_fonts),
+ New function to update the icon container's zoom level specific
+ fonts.
+
+ (directory_view_font_familiy_changed_callback),
+ (fm_icon_view_initialize),
+ (fm_icon_view_destroy),
+ Keep track of font familiy preference changes and update the icon
+ container fonts as needed.
+
+ (create_icon_container):
+ Update the fonts for the first time when the icon container is
+ created.
+
+2000-07-05 Ramiro Estrugo <ramiro@eazel.com>
+
* libnautilus-extensions/nautilus-string-picker.c:
(nautilus_string_picker_initialize_class),
(nautilus_string_picker_initialize),
diff --git a/libnautilus-extensions/nautilus-icon-container.c b/libnautilus-extensions/nautilus-icon-container.c
index 55b0fcf7d..2d89deeeb 100644
--- a/libnautilus-extensions/nautilus-icon-container.c
+++ b/libnautilus-extensions/nautilus-icon-container.c
@@ -2406,17 +2406,14 @@ nautilus_icon_container_initialize (NautilusIconContainer *container)
details->zoom_level = NAUTILUS_ZOOM_LEVEL_STANDARD;
- /* FIXME: Fonts should be supplied by the caller and not
- * hard-wired calls from NautilusIconContainer to font factory.
- */
/* font table - this isn't exactly proportional, but it looks better than computed */
- details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLEST] = nautilus_font_factory_get_font_from_preferences (8);
- details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLER] = nautilus_font_factory_get_font_from_preferences (8);
- details->label_font[NAUTILUS_ZOOM_LEVEL_SMALL] = nautilus_font_factory_get_font_from_preferences (10);
- details->label_font[NAUTILUS_ZOOM_LEVEL_STANDARD] = nautilus_font_factory_get_font_from_preferences (12);
- details->label_font[NAUTILUS_ZOOM_LEVEL_LARGE] = nautilus_font_factory_get_font_from_preferences (14);
- details->label_font[NAUTILUS_ZOOM_LEVEL_LARGER] = nautilus_font_factory_get_font_from_preferences (18);
- details->label_font[NAUTILUS_ZOOM_LEVEL_LARGEST] = nautilus_font_factory_get_font_from_preferences (18);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLEST] = nautilus_font_factory_get_font_by_family ("helvetica", 8);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLER] = nautilus_font_factory_get_font_by_family ("helvetica", 8);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_SMALL] = nautilus_font_factory_get_font_by_family ("helvetica", 10);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_STANDARD] = nautilus_font_factory_get_font_by_family ("helvetica", 12);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_LARGE] = nautilus_font_factory_get_font_by_family ("helvetica", 14);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_LARGER] = nautilus_font_factory_get_font_by_family ("helvetica", 18);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_LARGEST] = nautilus_font_factory_get_font_by_family ("helvetica", 18);
container->details = details;
@@ -3708,6 +3705,26 @@ nautilus_icon_container_has_stored_icon_positions (NautilusIconContainer *contai
return FALSE;
}
+void
+nautilus_icon_container_set_label_font_for_zoom_level (NautilusIconContainer *container,
+ int zoom_level,
+ GdkFont *font)
+{
+ g_return_if_fail (container != NULL);
+ g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container));
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (zoom_level >= NAUTILUS_ZOOM_LEVEL_SMALLEST);
+ g_return_if_fail (zoom_level <= NAUTILUS_ZOOM_LEVEL_LARGEST);
+
+ if (container->details->label_font[zoom_level] != NULL) {
+ gdk_font_unref (container->details->label_font[zoom_level]);
+ }
+
+ gdk_font_ref (font);
+
+ container->details->label_font[zoom_level] = font;
+}
+
#if ! defined (NAUTILUS_OMIT_SELF_CHECK)
static char *
diff --git a/libnautilus-extensions/nautilus-icon-container.h b/libnautilus-extensions/nautilus-icon-container.h
index 45c0c5fc1..0cc2ec9ba 100644
--- a/libnautilus-extensions/nautilus-icon-container.h
+++ b/libnautilus-extensions/nautilus-icon-container.h
@@ -123,50 +123,58 @@ struct NautilusIconContainerClass {
};
/* GtkObject */
-guint nautilus_icon_container_get_type (void);
-GtkWidget *nautilus_icon_container_new (void);
+guint nautilus_icon_container_get_type (void);
+GtkWidget *nautilus_icon_container_new (void);
+
/* adding, removing, and managing icons */
-void nautilus_icon_container_clear (NautilusIconContainer *view);
-gboolean nautilus_icon_container_add (NautilusIconContainer *view,
- NautilusIconData *data);
-gboolean nautilus_icon_container_remove (NautilusIconContainer *view,
- NautilusIconData *data);
-void nautilus_icon_container_request_update (NautilusIconContainer *view,
- NautilusIconData *data);
-void nautilus_icon_container_request_update_all (NautilusIconContainer *container);
+void nautilus_icon_container_clear (NautilusIconContainer *view);
+gboolean nautilus_icon_container_add (NautilusIconContainer *view,
+ NautilusIconData *data);
+gboolean nautilus_icon_container_remove (NautilusIconContainer *view,
+ NautilusIconData *data);
+void nautilus_icon_container_request_update (NautilusIconContainer *view,
+ NautilusIconData *data);
+void nautilus_icon_container_request_update_all (NautilusIconContainer *container);
+
/* control the layout */
-gboolean nautilus_icon_container_is_auto_layout (NautilusIconContainer *container);
-void nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
- gboolean auto_layout);
-void nautilus_icon_container_sort (NautilusIconContainer *container);
-void nautilus_icon_container_freeze_icon_positions (NautilusIconContainer *container);
+gboolean nautilus_icon_container_is_auto_layout (NautilusIconContainer *container);
+void nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
+ gboolean auto_layout);
+void nautilus_icon_container_sort (NautilusIconContainer *container);
+void nautilus_icon_container_freeze_icon_positions (NautilusIconContainer *container);
+
/* operations on all icons */
-void nautilus_icon_container_unselect_all (NautilusIconContainer *view);
-void nautilus_icon_container_select_all (NautilusIconContainer *view);
+void nautilus_icon_container_unselect_all (NautilusIconContainer *view);
+void nautilus_icon_container_select_all (NautilusIconContainer *view);
+
/* operations on the selection */
-GList *nautilus_icon_container_get_selection (NautilusIconContainer *view);
-void nautilus_icon_container_set_selection (NautilusIconContainer *view,
- GList *selection);
-gboolean nautilus_icon_container_has_stretch_handles (NautilusIconContainer *container);
-gboolean nautilus_icon_container_is_stretched (NautilusIconContainer *container);
-void nautilus_icon_container_show_stretch_handles (NautilusIconContainer *container);
-void nautilus_icon_container_unstretch (NautilusIconContainer *container);
-void nautilus_icon_container_start_renaming_selected_item (NautilusIconContainer *container);
-gboolean nautilus_icon_container_is_renaming (NautilusIconContainer *container);
+GList *nautilus_icon_container_get_selection (NautilusIconContainer *view);
+void nautilus_icon_container_set_selection (NautilusIconContainer *view,
+ GList *selection);
+gboolean nautilus_icon_container_has_stretch_handles (NautilusIconContainer *container);
+gboolean nautilus_icon_container_is_stretched (NautilusIconContainer *container);
+void nautilus_icon_container_show_stretch_handles (NautilusIconContainer *container);
+void nautilus_icon_container_unstretch (NautilusIconContainer *container);
+void nautilus_icon_container_start_renaming_selected_item (NautilusIconContainer *container);
+gboolean nautilus_icon_container_is_renaming (NautilusIconContainer *container);
+
/* options */
-int nautilus_icon_container_get_zoom_level (NautilusIconContainer *view);
-void nautilus_icon_container_set_zoom_level (NautilusIconContainer *view,
- int new_zoom_level);
-void nautilus_icon_container_set_single_click_mode (NautilusIconContainer *view,
- gboolean single_click_mode);
-void nautilus_icon_container_enable_linger_selection (NautilusIconContainer *view,
- gboolean enable);
-void nautilus_icon_container_set_anti_aliased_mode (NautilusIconContainer *view,
- gboolean anti_aliased_mode);
+int nautilus_icon_container_get_zoom_level (NautilusIconContainer *view);
+void nautilus_icon_container_set_zoom_level (NautilusIconContainer *view,
+ int new_zoom_level);
+void nautilus_icon_container_set_single_click_mode (NautilusIconContainer *view,
+ gboolean single_click_mode);
+void nautilus_icon_container_enable_linger_selection (NautilusIconContainer *view,
+ gboolean enable);
+void nautilus_icon_container_set_anti_aliased_mode (NautilusIconContainer *view,
+ gboolean anti_aliased_mode);
+void nautilus_icon_container_set_label_font_for_zoom_level (NautilusIconContainer *container,
+ int zoom_level,
+ GdkFont *font);
#endif
diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c
index 55b0fcf7d..2d89deeeb 100644
--- a/libnautilus-private/nautilus-icon-container.c
+++ b/libnautilus-private/nautilus-icon-container.c
@@ -2406,17 +2406,14 @@ nautilus_icon_container_initialize (NautilusIconContainer *container)
details->zoom_level = NAUTILUS_ZOOM_LEVEL_STANDARD;
- /* FIXME: Fonts should be supplied by the caller and not
- * hard-wired calls from NautilusIconContainer to font factory.
- */
/* font table - this isn't exactly proportional, but it looks better than computed */
- details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLEST] = nautilus_font_factory_get_font_from_preferences (8);
- details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLER] = nautilus_font_factory_get_font_from_preferences (8);
- details->label_font[NAUTILUS_ZOOM_LEVEL_SMALL] = nautilus_font_factory_get_font_from_preferences (10);
- details->label_font[NAUTILUS_ZOOM_LEVEL_STANDARD] = nautilus_font_factory_get_font_from_preferences (12);
- details->label_font[NAUTILUS_ZOOM_LEVEL_LARGE] = nautilus_font_factory_get_font_from_preferences (14);
- details->label_font[NAUTILUS_ZOOM_LEVEL_LARGER] = nautilus_font_factory_get_font_from_preferences (18);
- details->label_font[NAUTILUS_ZOOM_LEVEL_LARGEST] = nautilus_font_factory_get_font_from_preferences (18);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLEST] = nautilus_font_factory_get_font_by_family ("helvetica", 8);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLER] = nautilus_font_factory_get_font_by_family ("helvetica", 8);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_SMALL] = nautilus_font_factory_get_font_by_family ("helvetica", 10);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_STANDARD] = nautilus_font_factory_get_font_by_family ("helvetica", 12);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_LARGE] = nautilus_font_factory_get_font_by_family ("helvetica", 14);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_LARGER] = nautilus_font_factory_get_font_by_family ("helvetica", 18);
+ details->label_font[NAUTILUS_ZOOM_LEVEL_LARGEST] = nautilus_font_factory_get_font_by_family ("helvetica", 18);
container->details = details;
@@ -3708,6 +3705,26 @@ nautilus_icon_container_has_stored_icon_positions (NautilusIconContainer *contai
return FALSE;
}
+void
+nautilus_icon_container_set_label_font_for_zoom_level (NautilusIconContainer *container,
+ int zoom_level,
+ GdkFont *font)
+{
+ g_return_if_fail (container != NULL);
+ g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container));
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (zoom_level >= NAUTILUS_ZOOM_LEVEL_SMALLEST);
+ g_return_if_fail (zoom_level <= NAUTILUS_ZOOM_LEVEL_LARGEST);
+
+ if (container->details->label_font[zoom_level] != NULL) {
+ gdk_font_unref (container->details->label_font[zoom_level]);
+ }
+
+ gdk_font_ref (font);
+
+ container->details->label_font[zoom_level] = font;
+}
+
#if ! defined (NAUTILUS_OMIT_SELF_CHECK)
static char *
diff --git a/libnautilus-private/nautilus-icon-container.h b/libnautilus-private/nautilus-icon-container.h
index 45c0c5fc1..0cc2ec9ba 100644
--- a/libnautilus-private/nautilus-icon-container.h
+++ b/libnautilus-private/nautilus-icon-container.h
@@ -123,50 +123,58 @@ struct NautilusIconContainerClass {
};
/* GtkObject */
-guint nautilus_icon_container_get_type (void);
-GtkWidget *nautilus_icon_container_new (void);
+guint nautilus_icon_container_get_type (void);
+GtkWidget *nautilus_icon_container_new (void);
+
/* adding, removing, and managing icons */
-void nautilus_icon_container_clear (NautilusIconContainer *view);
-gboolean nautilus_icon_container_add (NautilusIconContainer *view,
- NautilusIconData *data);
-gboolean nautilus_icon_container_remove (NautilusIconContainer *view,
- NautilusIconData *data);
-void nautilus_icon_container_request_update (NautilusIconContainer *view,
- NautilusIconData *data);
-void nautilus_icon_container_request_update_all (NautilusIconContainer *container);
+void nautilus_icon_container_clear (NautilusIconContainer *view);
+gboolean nautilus_icon_container_add (NautilusIconContainer *view,
+ NautilusIconData *data);
+gboolean nautilus_icon_container_remove (NautilusIconContainer *view,
+ NautilusIconData *data);
+void nautilus_icon_container_request_update (NautilusIconContainer *view,
+ NautilusIconData *data);
+void nautilus_icon_container_request_update_all (NautilusIconContainer *container);
+
/* control the layout */
-gboolean nautilus_icon_container_is_auto_layout (NautilusIconContainer *container);
-void nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
- gboolean auto_layout);
-void nautilus_icon_container_sort (NautilusIconContainer *container);
-void nautilus_icon_container_freeze_icon_positions (NautilusIconContainer *container);
+gboolean nautilus_icon_container_is_auto_layout (NautilusIconContainer *container);
+void nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
+ gboolean auto_layout);
+void nautilus_icon_container_sort (NautilusIconContainer *container);
+void nautilus_icon_container_freeze_icon_positions (NautilusIconContainer *container);
+
/* operations on all icons */
-void nautilus_icon_container_unselect_all (NautilusIconContainer *view);
-void nautilus_icon_container_select_all (NautilusIconContainer *view);
+void nautilus_icon_container_unselect_all (NautilusIconContainer *view);
+void nautilus_icon_container_select_all (NautilusIconContainer *view);
+
/* operations on the selection */
-GList *nautilus_icon_container_get_selection (NautilusIconContainer *view);
-void nautilus_icon_container_set_selection (NautilusIconContainer *view,
- GList *selection);
-gboolean nautilus_icon_container_has_stretch_handles (NautilusIconContainer *container);
-gboolean nautilus_icon_container_is_stretched (NautilusIconContainer *container);
-void nautilus_icon_container_show_stretch_handles (NautilusIconContainer *container);
-void nautilus_icon_container_unstretch (NautilusIconContainer *container);
-void nautilus_icon_container_start_renaming_selected_item (NautilusIconContainer *container);
-gboolean nautilus_icon_container_is_renaming (NautilusIconContainer *container);
+GList *nautilus_icon_container_get_selection (NautilusIconContainer *view);
+void nautilus_icon_container_set_selection (NautilusIconContainer *view,
+ GList *selection);
+gboolean nautilus_icon_container_has_stretch_handles (NautilusIconContainer *container);
+gboolean nautilus_icon_container_is_stretched (NautilusIconContainer *container);
+void nautilus_icon_container_show_stretch_handles (NautilusIconContainer *container);
+void nautilus_icon_container_unstretch (NautilusIconContainer *container);
+void nautilus_icon_container_start_renaming_selected_item (NautilusIconContainer *container);
+gboolean nautilus_icon_container_is_renaming (NautilusIconContainer *container);
+
/* options */
-int nautilus_icon_container_get_zoom_level (NautilusIconContainer *view);
-void nautilus_icon_container_set_zoom_level (NautilusIconContainer *view,
- int new_zoom_level);
-void nautilus_icon_container_set_single_click_mode (NautilusIconContainer *view,
- gboolean single_click_mode);
-void nautilus_icon_container_enable_linger_selection (NautilusIconContainer *view,
- gboolean enable);
-void nautilus_icon_container_set_anti_aliased_mode (NautilusIconContainer *view,
- gboolean anti_aliased_mode);
+int nautilus_icon_container_get_zoom_level (NautilusIconContainer *view);
+void nautilus_icon_container_set_zoom_level (NautilusIconContainer *view,
+ int new_zoom_level);
+void nautilus_icon_container_set_single_click_mode (NautilusIconContainer *view,
+ gboolean single_click_mode);
+void nautilus_icon_container_enable_linger_selection (NautilusIconContainer *view,
+ gboolean enable);
+void nautilus_icon_container_set_anti_aliased_mode (NautilusIconContainer *view,
+ gboolean anti_aliased_mode);
+void nautilus_icon_container_set_label_font_for_zoom_level (NautilusIconContainer *container,
+ int zoom_level,
+ GdkFont *font);
#endif
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index 08b505848..ae1ea5061 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -48,17 +48,18 @@
#include <libgnomevfs/gnome-vfs-xfer.h>
#include <libgnomevfs/gnome-vfs-async-ops.h>
#include <libnautilus/nautilus-bonobo-ui.h>
-#include <libnautilus-extensions/nautilus-metadata.h>
+#include <libnautilus-extensions/nautilus-directory-background.h>
+#include <libnautilus-extensions/nautilus-directory.h>
+#include <libnautilus-extensions/nautilus-font-factory.h>
#include <libnautilus-extensions/nautilus-glib-extensions.h>
+#include <libnautilus-extensions/nautilus-global-preferences.h>
#include <libnautilus-extensions/nautilus-gtk-extensions.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
+#include <libnautilus-extensions/nautilus-icon-container.h>
+#include <libnautilus-extensions/nautilus-icon-factory.h>
#include <libnautilus-extensions/nautilus-link.h>
+#include <libnautilus-extensions/nautilus-metadata.h>
#include <libnautilus-extensions/nautilus-string.h>
-#include <libnautilus-extensions/nautilus-directory.h>
-#include <libnautilus-extensions/nautilus-directory-background.h>
-#include <libnautilus-extensions/nautilus-global-preferences.h>
-#include <libnautilus-extensions/nautilus-icon-factory.h>
-#include <libnautilus-extensions/nautilus-icon-container.h>
/* Paths to use when creating & referring to Bonobo menu items */
#define MENU_PATH_STRETCH_ICON "/Settings/Stretch"
@@ -75,13 +76,15 @@
#define MENU_PATH_RENAME "/File/Rename"
/* forward declarations */
-static void create_icon_container (FMIconView *icon_view);
-static void fm_icon_view_initialize (FMIconView *icon_view);
-static void fm_icon_view_initialize_class (FMIconViewClass *klass);
-static void fm_icon_view_set_zoom_level (FMIconView *view,
- NautilusZoomLevel new_level,
- gboolean always_set_level);
-static void text_attribute_names_changed_callback (gpointer user_data);
+static void create_icon_container (FMIconView *icon_view);
+static void fm_icon_view_initialize (FMIconView *icon_view);
+static void fm_icon_view_initialize_class (FMIconViewClass *klass);
+static void fm_icon_view_set_zoom_level (FMIconView *view,
+ NautilusZoomLevel new_level,
+ gboolean always_set_level);
+static void fm_icon_view_update_icon_container_fonts (FMIconView *icon_view);
+static void text_attribute_names_changed_callback (gpointer user_data);
+static void directory_view_font_familiy_changed_callback (gpointer user_data);
NAUTILUS_DEFINE_CLASS_BOILERPLATE (FMIconView, fm_icon_view, FM_TYPE_DIRECTORY_VIEW);
@@ -166,6 +169,10 @@ fm_icon_view_destroy (GtkObject *object)
text_attribute_names_changed_callback,
icon_view);
+ nautilus_preferences_remove_callback (NAUTILUS_PREFERENCES_DIRECTORY_VIEW_FONT_FAMILY,
+ directory_view_font_familiy_changed_callback,
+ icon_view);
+
if (icon_view->details->react_to_icon_change_idle_id != 0) {
gtk_idle_remove (icon_view->details->react_to_icon_change_idle_id);
}
@@ -1505,6 +1512,15 @@ text_attribute_names_changed_callback (gpointer user_data)
(get_icon_container (FM_ICON_VIEW (user_data)));
}
+static void
+directory_view_font_familiy_changed_callback (gpointer user_data)
+{
+ g_assert (user_data != NULL);
+ g_assert (FM_IS_ICON_VIEW (user_data));
+
+ fm_icon_view_update_icon_container_fonts (FM_ICON_VIEW (user_data));
+}
+
/* GtkObject methods. */
static void
@@ -1549,11 +1565,15 @@ fm_icon_view_initialize (FMIconView *icon_view)
icon_view->details->default_zoom_level = NAUTILUS_ZOOM_LEVEL_STANDARD;
icon_view->details->sort = &sort_criteria[0];
- nautilus_preferences_add_callback
- (NAUTILUS_PREFERENCES_ICON_VIEW_TEXT_ATTRIBUTE_NAMES,
- text_attribute_names_changed_callback, icon_view);
-
create_icon_container (icon_view);
+
+ nautilus_preferences_add_callback (NAUTILUS_PREFERENCES_ICON_VIEW_TEXT_ATTRIBUTE_NAMES,
+ text_attribute_names_changed_callback,
+ icon_view);
+
+ nautilus_preferences_add_callback (NAUTILUS_PREFERENCES_DIRECTORY_VIEW_FONT_FAMILY,
+ directory_view_font_familiy_changed_callback,
+ icon_view);
}
static gboolean
@@ -1586,6 +1606,30 @@ icon_view_move_copy_items (NautilusIconContainer *container,
}
static void
+fm_icon_view_update_icon_container_fonts (FMIconView *icon_view)
+{
+ /* font size table - this isn't exactly proportional, but it looks better than computed */
+ static guint font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST + 1] = {
+ 8, 8, 10, 12, 14, 18, 18 };
+ NautilusIconContainer *icon_container;
+ guint i;
+
+ icon_container = get_icon_container (icon_view);
+ g_assert (icon_container != NULL);
+
+ for (i = 0; i <= NAUTILUS_ZOOM_LEVEL_LARGEST; i++) {
+ GdkFont *font;
+
+ font = nautilus_font_factory_get_font_from_preferences (font_size_table[i]);
+ g_assert (font != NULL);
+ nautilus_icon_container_set_label_font_for_zoom_level (icon_container, i, font);
+ gdk_font_unref (font);
+ }
+
+ nautilus_icon_container_request_update_all (icon_container);
+}
+
+static void
create_icon_container (FMIconView *icon_view)
{
NautilusIconContainer *icon_container;
@@ -1664,5 +1708,7 @@ create_icon_container (FMIconView *icon_view)
gtk_container_add (GTK_CONTAINER (icon_view),
GTK_WIDGET (icon_container));
+ fm_icon_view_update_icon_container_fonts (icon_view);
+
gtk_widget_show (GTK_WIDGET (icon_container));
}