summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Larsson <alexl@redhat.com>2002-05-11 23:53:50 +0000
committerAlexander Larsson <alexl@src.gnome.org>2002-05-11 23:53:50 +0000
commit9ebd9e20207e6d2c65f77a530d998239c8892a0c (patch)
tree4a11691cf61538950c08056c488dd755b6831f0b
parent2a263abf9891b69f425c18387ae601a77189ae77 (diff)
downloadnautilus-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--ChangeLog58
-rw-r--r--components/music/nautilus-music-view.c22
-rw-r--r--libnautilus-private/apps_nautilus_preferences.schemas42
-rw-r--r--libnautilus-private/nautilus-file.c2
-rw-r--r--libnautilus-private/nautilus-global-preferences.c35
-rw-r--r--libnautilus-private/nautilus-global-preferences.h9
-rw-r--r--libnautilus-private/nautilus-icon-canvas-item.c14
-rw-r--r--libnautilus-private/nautilus-icon-container.c43
-rw-r--r--libnautilus-private/nautilus-icon-container.h4
-rw-r--r--libnautilus-private/nautilus-icon-factory.c24
-rw-r--r--libnautilus-private/nautilus-icon-private.h6
-rw-r--r--src/nautilus-preferences-dialog.c27
-rw-r--r--src/nautilus-sidebar-tabs.c60
-rw-r--r--src/nautilus-sidebar-title.c29
14 files changed, 178 insertions, 197 deletions
diff --git a/ChangeLog b/ChangeLog
index cb24afcc3..6033b1dd1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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),