summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--ChangeLog.pre-2-1014
-rw-r--r--gdk/gdkinternals.h5
-rw-r--r--gdk/gdkpango.c6
-rw-r--r--gdk/gdkscreen.c63
5 files changed, 33 insertions, 69 deletions
diff --git a/ChangeLog b/ChangeLog
index 560206d438..ae807c5cd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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");
}
}