diff options
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 14 | ||||
-rw-r--r-- | gdk/gdkinternals.h | 5 | ||||
-rw-r--r-- | gdk/gdkpango.c | 6 | ||||
-rw-r--r-- | gdk/gdkscreen.c | 63 |
5 files changed, 33 insertions, 69 deletions
@@ -1,3 +1,17 @@ +2006-05-22 Behdad Esfahbod <behdad@gnome.org> + + Rollback the following changes, to fix it the proper way in Pango: + + * gdk/gdkinternals.h: + * gdk/gdkscreen.c (gdk_screen_class_init), (gdk_screen_finalize), + (update_fontmap_resolution), (gdk_screen_set_resolution): Add new + function _gdk_screen_get_font_map() and have one fontmap per screen, + with the correct resolution set on it. + + * gdk/gdkpango.c (gdk_pango_context_get_for_screen): Use + _gdk_screen_get_font_map() instead of setting resolution on the + PangoCairoContext. (#342529) + 2006-05-22 Emmanuele Bassi <ebassi@gnome.org> * gtk/gtkrecentmanager.h: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 560206d438..ae807c5cd8 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,17 @@ +2006-05-22 Behdad Esfahbod <behdad@gnome.org> + + Rollback the following changes, to fix it the proper way in Pango: + + * gdk/gdkinternals.h: + * gdk/gdkscreen.c (gdk_screen_class_init), (gdk_screen_finalize), + (update_fontmap_resolution), (gdk_screen_set_resolution): Add new + function _gdk_screen_get_font_map() and have one fontmap per screen, + with the correct resolution set on it. + + * gdk/gdkpango.c (gdk_pango_context_get_for_screen): Use + _gdk_screen_get_font_map() instead of setting resolution on the + PangoCairoContext. (#342529) + 2006-05-22 Emmanuele Bassi <ebassi@gnome.org> * gtk/gtkrecentmanager.h: diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 20c7d1d2fe..1c279f4ec3 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -29,7 +29,6 @@ #include <gdk/gdktypes.h> #include <gdk/gdkwindow.h> #include <gdk/gdkprivate.h> -#include <pango/pango.h> #ifndef __GDK_INTERNALS_H__ #define __GDK_INTERNALS_H__ @@ -405,10 +404,6 @@ void _gdk_windowing_gc_get_foreground (GdkGC *gc, void _gdk_windowing_gc_get_background (GdkGC *gc, GdkColor *color); -/* Gets the fontmap for screen */ -PangoFontMap * -_gdk_screen_get_font_map (GdkScreen *screen); - /************************************ * Initialization and exit routines * ************************************/ diff --git a/gdk/gdkpango.c b/gdk/gdkpango.c index 984881aeea..9375a80545 100644 --- a/gdk/gdkpango.c +++ b/gdk/gdkpango.c @@ -1416,16 +1416,20 @@ gdk_pango_context_get_for_screen (GdkScreen *screen) PangoFontMap *fontmap; PangoContext *context; const cairo_font_options_t *options; + double dpi; g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - fontmap = _gdk_screen_get_font_map (screen); + fontmap = pango_cairo_font_map_get_default (); context = pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap)); options = gdk_screen_get_font_options (screen); pango_cairo_context_set_font_options (context, options); + dpi = gdk_screen_get_resolution (screen); + pango_cairo_context_set_resolution (context, dpi); + return context; } diff --git a/gdk/gdkscreen.c b/gdk/gdkscreen.c index 000ca5e85b..986f9f5525 100644 --- a/gdk/gdkscreen.c +++ b/gdk/gdkscreen.c @@ -25,23 +25,10 @@ #include "gdk.h" /* For gdk_rectangle_intersect() */ #include "gdkcolor.h" #include "gdkwindow.h" -#include "gdkinternals.h" #include "gdkscreen.h" #include "gdkintl.h" #include "gdkalias.h" - -#define GDK_SCREEN_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDK_TYPE_SCREEN, GdkScreenPrivate)) - -typedef struct _GdkScreenPrivate GdkScreenPrivate; - -struct _GdkScreenPrivate -{ - PangoFontMap *fontmap; -}; - - static void gdk_screen_dispose (GObject *object); static void gdk_screen_finalize (GObject *object); static void gdk_screen_set_property (GObject *object, @@ -137,8 +124,6 @@ gdk_screen_class_init (GdkScreenClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - g_type_class_add_private (klass, sizeof (GdkScreenPrivate)); } static void @@ -175,14 +160,10 @@ static void gdk_screen_finalize (GObject *object) { GdkScreen *screen = GDK_SCREEN (object); - GdkScreenPrivate *priv = GDK_SCREEN_GET_PRIVATE (screen); if (screen->font_options) cairo_font_options_destroy (screen->font_options); - if (priv->fontmap) - g_object_unref (priv->fontmap); - G_OBJECT_CLASS (gdk_screen_parent_class)->finalize (object); } @@ -388,48 +369,6 @@ gdk_screen_height_mm (void) return gdk_screen_get_height_mm (gdk_screen_get_default ()); } -static void -update_fontmap_resolution (GdkScreen *screen) -{ - GdkScreenPrivate *priv = GDK_SCREEN_GET_PRIVATE (screen); - double dpi = screen->resolution; - - if (dpi < 0) - dpi = 96.; - - if (priv->fontmap) - pango_cairo_font_map_set_resolution (priv->fontmap, dpi); -} - -/** - * _gdk_screen_get_font_map: - * @screen: a #GdkScreen - * - * Gets the Pango fontmap for this screen that is used to create - * #PangoContext, with the right resolution set on it. - * - * Return value: the fontmap. - * - * Since: 2.10 - **/ -PangoFontMap * -_gdk_screen_get_font_map (GdkScreen *screen) -{ - GdkScreenPrivate *priv; - - g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - - priv = GDK_SCREEN_GET_PRIVATE (screen); - - if (G_UNLIKELY (!priv->fontmap)) - { - priv->fontmap = pango_cairo_font_map_new (); - update_fontmap_resolution (screen); - } - - return priv->fontmap; -} - /** * gdk_screen_set_font_options: * @screen: a #GdkScreen @@ -509,8 +448,6 @@ gdk_screen_set_resolution (GdkScreen *screen, { screen->resolution = dpi; - update_fontmap_resolution (screen); - g_object_notify (G_OBJECT (screen), "resolution"); } } |