diff -Nuard control-center-2.4.0.orig/capplets/font/font-properties.glade control-center-2.4.0/capplets/font/font-properties.glade
--- control-center-2.4.0.orig/capplets/font/font-properties.glade 2003-08-04 17:33:22.000000000 +0200
+++ control-center-2.4.0/capplets/font/font-properties.glade 2003-11-14 21:01:26.000000000 +0100
@@ -723,6 +723,24 @@
False
+
+
+
+ True
+ True
+ Calculate DPI
+ True
+ GTK_RELIEF_NORMAL
+ False
+ False
+ True
+
+
+ 0
+ False
+ False
+
+
diff -Nuard control-center-2.4.0.orig/capplets/font/main.c control-center-2.4.0/capplets/font/main.c
--- control-center-2.4.0.orig/capplets/font/main.c 2003-08-02 18:02:47.000000000 +0200
+++ control-center-2.4.0/capplets/font/main.c 2003-11-14 21:01:26.000000000 +0100
@@ -38,6 +38,7 @@
#define FONT_HINTING_KEY FONT_RENDER_DIR "/hinting"
#define FONT_RGBA_ORDER_KEY FONT_RENDER_DIR "/rgba_order"
#define FONT_DPI_KEY FONT_RENDER_DIR "/dpi"
+#define FONT_CALCULATE_DPI_KEY FONT_RENDER_DIR "/calculate_dpi"
#endif /* HAVE_XFT2 */
static gboolean in_change = FALSE;
@@ -749,6 +750,33 @@
}
static void
+dpi_toggle_changed (GtkToggleButton *toggle,
+ GtkWidget *spinner)
+{
+ GConfClient *client = gconf_client_get_default ();
+ GdkScreen *screen = gdk_screen_get_default ();
+ gboolean active = gtk_toggle_button_get_active (toggle);
+ int width_mm, width_px, dpi;
+ double xres;
+
+ gconf_client_set_bool (client, FONT_CALCULATE_DPI_KEY, active, NULL);
+
+ if (active)
+ gtk_widget_set_sensitive( GTK_WIDGET(spinner) , FALSE);
+ else
+ gtk_widget_set_sensitive( GTK_WIDGET(spinner) , TRUE);
+
+ width_mm = gdk_screen_get_width_mm(screen);
+ width_px = gdk_screen_get_width(screen);
+
+ xres = ((((double)width_px) * 25.4) / ((double)width_mm));
+ dpi = (int)(xres + 0.5);
+
+ gtk_spin_button_set_value ( GTK_SPIN_BUTTON (spinner), dpi);
+
+}
+
+static void
dpi_value_changed (GtkSpinButton *spinner,
GConfClient *client)
{
@@ -790,7 +818,7 @@
if (!details_dialog) {
GConfClient *client = gconf_client_get_default ();
GladeXML *dialog = glade_xml_new (GLADEDIR "/font-properties.glade", "render_details", NULL);
- GtkWidget *dpi_spinner;
+ GtkWidget *dpi_spinner, *dpi_toggle;
GnomeVFSURI *uri;
details_dialog = WID ("render_details");
@@ -809,9 +837,16 @@
g_signal_connect (dpi_spinner, "value_changed",
G_CALLBACK (dpi_value_changed), client);
+ dpi_toggle = WID ("dpi_calculate");
+ g_signal_connect (GTK_TOGGLE_BUTTON (dpi_toggle), "toggled",
+ G_CALLBACK (dpi_toggle_changed), dpi_spinner);
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON (dpi_toggle), gconf_client_get_bool (client, FONT_CALCULATE_DPI_KEY, NULL));
+
gconf_client_notify_add (client, FONT_DPI_KEY,
dpi_changed,
dpi_spinner, NULL, NULL);
+
setup_font_sample (WID ("antialias_none_sample"), ANTIALIAS_NONE, HINT_FULL);
setup_font_sample (WID ("antialias_grayscale_sample"), ANTIALIAS_GRAYSCALE, HINT_FULL);
diff -Nuard control-center-2.4.0.orig/gnome-settings-daemon/gnome-settings-xsettings.c control-center-2.4.0/gnome-settings-daemon/gnome-settings-xsettings.c
--- control-center-2.4.0.orig/gnome-settings-daemon/gnome-settings-xsettings.c 2003-07-31 20:25:42.000000000 +0200
+++ control-center-2.4.0/gnome-settings-daemon/gnome-settings-xsettings.c 2003-11-14 21:34:46.000000000 +0100
@@ -17,6 +17,7 @@
#define FONT_HINTING_KEY FONT_RENDER_DIR "/hinting"
#define FONT_RGBA_ORDER_KEY FONT_RENDER_DIR "/rgba_order"
#define FONT_DPI_KEY FONT_RENDER_DIR "/dpi"
+#define FONT_CALCULATE_DPI_KEY FONT_RENDER_DIR "/calculate_dpi"
#endif /* HAVE_XFT2 */
typedef struct _TranslationEntry TranslationEntry;
@@ -268,10 +269,11 @@
gnome_xft_settings_get (GConfClient *client,
GnomeXftSettings *settings)
{
- char *antialiasing = gconf_client_get_string (client, FONT_ANTIALIASING_KEY, NULL);
- char *hinting = gconf_client_get_string (client, FONT_HINTING_KEY, NULL);
- char *rgba_order = gconf_client_get_string (client, FONT_RGBA_ORDER_KEY, NULL);
- double dpi = gconf_client_get_float (client, FONT_DPI_KEY, NULL);
+ gchar *antialiasing = gconf_client_get_string (client, FONT_ANTIALIASING_KEY, NULL);
+ gchar *hinting = gconf_client_get_string (client, FONT_HINTING_KEY, NULL);
+ gchar *rgba_order = gconf_client_get_string (client, FONT_RGBA_ORDER_KEY, NULL);
+ gdouble dpi = gconf_client_get_float (client, FONT_DPI_KEY, NULL);
+ gboolean calculate_dpi = gconf_client_get_bool (client, FONT_CALCULATE_DPI_KEY ,NULL);
settings->antialias = TRUE;
settings->hinting = TRUE;
@@ -279,12 +281,28 @@
settings->dpi = 96;
settings->rgba = "rgb";
- if ((int)(1024 * dpi + 0.5) > 0)
- settings->dpi = (int)(1024 * dpi + 0.5);
+ if (calculate_dpi == TRUE)
+ {
+ gdouble xres;
+ gint width_mm, width_px;
+ GdkScreen *screen = gdk_screen_get_default();
+
+ width_mm = gdk_screen_get_width_mm(screen);
+ width_px = gdk_screen_get_width(screen);
+
+ xres = ((((gdouble)width_px) * 25.4) / ((gdouble)width_mm));
+ dpi = xres;
+
+ gconf_client_set_float (client, FONT_DPI_KEY, (gint)(xres + 0.5) ,NULL);
+ }
+
+ if ((gint)(1024 * dpi + 0.5) > 0)
+ settings->dpi = (gint)(1024 * dpi + 0.5);
+
if (rgba_order)
{
- int i;
+ gint i;
gboolean found = FALSE;
for (i = 0; i < G_N_ELEMENTS (rgba_types) && !found; i++)
diff -Nuard control-center-2.4.0.orig/schemas/desktop_gnome_font_rendering.schemas control-center-2.4.0/schemas/desktop_gnome_font_rendering.schemas
--- control-center-2.4.0.orig/schemas/desktop_gnome_font_rendering.schemas 2003-09-08 16:58:39.000000000 +0200
+++ control-center-2.4.0/schemas/desktop_gnome_font_rendering.schemas 2003-11-14 21:01:26.000000000 +0100
@@ -1,6 +1,21 @@
+
+ /schemas/desktop/gnome/font_rendering/calculate_dpi
+ /desktop/gnome/font_rendering/calculate_dpi
+ gnome
+ bool
+ false
+
+ Automatic DPI calculation
+ Automaticac DPI calculation
+
+
+ Automatyczne obliczanie DPI
+ Automatyczne obliczanie DPI
+
+
/schemas/desktop/gnome/font_rendering/dpi
/desktop/gnome/font_rendering/dpi