diff options
author | Alex Larsson <alexl@redhat.com> | 2002-05-11 23:53:50 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2002-05-11 23:53:50 +0000 |
commit | 9ebd9e20207e6d2c65f77a530d998239c8892a0c (patch) | |
tree | 4a11691cf61538950c08056c488dd755b6831f0b | |
parent | 2a263abf9891b69f425c18387ae601a77189ae77 (diff) | |
download | nautilus-9ebd9e20207e6d2c65f77a530d998239c8892a0c.tar.gz |
Don't use custom font.
2002-05-11 Alex Larsson <alexl@redhat.com>
* components/music/nautilus-music-view.c: (set_up_tree_view):
Don't use custom font.
* libnautilus-private/apps_nautilus_preferences.schemas:
Add preferences/desktop_font.
Remove old fonts keys
* libnautilus-private/nautilus-file.c:
(nautilus_file_get_display_name_nocopy):
Don't leak.
* libnautilus-private/nautilus-global-preferences.c:
* libnautilus-private/nautilus-global-preferences.h:
Remove old font prefs. Add desktop font prefs.
* libnautilus-private/nautilus-icon-canvas-item.c:
(create_label_layout):
Use default widget font unless one is set.
* libnautilus-private/nautilus-icon-container.c: (finalize),
(style_set), (nautilus_icon_container_class_init),
(nautilus_icon_container_instance_init),
(nautilus_icon_container_set_font):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
Change nautilus_icon_container_set_font_name to
nautilus_icon_container_set_font.
Change font_size_table to have the difference from the base font size.
Invalidate labels on style_set.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Use default widget font for embedded text.
* src/nautilus-preferences-dialog.c:
* src/nautilus-sidebar-title.c:
Remove font prefs. Update on style_set.
* src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_class_init),
(nautilus_sidebar_tabs_load_theme_data), (style_set),
(nautilus_sidebar_tabs_init), (nautilus_sidebar_tabs_destroy),
(make_tab_text_layout):
Use normal gtk+ fonts.
* src/file-manager/fm-desktop-icon-view.c: (font_changed_callback),
(fm_desktop_icon_view_update_icon_container_fonts),
(fm_desktop_icon_view_init):
Use desktop font.
* src/file-manager/fm-icon-view.c:
(default_zoom_level_changed_callback), (create_icon_container),
(fm_icon_view_instance_init):
(nautilus_sidebar_title_class_init), (style_set),
(nautilus_sidebar_title_init), (update_title_font):
Remove font handling.
-rw-r--r-- | ChangeLog | 58 | ||||
-rw-r--r-- | components/music/nautilus-music-view.c | 22 | ||||
-rw-r--r-- | libnautilus-private/apps_nautilus_preferences.schemas | 42 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file.c | 2 | ||||
-rw-r--r-- | libnautilus-private/nautilus-global-preferences.c | 35 | ||||
-rw-r--r-- | libnautilus-private/nautilus-global-preferences.h | 9 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-canvas-item.c | 14 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-container.c | 43 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-container.h | 4 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-factory.c | 24 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-private.h | 6 | ||||
-rw-r--r-- | src/nautilus-preferences-dialog.c | 27 | ||||
-rw-r--r-- | src/nautilus-sidebar-tabs.c | 60 | ||||
-rw-r--r-- | src/nautilus-sidebar-title.c | 29 |
14 files changed, 178 insertions, 197 deletions
@@ -1,3 +1,61 @@ +2002-05-11 Alex Larsson <alexl@redhat.com> + + * components/music/nautilus-music-view.c: (set_up_tree_view): + Don't use custom font. + + * libnautilus-private/apps_nautilus_preferences.schemas: + Add preferences/desktop_font. + Remove old fonts keys + + * libnautilus-private/nautilus-file.c: + (nautilus_file_get_display_name_nocopy): + Don't leak. + + * libnautilus-private/nautilus-global-preferences.c: + * libnautilus-private/nautilus-global-preferences.h: + Remove old font prefs. Add desktop font prefs. + + * libnautilus-private/nautilus-icon-canvas-item.c: + (create_label_layout): + Use default widget font unless one is set. + + * libnautilus-private/nautilus-icon-container.c: (finalize), + (style_set), (nautilus_icon_container_class_init), + (nautilus_icon_container_instance_init), + (nautilus_icon_container_set_font): + * libnautilus-private/nautilus-icon-container.h: + * libnautilus-private/nautilus-icon-private.h: + Change nautilus_icon_container_set_font_name to + nautilus_icon_container_set_font. + Change font_size_table to have the difference from the base font size. + Invalidate labels on style_set. + + * libnautilus-private/nautilus-icon-factory.c: + (embedded_text_font_changed_callback), (embed_text): + Use default widget font for embedded text. + + * src/nautilus-preferences-dialog.c: + * src/nautilus-sidebar-title.c: + Remove font prefs. Update on style_set. + + * src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_class_init), + (nautilus_sidebar_tabs_load_theme_data), (style_set), + (nautilus_sidebar_tabs_init), (nautilus_sidebar_tabs_destroy), + (make_tab_text_layout): + Use normal gtk+ fonts. + + * src/file-manager/fm-desktop-icon-view.c: (font_changed_callback), + (fm_desktop_icon_view_update_icon_container_fonts), + (fm_desktop_icon_view_init): + Use desktop font. + + * src/file-manager/fm-icon-view.c: + (default_zoom_level_changed_callback), (create_icon_container), + (fm_icon_view_instance_init): + (nautilus_sidebar_title_class_init), (style_set), + (nautilus_sidebar_title_init), (update_title_font): + Remove font handling. + 2002-05-10 Anders Carlsson <andersca@gnu.org> * src/nautilus-bookmark-list.c: (nautilus_bookmark_list_load_file): diff --git a/components/music/nautilus-music-view.c b/components/music/nautilus-music-view.c index f3b3c456b..41df6301d 100644 --- a/components/music/nautilus-music-view.c +++ b/components/music/nautilus-music-view.c @@ -335,27 +335,15 @@ time_cell_data_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkT static void set_up_tree_view (NautilusMusicView *music_view) { - int standard_font_size; - char *font_name; - PangoFontDescription *new_font; GtkCellRenderer *cell; GtkTreeViewColumn *column; GtkTreeView *tree_view; - font_name = eel_preferences_get (NAUTILUS_PREFERENCES_LIST_VIEW_FONT); - standard_font_size = eel_preferences_get_enum ( - NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL_FONT_SIZE); - - new_font = pango_font_description_from_string (font_name); - pango_font_description_set_size (new_font, standard_font_size * PANGO_SCALE); - tree_view = GTK_TREE_VIEW (music_view->details->tree_view); - gtk_widget_modify_font (GTK_WIDGET (tree_view), new_font); - /* The track number column */ cell = gtk_cell_renderer_text_new (); - g_object_set (cell, "xalign", 1.0, "font_desc", new_font, NULL); + g_object_set (cell, "xalign", 1.0, NULL); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Track")); @@ -369,7 +357,6 @@ set_up_tree_view (NautilusMusicView *music_view) /* The name column */ cell = gtk_cell_renderer_text_new (); - g_object_set (cell, "font_desc", new_font, NULL); column = gtk_tree_view_column_new_with_attributes (_("Title"), cell, "text", TITLE_COLUMN, @@ -380,7 +367,6 @@ set_up_tree_view (NautilusMusicView *music_view) /* The artist column */ cell = gtk_cell_renderer_text_new (); - g_object_set (cell, "font_desc", new_font, NULL); column = gtk_tree_view_column_new_with_attributes (_("Artist"), cell, "text", ARTIST_COLUMN, @@ -391,7 +377,7 @@ set_up_tree_view (NautilusMusicView *music_view) /* The bitrate column */ cell = gtk_cell_renderer_text_new (); - g_object_set (cell, "xalign", 1.0, "font_desc", new_font, NULL); + g_object_set (cell, "xalign", 1.0, NULL); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Bit Rate")); gtk_tree_view_column_pack_start (column, cell, TRUE); @@ -404,7 +390,7 @@ set_up_tree_view (NautilusMusicView *music_view) /* The time column */ cell = gtk_cell_renderer_text_new (); - g_object_set (cell, "xalign", 1.0, "font_desc", new_font, NULL); + g_object_set (cell, "xalign", 1.0, NULL); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Time")); gtk_tree_view_column_pack_start (column, cell, TRUE); @@ -414,8 +400,6 @@ set_up_tree_view (NautilusMusicView *music_view) gtk_tree_view_column_set_sort_column_id (column, TIME_COLUMN); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_append_column (tree_view, column); - - pango_font_description_free (new_font); } /* initialize ourselves by connecting to the location change signal and allocating our subviews */ diff --git a/libnautilus-private/apps_nautilus_preferences.schemas b/libnautilus-private/apps_nautilus_preferences.schemas index e44cc55f1..10a8c6ed5 100644 --- a/libnautilus-private/apps_nautilus_preferences.schemas +++ b/libnautilus-private/apps_nautilus_preferences.schemas @@ -284,6 +284,20 @@ </schema> <schema> + <key>/schemas/apps/nautilus/preferences/desktop_font</key> + <applyto>/apps/nautilus/preferences/desktop_font</applyto> + <owner>nautilus</owner> + <type>string</type> + <default>sans 12</default> + <locale name="C"> + <short>Desktop font</short> + <long> + The font description used for the icons on the desktop. + </long> + </locale> + </schema> + + <schema> <key>/schemas/apps/nautilus/preferences/desktop_is_home_dir</key> <applyto>/apps/nautilus/preferences/desktop_is_home_dir</applyto> <owner>nautilus</owner> @@ -593,33 +607,5 @@ </locale> </schema> - <schema> - <key>/schemas/apps/nautilus/list_view/font</key> - <applyto>/apps/nautilus/list_view/font</applyto> - <owner>nautilus</owner> - <type>string</type> - <default>sans</default> - <locale name="C"> - <short>The default list view font</short> - <long> - The default font for use in the list view. - </long> - </locale> - </schema> - - <schema> - <key>/schemas/apps/nautilus/list_view/default_zoom_level_font_size</key> - <applyto>/apps/nautilus/list_view/default_zoom_level_font_size</applyto> - <owner>nautilus</owner> - <type>string</type> - <default>12</default> - <locale name="C"> - <short>Default zoom font size</short> - <long> - The font size at default zoom in the list view. - </long> - </locale> - </schema> - </schemalist> </gconfschemafile> diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c index 46a25de89..fead36437 100644 --- a/libnautilus-private/nautilus-file.c +++ b/libnautilus-private/nautilus-file.c @@ -2283,8 +2283,8 @@ nautilus_file_get_display_name_nocopy (NautilusFile *file) if (utf8_name != NULL) { g_free (name); name = utf8_name; + /* Guaranteed to be correct utf8 here */ validated = TRUE; - return name; /* Guaranteed to be correct utf8 here */ } } else if (!broken_filenames) { /* name was valid, no need to re-validate */ diff --git a/libnautilus-private/nautilus-global-preferences.c b/libnautilus-private/nautilus-global-preferences.c index 36a3f2087..ffb265f1d 100644 --- a/libnautilus-private/nautilus-global-preferences.c +++ b/libnautilus-private/nautilus-global-preferences.c @@ -447,31 +447,12 @@ static const PreferenceDefault preference_defaults[] = { PREFERENCE_STRING, NULL, default_home_location_callback, g_free }, - - /* Default fonts */ - { NAUTILUS_PREFERENCES_DEFAULT_FONT, + { NAUTILUS_PREFERENCES_DESKTOP_FONT, PREFERENCE_STRING, NULL, default_font_callback, g_free }, - { NAUTILUS_PREFERENCES_DEFAULT_FONT_SIZE, - PREFERENCE_STRING, - "12", - NULL, NULL, - "standard_font_size" - }, - - /* Icon View Default Preferences */ - { NAUTILUS_PREFERENCES_ICON_VIEW_FONT, - PREFERENCE_STRING, - NULL, default_font_callback, g_free - }, - { NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL_FONT_SIZE, - PREFERENCE_STRING, - "12", - NULL, NULL, - "standard_font_size" - }, + /* Icon View Default Preferences */ { NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_SORT_ORDER, PREFERENCE_STRING, "name", @@ -504,16 +485,6 @@ static const PreferenceDefault preference_defaults[] = { }, /* List View Default Preferences */ - { NAUTILUS_PREFERENCES_LIST_VIEW_FONT, - PREFERENCE_STRING, - NULL, default_font_callback, g_free - }, - { NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL_FONT_SIZE, - PREFERENCE_STRING, - "12", - NULL, NULL, - "standard_font_size" - }, { NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_SORT_ORDER, PREFERENCE_STRING, "name", @@ -679,7 +650,7 @@ global_preferences_install_defaults (void) static gpointer default_font_callback (void) { - return g_strdup ("sans"); + return g_strdup ("sans 12"); } static int diff --git a/libnautilus-private/nautilus-global-preferences.h b/libnautilus-private/nautilus-global-preferences.h index c7311241c..c292ffd67 100644 --- a/libnautilus-private/nautilus-global-preferences.h +++ b/libnautilus-private/nautilus-global-preferences.h @@ -46,6 +46,7 @@ G_BEGIN_DECLS /* Desktop options */ #define NAUTILUS_PREFERENCES_SHOW_DESKTOP "preferences/show_desktop" #define NAUTILUS_PREFERENCES_DESKTOP_IS_HOME_DIR "preferences/desktop_is_home_dir" +#define NAUTILUS_PREFERENCES_DESKTOP_FONT "preferences/desktop_font" /* Display */ #define NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES "/desktop/gnome/file_views/show_hidden_files" @@ -59,10 +60,6 @@ G_BEGIN_DECLS #define NAUTILUS_PREFERENCES_HOME_URI "preferences/home_uri" #define NAUTILUS_PREFERENCES_HIDE_BUILT_IN_BOOKMARKS "preferences/hide_built_in_bookmarks" -/* Content fonts */ -#define NAUTILUS_PREFERENCES_DEFAULT_FONT "preferences/default_font" -#define NAUTILUS_PREFERENCES_DEFAULT_FONT_SIZE "preferences/default_font_size" - /* Single/Double click preference */ #define NAUTILUS_PREFERENCES_CLICK_POLICY "preferences/click_policy" @@ -102,9 +99,7 @@ enum #define NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_SORT_ORDER "icon_view/default_sort_order" #define NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_USE_TIGHTER_LAYOUT "icon_view/default_use_tighter_layout" #define NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL "icon_view/default_zoom_level" -#define NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL_FONT_SIZE "icon_view/default_zoom_level_font_size" #define NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_USE_MANUAL_LAYOUT "icon_view/default_use_manual_layout" -#define NAUTILUS_PREFERENCES_ICON_VIEW_FONT "icon_view/font" /* The icon view uses 2 variables to store the sort order and * whether to use manual layout. However, the UI for these @@ -122,8 +117,6 @@ enum #define NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_SORT_IN_REVERSE_ORDER "list_view/default_sort_in_reverse_order" #define NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_SORT_ORDER "list_view/default_sort_order" #define NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL "list_view/default_zoom_level" -#define NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL_FONT_SIZE "list_view/default_zoom_level_font_size" -#define NAUTILUS_PREFERENCES_LIST_VIEW_FONT "list_view/font" /* News panel */ #define NAUTILUS_PREFERENCES_NEWS_MAX_ITEMS "news/max_items" diff --git a/libnautilus-private/nautilus-icon-canvas-item.c b/libnautilus-private/nautilus-icon-canvas-item.c index e78c9c56b..3aa7b990a 100644 --- a/libnautilus-private/nautilus-icon-canvas-item.c +++ b/libnautilus-private/nautilus-icon-canvas-item.c @@ -1159,11 +1159,13 @@ create_label_layout (NautilusIconCanvasItem *item, const char *text) { PangoLayout *layout; + PangoContext *context; PangoFontDescription *desc; NautilusIconContainer *container; container = NAUTILUS_ICON_CONTAINER (GNOME_CANVAS_ITEM (item)->canvas); - layout = pango_layout_new (eel_gnome_canvas_get_pango_context (GNOME_CANVAS_ITEM (item)->canvas)); + context = eel_gnome_canvas_get_pango_context (GNOME_CANVAS_ITEM (item)->canvas); + layout = pango_layout_new (context); pango_layout_set_text (layout, text, -1); pango_layout_set_width (layout, floor (nautilus_icon_canvas_item_get_max_text_width (item)) * PANGO_SCALE); @@ -1171,12 +1173,14 @@ create_label_layout (NautilusIconCanvasItem *item, pango_layout_set_spacing (layout, LABEL_LINE_SPACING); /* Create a font description */ - if (container->details->font_name == NULL) { - desc = pango_font_description_new (); + if (container->details->font) { + desc = pango_font_description_from_string (container->details->font); } else { - desc = pango_font_description_from_string (container->details->font_name); + desc = pango_font_description_copy (pango_context_get_font_description (context)); + pango_font_description_set_size (desc, + pango_font_description_get_size (desc) + + container->details->font_size_table [container->details->zoom_level]); } - pango_font_description_set_size (desc, container->details->font_size_table [container->details->zoom_level] * PANGO_SCALE); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c index 034ed6cb2..f04d10e9d 100644 --- a/libnautilus-private/nautilus-icon-container.c +++ b/libnautilus-private/nautilus-icon-container.c @@ -2385,7 +2385,7 @@ finalize (GObject *object) g_hash_table_destroy (details->icon_set); details->icon_set = NULL; - g_free (details->font_name); + g_free (details->font); g_free (details); @@ -2470,6 +2470,21 @@ unrealize (GtkWidget *widget) GTK_WIDGET_CLASS (parent_class)->unrealize (widget); } +static void +style_set (GtkWidget *widget, + GtkStyle *previous_style) +{ + NautilusIconContainer *container; + + if (GTK_WIDGET_REALIZED (widget)) { + container = NAUTILUS_ICON_CONTAINER (widget); + invalidate_label_sizes (container); + nautilus_icon_container_request_update_all (container); + } + + GTK_WIDGET_CLASS (parent_class)->style_set (widget, previous_style); +} + static gboolean button_press_event (GtkWidget *widget, GdkEventButton *event) @@ -3361,6 +3376,7 @@ nautilus_icon_container_class_init (NautilusIconContainerClass *class) widget_class->motion_notify_event = motion_notify_event; widget_class->key_press_event = key_press_event; widget_class->get_accessible = get_accessible; + widget_class->style_set = style_set; /* Initialize the stipple bitmap. */ @@ -3391,13 +3407,13 @@ nautilus_icon_container_instance_init (NautilusIconContainer *container) details->zoom_level = NAUTILUS_ZOOM_LEVEL_STANDARD; - details->font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = 8; - details->font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = 8; - details->font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = 10; - details->font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = 10; - details->font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 12; - details->font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 14; - details->font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 14; + details->font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -3 * PANGO_SCALE; + details->font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = -3 * PANGO_SCALE; + details->font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = -2 * PANGO_SCALE; + details->font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = 0 * PANGO_SCALE; + details->font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 2 * PANGO_SCALE; + details->font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 4 * PANGO_SCALE; + details->font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 4 * PANGO_SCALE; container->details = details; @@ -5165,20 +5181,21 @@ nautilus_icon_container_theme_changed (gpointer user_data) } void -nautilus_icon_container_set_font_name (NautilusIconContainer *container, - const char *font_name) +nautilus_icon_container_set_font (NautilusIconContainer *container, + const char *font) { g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container)); - if (eel_strcmp (container->details->font_name, font_name) == 0) { + if (eel_strcmp (container->details->font, font) == 0) { return; } - g_free (container->details->font_name); - container->details->font_name = g_strdup (font_name); + g_free (container->details->font); + container->details->font = g_strdup (font); invalidate_label_sizes (container); nautilus_icon_container_request_update_all (container); + gtk_widget_queue_draw (GTK_WIDGET (container)); } void diff --git a/libnautilus-private/nautilus-icon-container.h b/libnautilus-private/nautilus-icon-container.h index 643d65fe0..4e84be538 100644 --- a/libnautilus-private/nautilus-icon-container.h +++ b/libnautilus-private/nautilus-icon-container.h @@ -227,8 +227,8 @@ gboolean nautilus_icon_container_get_is_fixed_size (Nautilu void nautilus_icon_container_set_is_fixed_size (NautilusIconContainer *container, gboolean is_fixed_size); void nautilus_icon_container_reset_scroll_region (NautilusIconContainer *container); -void nautilus_icon_container_set_font_name (NautilusIconContainer *container, - const char *font_name); +void nautilus_icon_container_set_font (NautilusIconContainer *container, + const char *font); void nautilus_icon_container_set_font_size_table (NautilusIconContainer *container, const int font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST + 1]); void nautilus_icon_container_set_margins (NautilusIconContainer *container, diff --git a/libnautilus-private/nautilus-icon-factory.c b/libnautilus-private/nautilus-icon-factory.c index a44f462c1..f5b2339ee 100644 --- a/libnautilus-private/nautilus-icon-factory.c +++ b/libnautilus-private/nautilus-icon-factory.c @@ -48,6 +48,7 @@ #include <eel/eel-pango-extensions.h> #include <eel/eel-string.h> #include <eel/eel-vfs-extensions.h> +#include <gtk/gtksettings.h> #include <gtk/gtksignal.h> #include <libgnome/gnome-i18n.h> #include <libgnome/gnome-util.h> @@ -2255,7 +2256,9 @@ static gboolean embedded_text_preferences_callbacks_added = FALSE; static PangoFontDescription *embedded_text_font = NULL; static void -embedded_text_font_changed_callback (gpointer callback_data) +embedded_text_font_changed_callback (GtkSettings *settings, + GParamSpec *pspec, + gpointer callback_data) { gboolean clear_cache; char *font_name; @@ -2266,7 +2269,15 @@ embedded_text_font_changed_callback (gpointer callback_data) pango_font_description_free (embedded_text_font); } - font_name = eel_preferences_get (NAUTILUS_PREFERENCES_DEFAULT_FONT); + font_name = NULL; + g_object_get (settings, + "gtk-font-name", &font_name, + NULL); + + if (font_name == NULL) { + font_name = g_strdup ("Sans"); + } + embedded_text_font = pango_font_description_from_string (font_name); g_free (font_name); @@ -2286,6 +2297,7 @@ embed_text (GdkPixbuf *pixbuf_without_text, GdkPixbuf *pixbuf_with_text; PangoLayout *layout; static PangoContext *context; + GtkSettings *settings; g_return_val_if_fail (pixbuf_without_text != NULL, NULL); @@ -2300,10 +2312,10 @@ embed_text (GdkPixbuf *pixbuf_without_text, if (!embedded_text_preferences_callbacks_added) { embedded_text_preferences_callbacks_added = TRUE; - eel_preferences_add_callback (NAUTILUS_PREFERENCES_DEFAULT_FONT, - embedded_text_font_changed_callback, - GINT_TO_POINTER (TRUE)); - embedded_text_font_changed_callback (GINT_TO_POINTER (FALSE)); + settings = gtk_settings_get_default (); + g_signal_connect (settings, "notify::gtk-font-name", + G_CALLBACK (embedded_text_font_changed_callback), GINT_TO_POINTER (TRUE)); + embedded_text_font_changed_callback (settings, NULL, GINT_TO_POINTER (FALSE)); } if (context == NULL) { diff --git a/libnautilus-private/nautilus-icon-private.h b/libnautilus-private/nautilus-icon-private.h index ba6b063ac..649b11df3 100644 --- a/libnautilus-private/nautilus-icon-private.h +++ b/libnautilus-private/nautilus-icon-private.h @@ -166,8 +166,10 @@ struct NautilusIconContainerDetails { /* zoom level */ int zoom_level; - /* fonts used to draw labels */ - char *font_name; + /* specific fonts used to draw labels */ + char *font; + + /* font sizes used to draw labels */ int font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST + 1]; /* pixbuf and color for label highlighting */ diff --git a/src/nautilus-preferences-dialog.c b/src/nautilus-preferences-dialog.c index e4bbb854d..04f25a494 100644 --- a/src/nautilus-preferences-dialog.c +++ b/src/nautilus-preferences-dialog.c @@ -51,11 +51,6 @@ static void preferences_dialog_populate_themes_group (EelPreferencesGroup static GtkWidget *preferences_dialog; static EelPreferencesItemDescription appearance_items[] = { - { N_("Fonts"), - NAUTILUS_PREFERENCES_DEFAULT_FONT, - N_("Default font:"), - EEL_PREFERENCE_ITEM_FONT, - }, { N_("Nautilus Themes"), NULL, NULL, @@ -189,11 +184,6 @@ static EelPreferencesItemDescription view_preferences_items[] = { EEL_PREFERENCE_ITEM_BOOLEAN }, { N_("Icon View Defaults"), - NAUTILUS_PREFERENCES_ICON_VIEW_FONT, - N_("Font:"), - EEL_PREFERENCE_ITEM_FONT - }, - { N_("Icon View Defaults"), NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL, N_("Default zoom level:"), EEL_PREFERENCE_ITEM_ENUMERATION_MENU, @@ -205,12 +195,6 @@ static EelPreferencesItemDescription view_preferences_items[] = { EEL_PREFERENCE_ITEM_BOOLEAN, NULL, 0, 1 }, - { N_("Icon View Defaults"), - NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL_FONT_SIZE, - N_("Font size at default zoom level:"), - EEL_PREFERENCE_ITEM_ENUMERATION_MENU, - NULL, 0, 1 - }, /* List View Defaults */ { N_("List View Defaults"), @@ -224,11 +208,6 @@ static EelPreferencesItemDescription view_preferences_items[] = { EEL_PREFERENCE_ITEM_BOOLEAN }, { N_("List View Defaults"), - NAUTILUS_PREFERENCES_LIST_VIEW_FONT, - N_("Font:"), - EEL_PREFERENCE_ITEM_FONT - }, - { N_("List View Defaults"), NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL, N_("Default zoom level:"), EEL_PREFERENCE_ITEM_ENUMERATION_MENU, @@ -240,12 +219,6 @@ static EelPreferencesItemDescription view_preferences_items[] = { EEL_PREFERENCE_ITEM_PADDING, NULL, 0, 1 }, - { N_("List View Defaults"), - NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL_FONT_SIZE, - N_("Font size at default zoom level:"), - EEL_PREFERENCE_ITEM_ENUMERATION_MENU, - NULL, 0, 1 - }, { NULL } }; diff --git a/src/nautilus-sidebar-tabs.c b/src/nautilus-sidebar-tabs.c index 80b71ee90..31a8e588d 100644 --- a/src/nautilus-sidebar-tabs.c +++ b/src/nautilus-sidebar-tabs.c @@ -104,7 +104,6 @@ struct NautilusSidebarTabsDetails { GdkColor prelit_text_color; GdkPixbuf *tab_piece_images[LAST_TAB_OFFSET]; - PangoFontDescription *tab_font; int tab_height; int tab_left_offset; char *title; @@ -138,7 +137,8 @@ static void draw_or_layout_all_tabs (NautilusSidebarTabs gboolean layout_only); static TabItem* tab_item_find_by_name (NautilusSidebarTabs *sidebar_tabs, const char *name); -static void default_font_changed_callback (gpointer callback_data); +static void style_set (GtkWidget *widget, + GtkStyle *previous_style); EEL_CLASS_BOILERPLATE (NautilusSidebarTabs, nautilus_sidebar_tabs, GTK_TYPE_WIDGET) @@ -154,6 +154,7 @@ nautilus_sidebar_tabs_class_init (NautilusSidebarTabsClass *class) object_class->destroy = nautilus_sidebar_tabs_destroy; widget_class->expose_event = nautilus_sidebar_tabs_expose; widget_class->size_allocate = nautilus_sidebar_tabs_size_allocate; + widget_class->style_set = style_set; } /* utilities to set up the text color alternatives */ @@ -235,35 +236,19 @@ nautilus_sidebar_tabs_load_theme_data (NautilusSidebarTabs *sidebar_tabs) } } } - } - - default_font_changed_callback (sidebar_tabs); + } + + gtk_widget_queue_resize (GTK_WIDGET (sidebar_tabs)); } -/* Use the font from preferences */ +static void recalculate_size(NautilusSidebarTabs *sidebar_tabs); + static void -default_font_changed_callback (gpointer callback_data) +style_set (GtkWidget *widget, + GtkStyle *previous_style) { - PangoFontDescription *new_font; - char *font_name; - NautilusSidebarTabs *sidebar_tabs; - - g_return_if_fail (NAUTILUS_IS_SIDEBAR_TABS (callback_data)); - - sidebar_tabs = NAUTILUS_SIDEBAR_TABS (callback_data); - - font_name = eel_preferences_get (NAUTILUS_PREFERENCES_DEFAULT_FONT); - new_font = pango_font_description_from_string (font_name); - pango_font_description_set_size (new_font, DEFAULT_FONT_SIZE * PANGO_SCALE); - - if (sidebar_tabs->details->tab_font != NULL) { - pango_font_description_free (sidebar_tabs->details->tab_font); - sidebar_tabs->details->tab_font = NULL; - } - - sidebar_tabs->details->tab_font = new_font; - - gtk_widget_queue_resize (GTK_WIDGET (sidebar_tabs)); + recalculate_size (NAUTILUS_SIDEBAR_TABS (widget)); + gtk_widget_queue_resize (widget); } /* initialize a newly allocated sidebar tabs object */ @@ -303,10 +288,6 @@ nautilus_sidebar_tabs_init (NautilusSidebarTabs *sidebar_tabs) (EelPreferencesCallback) nautilus_sidebar_tabs_load_theme_data, sidebar_tabs); - eel_preferences_add_callback (NAUTILUS_PREFERENCES_DEFAULT_FONT, - default_font_changed_callback, - sidebar_tabs); - sidebar_tabs->details->title_prelit = FALSE; } @@ -406,12 +387,6 @@ nautilus_sidebar_tabs_destroy (GtkObject *object) (EelPreferencesCallback) nautilus_sidebar_tabs_load_theme_data, sidebar_tabs); - eel_preferences_remove_callback (NAUTILUS_PREFERENCES_DEFAULT_FONT, - default_font_changed_callback, - sidebar_tabs); - - pango_font_description_free (sidebar_tabs->details->tab_font); - g_free (sidebar_tabs->details); sidebar_tabs->details = NULL; } @@ -603,11 +578,18 @@ make_tab_text_layout (NautilusSidebarTabs *sidebar_tabs, const char *tab_name) { PangoLayout *layout; + PangoFontDescription *desc; + PangoContext *context; - layout = pango_layout_new (eel_gtk_widget_get_pango_ft2_context (GTK_WIDGET (sidebar_tabs))); + context = eel_gtk_widget_get_pango_ft2_context (GTK_WIDGET (sidebar_tabs)); + layout = pango_layout_new (context); pango_layout_set_text (layout, tab_name, -1); - pango_layout_set_font_description (layout, sidebar_tabs->details->tab_font); + desc = pango_font_description_copy (pango_context_get_font_description (context)); + pango_font_description_set_size (desc, DEFAULT_FONT_SIZE * PANGO_SCALE); + pango_layout_set_font_description (layout, desc); + pango_font_description_free (desc); + return layout; } diff --git a/src/nautilus-sidebar-title.c b/src/nautilus-sidebar-title.c index 8d4237370..71794882e 100644 --- a/src/nautilus-sidebar-title.c +++ b/src/nautilus-sidebar-title.c @@ -79,8 +79,8 @@ static GtkWidget * sidebar_title_create_more_info_label (void); static void update_all (NautilusSidebarTitle *sidebar_title); static void update_title_font (NautilusSidebarTitle *sidebar_title); static EelBackground *nautilus_sidebar_title_background (NautilusSidebarTitle *sidebar_title); - -static const char *default_font_name; +static void style_set (GtkWidget *widget, + GtkStyle *previous_style); struct NautilusSidebarTitleDetails { NautilusFile *file; @@ -111,9 +111,8 @@ nautilus_sidebar_title_class_init (NautilusSidebarTitleClass *class) object_class->destroy = nautilus_sidebar_title_destroy; widget_class->size_allocate = nautilus_sidebar_title_size_allocate; + widget_class->style_set = style_set; - eel_preferences_add_auto_string (NAUTILUS_PREFERENCES_DEFAULT_FONT, - &default_font_name); } static void @@ -136,26 +135,28 @@ realize_callback (NautilusSidebarTitle *sidebar_title) } static void -default_font_changed_callback (gpointer callback_data) +style_set (GtkWidget *widget, + GtkStyle *previous_style) { NautilusSidebarTitle *sidebar_title; PangoFontDescription *font_desc; + GtkStyle *style; - g_return_if_fail (NAUTILUS_IS_SIDEBAR_TITLE (callback_data)); + g_return_if_fail (NAUTILUS_IS_SIDEBAR_TITLE (widget)); - sidebar_title = NAUTILUS_SIDEBAR_TITLE (callback_data); + sidebar_title = NAUTILUS_SIDEBAR_TITLE (widget); /* Update the dynamically-sized title font */ update_title_font (sidebar_title); /* Update the fixed-size "more info" font */ - font_desc = pango_font_description_from_string (default_font_name); + style = gtk_widget_get_style (widget); + font_desc = pango_font_description_copy (style->font_desc); pango_font_description_set_size (font_desc, MORE_INFO_FONT_SIZE * PANGO_SCALE); gtk_widget_modify_font (sidebar_title->details->more_info_label, font_desc); pango_font_description_free (font_desc); - } static void @@ -195,10 +196,6 @@ nautilus_sidebar_title_init (NautilusSidebarTitle *sidebar_title) /* Keep track of changes in graphics trade offs */ update_all (sidebar_title); - eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_DEFAULT_FONT, - default_font_changed_callback, - sidebar_title, - G_OBJECT (sidebar_title)); eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_THEME, nautilus_sidebar_title_theme_changed, @@ -207,7 +204,7 @@ nautilus_sidebar_title_init (NautilusSidebarTitle *sidebar_title) /* initialize the label colors & fonts */ nautilus_sidebar_title_theme_changed (sidebar_title); - default_font_changed_callback (sidebar_title); + style_set (GTK_WIDGET (sidebar_title), NULL); } /* destroy by throwing away private storage */ @@ -477,6 +474,7 @@ update_title_font (NautilusSidebarTitle *sidebar_title) int available_width; PangoFontDescription *title_font; int largest_fitting_font_size; + GtkStyle *style; /* Make sure theres work to do */ if (eel_strlen (sidebar_title->details->title_text) < 1) { @@ -490,7 +488,8 @@ update_title_font (NautilusSidebarTitle *sidebar_title) return; } - title_font = pango_font_description_from_string (default_font_name); + style = gtk_widget_get_style (GTK_WIDGET (sidebar_title)); + title_font = pango_font_description_copy (style->font_desc); largest_fitting_font_size = eel_pango_font_description_get_largest_fitting_font_size ( title_font, gtk_widget_get_pango_context (sidebar_title->details->title_label), |