105 lines
3.7 KiB
Diff
105 lines
3.7 KiB
Diff
diff -up gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c.fix-icon-scale gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c
|
|
--- gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c.fix-icon-scale 2008-09-22 13:01:21.000000000 -0400
|
|
+++ gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c 2008-09-30 17:31:00.000000000 -0400
|
|
@@ -51,7 +51,7 @@ enum {
|
|
|
|
#define GDM_USER_CHOOSER_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_USER_CHOOSER_WIDGET, GdmUserChooserWidgetPrivate))
|
|
|
|
-#define ICON_SIZE 96
|
|
+#define MAX_ICON_SIZE 128
|
|
|
|
struct GdmUserChooserWidgetPrivate
|
|
{
|
|
@@ -83,6 +83,45 @@ static void gdm_user_chooser_widget_
|
|
|
|
G_DEFINE_TYPE (GdmUserChooserWidget, gdm_user_chooser_widget, GDM_TYPE_CHOOSER_WIDGET)
|
|
|
|
+static int
|
|
+get_font_height_for_widget (GtkWidget *widget)
|
|
+{
|
|
+ PangoFontMetrics *metrics;
|
|
+ PangoContext *context;
|
|
+ int ascent;
|
|
+ int descent;
|
|
+ int height;
|
|
+
|
|
+ gtk_widget_ensure_style (widget);
|
|
+ context = gtk_widget_get_pango_context (widget);
|
|
+ metrics = pango_context_get_metrics (context,
|
|
+ widget->style->font_desc,
|
|
+ pango_context_get_language (context));
|
|
+
|
|
+ ascent = pango_font_metrics_get_ascent (metrics);
|
|
+ descent = pango_font_metrics_get_descent (metrics);
|
|
+ height = PANGO_PIXELS (ascent + descent);
|
|
+ pango_font_metrics_unref (metrics);
|
|
+ return height;
|
|
+}
|
|
+
|
|
+static int
|
|
+get_icon_height_for_widget (GtkWidget *widget)
|
|
+{
|
|
+ int font_height;
|
|
+ int height;
|
|
+
|
|
+ font_height = get_font_height_for_widget (widget);
|
|
+ height = 3 * font_height;
|
|
+ if (height > MAX_ICON_SIZE) {
|
|
+ height = MAX_ICON_SIZE;
|
|
+ }
|
|
+
|
|
+ g_debug ("GdmUserChooserWidget: font height %d; using icon size %d", font_height, height);
|
|
+
|
|
+ return height;
|
|
+}
|
|
+
|
|
static void
|
|
add_user_other (GdmUserChooserWidget *widget)
|
|
{
|
|
@@ -295,12 +334,14 @@ add_user (GdmUserChooserWidget *widget,
|
|
GdkPixbuf *pixbuf;
|
|
char *tooltip;
|
|
gboolean is_logged_in;
|
|
+ int size;
|
|
|
|
if (!widget->priv->show_normal_users) {
|
|
return;
|
|
}
|
|
|
|
- pixbuf = gdm_user_render_icon (user, ICON_SIZE);
|
|
+ size = get_icon_height_for_widget (widget);
|
|
+ pixbuf = gdm_user_render_icon (user, size);
|
|
if (pixbuf == NULL && widget->priv->stock_person_pixbuf != NULL) {
|
|
pixbuf = g_object_ref (widget->priv->stock_person_pixbuf);
|
|
}
|
|
@@ -537,10 +578,13 @@ static GdkPixbuf *
|
|
get_stock_person_pixbuf (GdmUserChooserWidget *widget)
|
|
{
|
|
GdkPixbuf *pixbuf;
|
|
+ int size;
|
|
+
|
|
+ size = get_icon_height_for_widget (widget);
|
|
|
|
pixbuf = gtk_icon_theme_load_icon (widget->priv->icon_theme,
|
|
DEFAULT_USER_ICON,
|
|
- ICON_SIZE,
|
|
+ size,
|
|
0,
|
|
NULL);
|
|
|
|
@@ -551,10 +595,13 @@ static GdkPixbuf *
|
|
get_logged_in_pixbuf (GdmUserChooserWidget *widget)
|
|
{
|
|
GdkPixbuf *pixbuf;
|
|
+ int size;
|
|
+
|
|
+ size = get_icon_height_for_widget (widget);
|
|
|
|
pixbuf = gtk_icon_theme_load_icon (widget->priv->icon_theme,
|
|
"emblem-default",
|
|
- ICON_SIZE / 3,
|
|
+ size / 3,
|
|
0,
|
|
NULL);
|
|
|