Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37519072
en ru br
Репозитории ALT

Группа :: Graphical desktop/MATE
Пакет: mate-control-center

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: mate-control-center_fv-font-widget-sync-from-Sushi.patch
Скачать


diff -uprN mate-control-center/font-viewer/sushi-font-loader.c mate-control-center-test/font-viewer/sushi-font-loader.c
--- mate-control-center/font-viewer/sushi-font-loader.c	2015-08-24 13:08:20.221313939 +0200
+++ mate-control-center-test/font-viewer/sushi-font-loader.c	2015-08-24 12:53:28.984809214 +0200
@@ -156,16 +156,20 @@ sushi_new_ft_face_from_uri (FT_Library l
                             GError **error)
 {
   FontLoadJob *job = NULL;
+  FT_Face face;
 
   job = font_load_job_new (library, uri, NULL, NULL);
   font_load_job_do_load (job, error);
 
   if ((error != NULL) && (*error != NULL)) {
-    g_object_unref (job);
+    font_load_job_free (job);
     return NULL;
   }
 
-  return create_face_from_contents (job, contents, error);
+  face = create_face_from_contents (job, contents, error);
+  font_load_job_free (job);
+
+  return face;
 }
 
 /**
diff -uprN mate-control-center/font-viewer/sushi-font-widget.c mate-control-center-test/font-viewer/sushi-font-widget.c
--- mate-control-center/font-viewer/sushi-font-widget.c	2015-08-23 20:26:33.178608628 +0200
+++ mate-control-center-test/font-viewer/sushi-font-widget.c	2015-08-24 13:02:12.482419266 +0200
@@ -65,8 +65,6 @@ G_DEFINE_TYPE (SushiFontWidget, sushi_fo
 #define SURFACE_SIZE 4
 #define SECTION_SPACING 16
 
-#define TITLE_SIZE 6
-
 static const gchar lowercase_text_stock[] = "abcdefghijklmnopqrstuvwxyz";
 static const gchar uppercase_text_stock[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 static const gchar punctuation_text_stock[] = "0123456789.:,;(*!?')";
@@ -224,7 +222,8 @@ build_strings_for_face (SushiFontWidget
 static gint *
 build_sizes_table (FT_Face face,
 		   gint *n_sizes,
-		   gint *alpha_size)
+		   gint *alpha_size,
+		   gint *title_size)
 {
   gint *sizes = NULL;
   gint i;
@@ -247,8 +246,13 @@ build_sizes_table (FT_Face face,
     sizes[11] = 168;
     sizes[12] = 192;
     sizes[13] = 216;
+
     *alpha_size = 24;
+    *title_size = 48;
   } else {
+    gint alpha_diff = G_MAXINT;
+    gint title_diff = G_MAXINT;
+
     /* use fixed sizes */
     *n_sizes = face->num_fixed_sizes;
     sizes = g_new (gint, *n_sizes);
@@ -257,9 +261,14 @@ build_sizes_table (FT_Face face,
     for (i = 0; i < face->num_fixed_sizes; i++) {
       sizes[i] = face->available_sizes[i].height;
 
-      /* work out which font size to render */
-      if (face->available_sizes[i].height <= 24)
-        *alpha_size = face->available_sizes[i].height;
+      if ((gint) (abs (sizes[i] - 24)) < alpha_diff) {
+        alpha_diff = (gint) abs (sizes[i] - 24);
+        *alpha_size = sizes[i];
+      }
+      if ((gint) (abs (sizes[i] - 24)) < title_diff) {
+        title_diff = (gint) abs (sizes[i] - 24);
+        *title_size = sizes[i];
+      }
     }
   }
 
@@ -278,7 +287,7 @@ sushi_font_widget_size_request (GtkWidge
   cairo_text_extents_t extents;
   cairo_font_extents_t font_extents;
   cairo_font_face_t *font;
-  gint *sizes = NULL, n_sizes, alpha_size;
+  gint *sizes = NULL, n_sizes, alpha_size, title_size;
   cairo_t *cr;
   cairo_surface_t *surface;
   FT_Face face = priv->face;
@@ -297,6 +306,9 @@ sushi_font_widget_size_request (GtkWidge
     return;
   }
 
+  if (min_height != NULL)
+    *min_height = -1;
+
   surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
                                         SURFACE_SIZE, SURFACE_SIZE);
   cr = cairo_create (surface);
@@ -304,7 +316,7 @@ sushi_font_widget_size_request (GtkWidge
   state = gtk_style_context_get_state (context);
   gtk_style_context_get_padding (context, state, &padding);
 
-  sizes = build_sizes_table (face, &n_sizes, &alpha_size);
+  sizes = build_sizes_table (face, &n_sizes, &alpha_size, &title_size);
 
   /* calculate size of pixmap to use */
   pixmap_width = padding.left + padding.right;
@@ -315,7 +327,7 @@ sushi_font_widget_size_request (GtkWidge
   cairo_font_face_destroy (font);
 
   if (self->priv->font_supports_title) {
-      cairo_set_font_size (cr, sizes[TITLE_SIZE]);
+      cairo_set_font_size (cr, title_size);
       cairo_font_extents (cr, &font_extents);
       cairo_text_extents (cr, self->priv->font_name, &extents);
       pixmap_height += font_extents.ascent + font_extents.descent +
@@ -364,6 +376,9 @@ sushi_font_widget_size_request (GtkWidge
 
   pixmap_height += padding.bottom + SECTION_SPACING;
 
+  if (min_height != NULL && *min_height == -1)
+    *min_height = pixmap_height;
+
   if (width != NULL)
     *width = pixmap_width;
 
@@ -406,7 +421,7 @@ sushi_font_widget_draw (GtkWidget *drawi
 {
   SushiFontWidget *self = SUSHI_FONT_WIDGET (drawing_area);
   SushiFontWidgetPrivate *priv = self->priv;
-  gint *sizes = NULL, n_sizes, alpha_size, pos_y = 0, i;
+  gint *sizes = NULL, n_sizes, alpha_size, title_size, pos_y = 0, i;
   cairo_font_face_t *font;
   FT_Face face = priv->face;
   GtkStyleContext *context;
@@ -425,7 +440,7 @@ sushi_font_widget_draw (GtkWidget *drawi
 
   gdk_cairo_set_source_rgba (cr, &color);
 
-  sizes = build_sizes_table (face, &n_sizes, &alpha_size);
+  sizes = build_sizes_table (face, &n_sizes, &alpha_size, &title_size);
 
   font = cairo_ft_font_face_create_for_ft_face (face, 0);
   cairo_set_font_face (cr, font);
@@ -436,7 +451,7 @@ sushi_font_widget_draw (GtkWidget *drawi
   /* draw text */
 
   if (self->priv->font_supports_title) {
-    cairo_set_font_size (cr, sizes[TITLE_SIZE]);
+    cairo_set_font_size (cr, title_size);
     draw_string (cr, padding, self->priv->font_name, &pos_y);
   }
 
Binц╓rdateien mate-control-center/.git/index und mate-control-center-test/.git/index sind verschieden.
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin