summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-libs/gtk+/files/gtk+-2-xftprefs.patch')
-rw-r--r--x11-libs/gtk+/files/gtk+-2-xftprefs.patch229
1 files changed, 229 insertions, 0 deletions
diff --git a/x11-libs/gtk+/files/gtk+-2-xftprefs.patch b/x11-libs/gtk+/files/gtk+-2-xftprefs.patch
new file mode 100644
index 000000000000..fbc9fc253a29
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-2-xftprefs.patch
@@ -0,0 +1,229 @@
+--- gtk+-2.2.1/gdk/x11/gdkevents-x11.c.xftprefs Thu Jan 23 16:57:04 2003
++++ gtk+-2.2.1/gdk/x11/gdkevents-x11.c Sun Feb 2 22:29:22 2003
+@@ -2497,7 +2497,12 @@
+ { "Gtk/IMStatusStyle", "gtk-im-status-style" },
+ { "Net/CursorBlink", "gtk-cursor-blink" },
+ { "Net/CursorBlinkTime", "gtk-cursor-blink-time" },
+- { "Net/ThemeName", "gtk-theme-name" }
++ { "Net/ThemeName", "gtk-theme-name" },
++ { "Xft/Antialias", "gtk-xft-antialias" },
++ { "Xft/Hinting", "gtk-xft-hinting" },
++ { "Xft/HintStyle", "gtk-xft-hintstyle" },
++ { "Xft/RGBA", "gtk-xft-rgba" },
++ { "Xft/DPI", "gtk-xft-dpi" },
+ };
+
+ static void
+--- gtk+-2.2.1/gtk/gtksettings.c.xftprefs Sun Feb 2 22:29:22 2003
++++ gtk+-2.2.1/gtk/gtksettings.c Sun Feb 2 22:31:55 2003
+@@ -42,6 +42,12 @@
+ GtkSettingsSource source;
+ };
+
++#ifdef GDK_WINDOWING_X11
++#include <X11/Xft/Xft.h>
++#include <pango/pangoxft.h>
++#include <gdk/x11/gdkx.h>
++#endif
++
+ enum {
+ PROP_0,
+ PROP_DOUBLE_CLICK_TIME,
+@@ -53,7 +59,12 @@
+ PROP_MENU_BAR_ACCEL,
+ PROP_DND_DRAG_THRESHOLD,
+ PROP_FONT_NAME,
+- PROP_ICON_SIZES
++ PROP_ICON_SIZES,
++ PROP_XFT_ANTIALIAS,
++ PROP_XFT_HINTING,
++ PROP_XFT_HINTSTYLE,
++ PROP_XFT_RGBA,
++ PROP_XFT_DPI
+ };
+
+
+@@ -112,6 +123,85 @@
+ return settings_type;
+ }
+
++#ifdef GDK_WINDOWING_X11
++static void
++gtk_default_substitute (FcPattern *pattern,
++ gpointer data)
++{
++ GtkSettings *settings = data;
++ gint antialias;
++ gint hinting;
++ char *rgba;
++ char *hintstyle;
++ gint dpi;
++ FcValue v;
++
++ g_object_get (G_OBJECT (settings),
++ "gtk-xft-antialias", &antialias,
++ "gtk-xft-hinting", &hinting,
++ "gtk-xft-hintstyle", &hintstyle,
++ "gtk-xft-rgba", &rgba,
++ "gtk-xft-dpi", &dpi,
++ NULL);
++
++ if (antialias >= 0 &&
++ FcPatternGet (pattern, FC_ANTIALIAS, 0, &v) == FcResultNoMatch)
++ FcPatternAddBool (pattern, FC_ANTIALIAS, antialias != 0);
++
++ if (hinting >= 0 &&
++ FcPatternGet (pattern, FC_HINTING, 0, &v) == FcResultNoMatch)
++ FcPatternAddBool (pattern, FC_HINTING, hinting != 0);
++
++ if (hintstyle && FcPatternGet (pattern, FC_HINT_STYLE, 0, &v) == FcResultNoMatch)
++ {
++ int val = FC_HINT_FULL; /* Quiet GCC */
++ gboolean found = TRUE;
++
++ if (strcmp (hintstyle, "hintnone") == 0)
++ val = FC_HINT_NONE;
++ else if (strcmp (hintstyle, "hintslight") == 0)
++ val = FC_HINT_SLIGHT;
++ else if (strcmp (hintstyle, "hintmedium") == 0)
++ val = FC_HINT_MEDIUM;
++ else if (strcmp (hintstyle, "hintfull") == 0)
++ val = FC_HINT_FULL;
++ else
++ found = FALSE;
++
++ if (found)
++ FcPatternAddInteger (pattern, FC_HINT_STYLE, val);
++ }
++
++ if (rgba && FcPatternGet (pattern, FC_RGBA, 0, &v) == FcResultNoMatch)
++ {
++ int val = FC_RGBA_NONE; /* Quiet GCC */
++ gboolean found = TRUE;
++
++ if (strcmp (rgba, "none") == 0)
++ val = FC_RGBA_NONE;
++ else if (strcmp (rgba, "rgb") == 0)
++ val = FC_RGBA_RGB;
++ else if (strcmp (rgba, "bgr") == 0)
++ val = FC_RGBA_BGR;
++ else if (strcmp (rgba, "vrgb") == 0)
++ val = FC_RGBA_VRGB;
++ else if (strcmp (rgba, "vbgr") == 0)
++ val = FC_RGBA_VBGR;
++ else
++ found = FALSE;
++
++ if (found)
++ FcPatternAddInteger (pattern, FC_RGBA, val);
++ }
++
++ if (dpi >= 0 && FcPatternGet (pattern, FC_DPI, 0, &v) == FcResultNoMatch)
++ FcPatternAddDouble (pattern, FC_DPI, dpi / 1024.);
++
++ g_free (hintstyle);
++ g_free (rgba);
++}
++#endif /* GDK_WINDOWING_X11 */
++
+ static void
+ gtk_settings_init (GtkSettings *settings)
+ {
+@@ -247,6 +337,58 @@
+ G_PARAM_READWRITE),
+ NULL);
+ g_assert (result == PROP_ICON_SIZES);
++
++#ifdef GDK_WINDOWING_X11
++ result = settings_install_property_parser (class,
++ g_param_spec_int ("gtk-xft-antialias",
++ _("Xft Antialias"),
++ _("Whether to antialias Xft fonts; 0=no, 1=yes, -1=default"),
++ -1, 1, -1,
++ G_PARAM_READWRITE),
++ NULL);
++
++ g_assert (result == PROP_XFT_ANTIALIAS);
++
++ result = settings_install_property_parser (class,
++ g_param_spec_int ("gtk-xft-hinting",
++ _("Xft Hinting"),
++ _("Whether to hint Xft fonts; 0=no, 1=yes, -1=default"),
++ -1, 1, -1,
++ G_PARAM_READWRITE),
++ NULL);
++
++ g_assert (result == PROP_XFT_HINTING);
++
++ result = settings_install_property_parser (class,
++ g_param_spec_string ("gtk-xft-hintstyle",
++ _("Xft Hint Style"),
++ _("What degree of hinting to use; none, slight, medium, or full"),
++ NULL,
++ G_PARAM_READWRITE),
++ NULL);
++
++ g_assert (result == PROP_XFT_HINTSTYLE);
++
++ result = settings_install_property_parser (class,
++ g_param_spec_string ("gtk-xft-rgba",
++ _("Xft RGBA"),
++ _("Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr"),
++ NULL,
++ G_PARAM_READWRITE),
++ NULL);
++
++ g_assert (result == PROP_XFT_RGBA);
++
++ result = settings_install_property_parser (class,
++ g_param_spec_int ("gtk-xft-dpi",
++ _("Xft DPI"),
++ _("Resolution for Xft, in 1024 * dots/inch. -1 to use default value"),
++ -1, 1024*1024, -1,
++ G_PARAM_READWRITE),
++ NULL);
++
++ g_assert (result == PROP_XFT_DPI);
++#endif /* GDK_WINDOWING_X11 */
+ }
+
+ static void
+@@ -288,7 +430,17 @@
+ {
+ settings = g_object_new (GTK_TYPE_SETTINGS, NULL);
+ settings->screen = screen;
+- g_object_set_data (G_OBJECT (screen), "gtk-settings", settings);
++ g_object_set_data (G_OBJECT (screen), "gtk-settings", settings);
++
++#ifdef GDK_WINDOWING_X11
++ /* Set the default substitution function for the Pango fontmap.
++ */
++ pango_xft_set_default_substitute (GDK_SCREEN_XDISPLAY (screen),
++ GDK_SCREEN_XNUMBER (screen),
++ gtk_default_substitute,
++ settings, NULL);
++#endif /* GDK_WINDOWING_X11 */
++
+ gtk_rc_reparse_all_for_settings (settings, TRUE);
+ settings_update_double_click_time (settings);
+ }
+@@ -413,6 +565,19 @@
+ case PROP_DOUBLE_CLICK_TIME:
+ settings_update_double_click_time (settings);
+ break;
++#ifdef GDK_WINDOWING_X11
++ case PROP_XFT_ANTIALIAS:
++ case PROP_XFT_HINTING:
++ case PROP_XFT_HINTSTYLE:
++ case PROP_XFT_RGBA:
++ case PROP_XFT_DPI:
++ pango_xft_substitute_changed (GDK_SCREEN_XDISPLAY (settings->screen),
++ GDK_SCREEN_XNUMBER (settings->screen));
++ /* See comments with _gtk_rc_reset_styles for why this is a hack
++ */
++ _gtk_rc_reset_styles (GTK_SETTINGS (object));
++ break;
++#endif /* GDK_WINDOWING_X11 */
+ }
+ }
+