summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Worsley <fworsley@shaw.ca>2002-06-03 21:16:17 +0000
committerAlexander Larsson <alexl@src.gnome.org>2002-06-03 21:16:17 +0000
commit12936d48fb6802783f56345f6e5cbbc854b56576 (patch)
tree2fe67879b6c079c8fe9b1f4424d09df21798e661
parent1a9f5081cf60ebcf91aab4b14addb0494ef43d81 (diff)
downloadnautilus-12936d48fb6802783f56345f6e5cbbc854b56576.tar.gz
always use the user selected font at default zoom nice if you have a
2002-06-02 Frank Worsley <fworsley@shaw.ca> * src/file-manager/fm-icon-view.c: * src/file-manager/fm-list-view.c: always use the user selected font at default zoom nice if you have a small/large default zoom so you don't have a tiny/large font
-rw-r--r--ChangeLog8
-rw-r--r--src/file-manager/fm-icon-view.c91
-rw-r--r--src/file-manager/fm-list-view.c149
3 files changed, 228 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 86ef9c457..cd9a48589 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2002-06-02 Frank Worsley <fworsley@shaw.ca>
+
+ * src/file-manager/fm-icon-view.c:
+ * src/file-manager/fm-list-view.c:
+ always use the user selected font at default zoom
+ nice if you have a small/large default zoom so you
+ don't have a tiny/large font
+
2002-06-03 Dave Camp <dave@ximian.com>
* src/nautilus-window-manage-views.c (update_title): Removed
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index bf9491005..698ca1197 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -959,6 +959,95 @@ fm_icon_view_end_loading (FMDirectoryView *view)
icon_view->details->loading = FALSE;
}
+static void
+fm_icon_view_update_font_size_table (FMIconView *view)
+{
+ NautilusIconContainer *container;
+ int font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST + 1];
+
+ container = get_icon_container (view);
+ g_assert (container != NULL);
+
+ switch (get_default_zoom_level ())
+ {
+ case NAUTILUS_ZOOM_LEVEL_LARGEST:
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -5 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = -4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = -4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = -2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 0 * PANGO_SCALE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_LARGER:
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = -4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = -2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 0 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 2 * PANGO_SCALE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_LARGE:
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = -2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 0 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 4 * PANGO_SCALE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_STANDARD:
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = -2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = 0 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 4 * PANGO_SCALE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_SMALL:
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = -2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = 0 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = 2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 5 * PANGO_SCALE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_SMALLER:
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = 0 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = 2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 5 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 5 * PANGO_SCALE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_SMALLEST:
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = 0 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = 2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 5 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 5 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 6 * PANGO_SCALE;
+ break;
+ default:
+ g_warning ("invalid default list-view zoom level");
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLEST] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALLER] = -3 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_SMALL] = -2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_STANDARD] = 0 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGE] = 2 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGER] = 4 * PANGO_SCALE;
+ font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST] = 4 * PANGO_SCALE;
+ break;
+ }
+
+ nautilus_icon_container_set_font_size_table (container, font_size_table);
+}
+
static NautilusZoomLevel
fm_icon_view_get_zoom_level (FMIconView *view)
{
@@ -2012,6 +2101,7 @@ default_zoom_level_changed_callback (gpointer callback_data)
level = nautilus_file_get_integer_metadata (file,
NAUTILUS_METADATA_KEY_ICON_VIEW_ZOOM_LEVEL,
get_default_zoom_level ());
+ fm_icon_view_update_font_size_table (icon_view);
fm_icon_view_set_zoom_level (icon_view, level, TRUE);
}
}
@@ -2130,6 +2220,7 @@ create_icon_container (FMIconView *icon_view)
GTK_WIDGET (icon_container));
fm_icon_view_update_click_mode (icon_view);
+ fm_icon_view_update_font_size_table (icon_view);
gtk_widget_show (GTK_WIDGET (icon_container));
}
diff --git a/src/file-manager/fm-list-view.c b/src/file-manager/fm-list-view.c
index e441a63fe..555f3620f 100644
--- a/src/file-manager/fm-list-view.c
+++ b/src/file-manager/fm-list-view.c
@@ -80,6 +80,9 @@ static GList * fm_list_view_get_selection (FMDirectoryView
static void fm_list_view_set_zoom_level (FMListView *view,
NautilusZoomLevel new_level,
gboolean always_set_level);
+static void fm_list_view_scale_font_size (FMListView *view,
+ NautilusZoomLevel new_level,
+ gboolean update_size_table);
GNOME_CLASS_BOILERPLATE (FMListView, fm_list_view,
FMDirectoryView, FM_TYPE_DIRECTORY_VIEW)
@@ -411,6 +414,16 @@ set_sort_order_from_metadata_and_preferences (FMListView *list_view)
sort_reversed ? GTK_SORT_DESCENDING : GTK_SORT_ASCENDING);
}
+static gboolean
+list_view_changed_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ gtk_tree_model_row_changed (model, path, iter);
+ return FALSE;
+}
+
static void
set_zoom_level_from_metadata_and_preferences (FMListView *list_view)
{
@@ -423,6 +436,13 @@ set_zoom_level_from_metadata_and_preferences (FMListView *list_view)
NAUTILUS_METADATA_KEY_LIST_VIEW_ZOOM_LEVEL,
default_zoom_level_auto_value);
fm_list_view_set_zoom_level (list_view, level, TRUE);
+
+ /* reset the font size table for the new default zoom level */
+ fm_list_view_scale_font_size (list_view, level, TRUE);
+
+ /* updated the rows after updating the font size */
+ gtk_tree_model_foreach (GTK_TREE_MODEL (list_view->details->model),
+ list_view_changed_foreach, NULL);
}
}
@@ -553,17 +573,117 @@ fm_list_view_reset_to_defaults (FMDirectoryView *view)
}
static void
+fm_list_view_scale_font_size (FMListView *view,
+ NautilusZoomLevel new_level,
+ gboolean update_size_table)
+{
+ static gboolean first_time = TRUE;
+ static double pango_scale[7];
+
+ if (update_size_table || first_time) {
+ first_time = FALSE;
+
+ switch (default_zoom_level_auto_value)
+ {
+ case NAUTILUS_ZOOM_LEVEL_LARGEST:
+ pango_scale[0] = (1 / 1.2) * (1 / 1.2) * PANGO_SCALE_XX_SMALL;
+ pango_scale[1] = (1 / 1.2) * PANGO_SCALE_XX_SMALL;
+ pango_scale[2] = PANGO_SCALE_XX_SMALL;
+ pango_scale[3] = PANGO_SCALE_X_SMALL;
+ pango_scale[4] = PANGO_SCALE_SMALL;
+ pango_scale[5] = PANGO_SCALE_MEDIUM;
+ pango_scale[6] = PANGO_SCALE_LARGE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_LARGER:
+ pango_scale[0] = (1 / 1.2) * PANGO_SCALE_XX_SMALL;
+ pango_scale[1] = PANGO_SCALE_XX_SMALL;
+ pango_scale[2] = PANGO_SCALE_X_SMALL;
+ pango_scale[3] = PANGO_SCALE_SMALL;
+ pango_scale[4] = PANGO_SCALE_MEDIUM;
+ pango_scale[5] = PANGO_SCALE_LARGE;
+ pango_scale[6] = PANGO_SCALE_X_LARGE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_LARGE:
+ pango_scale[0] = PANGO_SCALE_XX_SMALL;
+ pango_scale[1] = PANGO_SCALE_X_SMALL;
+ pango_scale[2] = PANGO_SCALE_SMALL;
+ pango_scale[3] = PANGO_SCALE_MEDIUM;
+ pango_scale[4] = PANGO_SCALE_LARGE;
+ pango_scale[5] = PANGO_SCALE_X_LARGE;
+ pango_scale[6] = PANGO_SCALE_XX_LARGE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_STANDARD:
+ pango_scale[0] = PANGO_SCALE_X_SMALL;
+ pango_scale[1] = PANGO_SCALE_SMALL;
+ pango_scale[2] = PANGO_SCALE_MEDIUM;
+ pango_scale[3] = PANGO_SCALE_LARGE;
+ pango_scale[4] = PANGO_SCALE_X_LARGE;
+ pango_scale[5] = PANGO_SCALE_XX_LARGE;
+ pango_scale[6] = 1.2 * PANGO_SCALE_XX_LARGE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_SMALL:
+ pango_scale[0] = PANGO_SCALE_SMALL;
+ pango_scale[1] = PANGO_SCALE_MEDIUM;
+ pango_scale[2] = PANGO_SCALE_LARGE;
+ pango_scale[3] = PANGO_SCALE_X_LARGE;
+ pango_scale[4] = PANGO_SCALE_XX_LARGE;
+ pango_scale[5] = 1.2 * PANGO_SCALE_XX_LARGE;
+ pango_scale[6] = 1.2 * 1.2 * PANGO_SCALE_XX_LARGE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_SMALLER:
+ /* From here on down we use PANGO_SCALE_MEDIUM for the
+ * default zoom. Since the icons are now smaller this
+ * looks better at default zoom.
+ */
+ pango_scale[0] = PANGO_SCALE_SMALL;
+ pango_scale[1] = PANGO_SCALE_MEDIUM;
+ pango_scale[2] = PANGO_SCALE_LARGE;
+ pango_scale[3] = PANGO_SCALE_X_LARGE;
+ pango_scale[4] = PANGO_SCALE_XX_LARGE;
+ pango_scale[5] = 1.2 * PANGO_SCALE_XX_LARGE;
+ pango_scale[6] = 1.2 * 1.2 * PANGO_SCALE_XX_LARGE;
+ break;
+ case NAUTILUS_ZOOM_LEVEL_SMALLEST:
+ pango_scale[0] = PANGO_SCALE_MEDIUM;
+ pango_scale[1] = PANGO_SCALE_LARGE;
+ pango_scale[2] = PANGO_SCALE_X_LARGE;
+ pango_scale[3] = PANGO_SCALE_XX_LARGE;
+ pango_scale[4] = 1.2 * PANGO_SCALE_XX_LARGE;
+ pango_scale[5] = 1.2 * 1.2 * PANGO_SCALE_XX_LARGE;
+ pango_scale[6] = 1.2 * 1.2 * 1.2 * PANGO_SCALE_XX_LARGE;
+ break;
+ default:
+ g_warning ("invalid default list-view zoom level");
+ pango_scale[0] = PANGO_SCALE_X_SMALL;
+ pango_scale[1] = PANGO_SCALE_SMALL;
+ pango_scale[2] = PANGO_SCALE_MEDIUM;
+ pango_scale[3] = PANGO_SCALE_LARGE;
+ pango_scale[4] = PANGO_SCALE_X_LARGE;
+ pango_scale[5] = PANGO_SCALE_XX_LARGE;
+ pango_scale[6] = 1.2 * PANGO_SCALE_XX_LARGE;
+ break;
+ }
+ }
+
+ g_object_set (G_OBJECT (view->details->file_name_cell),
+ "scale", pango_scale[new_level],
+ NULL);
+ g_object_set (G_OBJECT (view->details->size_cell),
+ "scale", pango_scale[new_level],
+ NULL);
+ g_object_set (G_OBJECT (view->details->type_cell),
+ "scale", pango_scale[new_level],
+ NULL);
+ g_object_set (G_OBJECT (view->details->date_modified_cell),
+ "scale", pango_scale[new_level],
+ NULL);
+}
+
+static void
fm_list_view_set_zoom_level (FMListView *view,
NautilusZoomLevel new_level,
gboolean always_set_level)
{
- static double pango_scale[7] = { PANGO_SCALE_X_SMALL,
- PANGO_SCALE_SMALL,
- PANGO_SCALE_MEDIUM,
- PANGO_SCALE_LARGE,
- PANGO_SCALE_X_LARGE,
- PANGO_SCALE_XX_LARGE,
- 1.2 * PANGO_SCALE_XX_LARGE };
int icon_size;
int column;
@@ -595,18 +715,7 @@ fm_list_view_set_zoom_level (FMListView *view,
NULL);
/* Scale text. */
- g_object_set (G_OBJECT (view->details->file_name_cell),
- "scale", pango_scale[new_level],
- NULL);
- g_object_set (G_OBJECT (view->details->size_cell),
- "scale", pango_scale[new_level],
- NULL);
- g_object_set (G_OBJECT (view->details->type_cell),
- "scale", pango_scale[new_level],
- NULL);
- g_object_set (G_OBJECT (view->details->date_modified_cell),
- "scale", pango_scale[new_level],
- NULL);
+ fm_list_view_scale_font_size (view, new_level, FALSE);
/* Make all rows the same size. */
icon_size = nautilus_get_icon_size_for_zoom_level (new_level);
@@ -843,6 +952,6 @@ fm_list_view_instance_init (FMListView *list_view)
list_view, G_OBJECT (list_view));
click_policy_changed_callback (list_view);
-
+
fm_list_view_sort_directories_first_changed (FM_DIRECTORY_VIEW (list_view));
}