commit:     b5d76b8ac0a01cd6c71ac984fa4b68ad5f273cf8
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Oct  4 01:21:43 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Oct  4 01:21:43 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b5d76b8a

app-office/dia: move 0.98 patches to devspace

Signed-off-by: Sam James <sam <AT> gentoo.org>

 app-office/dia/Manifest                            |   1 +
 app-office/dia/dia-0.98_pre20250913.ebuild         |   7 +-
 app-office/dia/files/dia-0.98-deps_optional.patch  |  76 ----
 .../files/dia-0.98-revert_xpm_replacement.patch    | 193 --------
 .../dia/files/dia-0.98-use_gtkfontbutton.patch     | 496 ---------------------
 5 files changed, 5 insertions(+), 768 deletions(-)

diff --git a/app-office/dia/Manifest b/app-office/dia/Manifest
index 41284f88acf7..1e5dfccf0716 100644
--- a/app-office/dia/Manifest
+++ b/app-office/dia/Manifest
@@ -1,2 +1,3 @@
 DIST dia-0.97.3.tar.xz 5548500 BLAKE2B 
ab476ce48e57c1def01095a8d6d92208c11817580cfca1cfcf38af12943153116b31149ca187c65e5121ef9fb281bacc4c3e7f1726ed23b46ba14902faaaa34f
 SHA512 
34298980be930b87cb4a636344e4cb2a7e43eedc00b0969a5e446cee9b74b616fdc8c798efcb9a5832b98741f2e20632a44037b2bcb436f59591d531ef441efa
+DIST dia-0.98-patches.tar.xz 7132 BLAKE2B 
739e0b53254f457b3043cc1dd37afcf3862ed4301de017ffa10cf5a94d92c05cd48276bf7930347e04c803637dc233acbe36d739864b5808bdac743b02c59f8b
 SHA512 
3812f9014564db39bacf945ef240445e45681a33f56e8bbaa4bf177ba3c8056f33656bec8b75de4fddbfd4f0f923ffe2e4f0af76673cb418226b868b57266ee0
 DIST dia-22534d16c317ee11714ef7221f9b635df233be9b.tar.bz2 9446286 BLAKE2B 
17fa7c243c51d5ecf33156b77600d155f4245db958c1a434f4faca6387a10ff85786d68f0065c1f430cf35583141282a84ba0181bc31f8489c9309753156763a
 SHA512 
6b2791d0127a86455de78767124d4564e7ea5bd318d84b1a830d07e571e398565527e9f41748cb1cddbee738cd28a670f107caad13958cac3a576e2a6a9c8726

diff --git a/app-office/dia/dia-0.98_pre20250913.ebuild 
b/app-office/dia/dia-0.98_pre20250913.ebuild
index 491f3ffbae85..9730f464bfd2 100644
--- a/app-office/dia/dia-0.98_pre20250913.ebuild
+++ b/app-office/dia/dia-0.98_pre20250913.ebuild
@@ -11,6 +11,7 @@ MAN_DATE="2004-11-26"
 DESCRIPTION="Diagram/flowchart creation program"
 HOMEPAGE="https://wiki.gnome.org/Apps/Dia";
 
SRC_URI="https://gitlab.gnome.org/GNOME/${PN}/-/archive/${COMMIT_HASH}/${PN}-${COMMIT_HASH}.tar.bz2";
+SRC_URI+=" 
https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/dia-0.98-patches.tar.xz";
 S="${WORKDIR}/${PN}-${COMMIT_HASH}"
 
 LICENSE="GPL-2+"
@@ -49,9 +50,9 @@ BDEPEND="
 "
 
 PATCHES=(
-       "${FILESDIR}"/${PN}-0.98-revert_xpm_replacement.patch
-       "${FILESDIR}"/${PN}-0.98-use_gtkfontbutton.patch
-       "${FILESDIR}"/${PN}-0.98-deps_optional.patch
+       "${WORKDIR}"/dia-0.98-patches/${PN}-0.98-revert_xpm_replacement.patch
+       "${WORKDIR}"/dia-0.98-patches/${PN}-0.98-use_gtkfontbutton.patch
+       "${WORKDIR}"/dia-0.98-patches/${PN}-0.98-deps_optional.patch
 )
 
 pkg_setup() {

diff --git a/app-office/dia/files/dia-0.98-deps_optional.patch 
b/app-office/dia/files/dia-0.98-deps_optional.patch
deleted file mode 100644
index 6cfe75ee0962..000000000000
--- a/app-office/dia/files/dia-0.98-deps_optional.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-make the plugins w/ deps conditional
---- a/meson.build
-+++ b/meson.build
-@@ -47,14 +47,14 @@ if xsltproc.found()
- endif
- 
- # Optional deps
--libpoppler_dep = dependency('poppler', version: '> 21.03.0', required: false)
--libpopplercpp_dep = dependency('poppler-cpp', required: false)
-+libpoppler_dep = dependency('poppler', version: '> 21.03.0', required: 
get_option('pdf'))
-+libpopplercpp_dep = dependency('poppler-cpp', required: get_option('pdf'))
- conf.set('HAVE_POPPLER', libpoppler_dep.found() and libpopplercpp_dep.found())
--libemf_dep = cc.find_library('EMF', required: false)
-+libemf_dep = cc.find_library('EMF', required: get_option('wmf'))
- conf.set('HAVE_LIBEMF', libemf_dep.found())
- libogdf_dep = cc.find_library('ogdf', required: false)
- conf.set('HAVE_OGDF', libogdf_dep.found())
--libxslt_dep = dependency('libxslt', required: false)
-+libxslt_dep = dependency('libxslt', required: get_option('xslt'))
- conf.set('HAVE_XSLT', libxslt_dep.found())
- # TODO: Why does Win32 break without this
- conf.set('ENABLE_NLS', true)
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -4,6 +4,18 @@ option('gtk_doc',
- option('doc',
-        type: 'feature', deprecated: {'true': 'enabled', 'false': 'disabled'},
-        description: 'Whether to generate the doc')
-+option('pdf',
-+       type: 'boolean', value: true,
-+       description: 'Whether to compile with pdf plugin')
-+option('python',
-+       type: 'boolean', value: true,
-+       description: 'Whether to compile with python plugin')
- option('tests',
-        type: 'boolean', value: true,
-        description: 'Whether to compile unit tests')
-+option('wmf',
-+       type: 'boolean', value: true,
-+       description: 'Whether to compile with wmf plugin')
-+option('xslt',
-+       type: 'boolean', value: true,
-+       description: 'Whether to compile with xslt plugin')
---- a/plug-ins/meson.build
-+++ b/plug-ins/meson.build
-@@ -17,20 +17,26 @@ subdir('shape')
- subdir('pixbuf')
- subdir('layout')  # Non-standard: shared_module
- subdir('metapost')
--subdir('pdf')
-+if get_option('pdf')
-+  subdir('pdf')
-+endif
- subdir('pgf')
- subdir('pstricks')
--subdir('python')  # Non-standard: shared_module
-+if get_option('python')
-+  subdir('python')  # Non-standard: shared_module
-+endif
- subdir('stress')
- subdir('svg')
- subdir('vdx')
- # TODO: Port to Windows.
--if host_machine.system() != 'windows'
-+if host_machine.system() != 'windows' and get_option('wmf')
-   subdir('wmf')  # Non-standard: Only installs if libemf present.
- endif
- subdir('wpg')
- subdir('xfig')
--subdir('xslt')
-+if get_option('xslt')
-+  subdir('xslt')
-+endif
- 
- foreach p : install_plugins_desc
-     message(p.get('name'))

diff --git a/app-office/dia/files/dia-0.98-revert_xpm_replacement.patch 
b/app-office/dia/files/dia-0.98-revert_xpm_replacement.patch
deleted file mode 100644
index 09d2d0160965..000000000000
--- a/app-office/dia/files/dia-0.98-revert_xpm_replacement.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-https://salsa.debian.org/debian/dia/-/blob/debian/0.98+git20250827-2/debian/patches/revert_xpm_loader_replacement.patch
-See https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/merge_requests/169
-This patch reverts upstream commit 1ba72d126055130474b4ce589b1f3002972ba490
-"general: use xpm-pixbuf to load xpms".
-Use loader from GdkPixbuf as long as available, instead of the fork xpm-pixbuf
---- a/app/dia-colour-area.c
-+++ b/app/dia-colour-area.c
-@@ -22,8 +22,6 @@
- 
- #include <stdio.h>
- 
--#include <xpm-pixbuf.h>
--
- #include "attributes.h"
- #include "persistence.h"
- 
-@@ -297,8 +295,8 @@ dia_colour_area_class_init (DiaColourAreaClass *class)
- static void
- dia_colour_area_init (DiaColourArea *self)
- {
--  self->reset = xpm_pixbuf_load (default_xpm);
--  self->swap = xpm_pixbuf_load (swap_xpm);
-+  self->reset = gdk_pixbuf_new_from_xpm_data (default_xpm);
-+  self->swap = gdk_pixbuf_new_from_xpm_data (swap_xpm);
- 
-   gtk_widget_set_events (GTK_WIDGET (self), GDK_BUTTON_PRESS_MASK);
- }
---- a/app/dia-page-layout.c
-+++ b/app/dia-page-layout.c
-@@ -25,8 +25,6 @@
- 
- #include <glib/gi18n-lib.h>
- 
--#include <xpm-pixbuf.h>
--
- #include "dia-page-layout.h"
- 
- #include "pixmaps/portrait.xpm"
-@@ -148,7 +146,7 @@ dia_page_layout_init (DiaPageLayout *self)
- 
-   self->orient_portrait = gtk_radio_button_new (NULL);
- 
--  wid = gtk_image_new_from_pixbuf (xpm_pixbuf_load (portrait_xpm));
-+  wid = gtk_image_new_from_pixbuf (gdk_pixbuf_new_from_xpm_data 
(portrait_xpm));
-   gtk_container_add (GTK_CONTAINER (self->orient_portrait), wid);
-   gtk_widget_show (wid);
- 
-@@ -157,7 +155,7 @@ dia_page_layout_init (DiaPageLayout *self)
- 
-   self->orient_landscape = gtk_radio_button_new (
-         gtk_radio_button_get_group (GTK_RADIO_BUTTON 
(self->orient_portrait)));
--  wid = gtk_image_new_from_pixbuf (xpm_pixbuf_load (landscape_xpm));
-+  wid = gtk_image_new_from_pixbuf (gdk_pixbuf_new_from_xpm_data 
(landscape_xpm));
-   gtk_container_add (GTK_CONTAINER (self->orient_landscape), wid);
-   gtk_widget_show (wid);
- 
---- a/app/navigation.c
-+++ b/app/navigation.c
-@@ -24,8 +24,6 @@
- 
- #include <gtk/gtk.h>
- 
--#include <xpm-pixbuf.h>
--
- #include "diagram.h"
- #include "display.h"
- #include "renderer/diacairo.h"
-@@ -489,7 +487,7 @@ navigation_popup_new (DDisplay *ddisp)
-                     "released", G_CALLBACK 
(on_button_navigation_popup_released),
-                     NULL);
- 
--  pixbuf = xpm_pixbuf_load (nav_xpm);
-+  pixbuf = gdk_pixbuf_new_from_xpm_data (nav_xpm);
- 
-   image = gtk_image_new_from_pixbuf (pixbuf);
- 
---- a/app/sheet-editor/sheet-editor-button.c
-+++ b/app/sheet-editor/sheet-editor-button.c
-@@ -24,8 +24,6 @@
- 
- #include <glib/gi18n-lib.h>
- 
--#include <xpm-pixbuf.h>
--
- #include "sheet-editor-button.h"
- #include "widgets.h"
- #include "message.h"
-@@ -79,7 +77,7 @@ get_object_pixbuf (SheetObject *so)
-     if (g_str_has_prefix ((char *) so->pixmap, "res:")) {
-       pixbuf = pixbuf_from_resource (((char *) so->pixmap) + 4);
-     } else {
--      pixbuf = xpm_pixbuf_load (so->pixmap);
-+      pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) so->pixmap);
-     }
-   } else {
-     if (so->pixmap_file != NULL) {
---- a/app/toolbox.c
-+++ b/app/toolbox.c
-@@ -21,9 +21,6 @@
- #include <glib/gi18n-lib.h>
- 
- #include <gtk/gtk.h>
--
--#include <xpm-pixbuf.h>
--
- #include "gtkwrapbox.h"
- #include "gtkhwrapbox.h"
- 
-@@ -305,7 +302,7 @@ fill_sheet_wbox(Sheet *sheet)
-       if (g_str_has_prefix ((const char *) sheet_obj->pixmap, "res:")) {
-         pixbuf = pixbuf_from_resource ((const char *) sheet_obj->pixmap + 4);
-       } else {
--        pixbuf = xpm_pixbuf_load (sheet_obj->pixmap);
-+        pixbuf = gdk_pixbuf_new_from_xpm_data (sheet_obj->pixmap);
-         if (pixbuf == NULL) {
-           g_warning ("Problem loading icon for ā€˜%s’", sheet_obj->description);
-           pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
-@@ -334,7 +331,7 @@ fill_sheet_wbox(Sheet *sheet)
-           pixbuf = cropped;
-         }
-       } else {
--        pixbuf = xpm_pixbuf_load (missing);
-+        pixbuf = gdk_pixbuf_new_from_xpm_data (missing);
- 
-         message_warning ("failed to load icon for file\n %s\n cause=%s",
-                          sheet_obj->pixmap_file,
-@@ -342,8 +339,8 @@ fill_sheet_wbox(Sheet *sheet)
-       }
-     } else {
-       DiaObjectType *type;
--      type = object_get_type (sheet_obj->object_type);
--      pixbuf = dia_object_type_get_icon (type);
-+      type = object_get_type(sheet_obj->object_type);
-+      pixbuf = gdk_pixbuf_new_from_xpm_data (type->pixmap);
-     }
- 
-     if (pixbuf) {
---- a/lib/meson.build
-+++ b/lib/meson.build
-@@ -230,7 +230,6 @@ libdia_deps = [
-     libm_dep,
-     gmodule_dep,
-     graphene_dep,
--    xpm_dep,
- ]
- 
- libdia_inc = include_directories('.')
---- a/lib/object.c
-+++ b/lib/object.c
-@@ -23,8 +23,6 @@
- #include <stdio.h>
- #include <string.h>
- 
--#include <xpm-pixbuf.h>
--
- #define _DIA_OBJECT_BUILD 1
- #include "object.h"
- #include "diagramdata.h" /* for Layer */
-@@ -1425,6 +1423,14 @@ dia_object_type_get_icon (const DiaObjectType *type)
- 
-   if (g_str_has_prefix ((char *) icon_data, "res:")) {
-     pixbuf = pixbuf_from_resource (((char *) icon_data) + 4);
-+  } else if (icon_data && strncmp ((char *) icon_data, "GdkP", 4) == 0) {
-+    /* GTK3: We will remove this in Dia 2.0 but is retained to maintain
-+     * compatability with 0.97.3 objects */
-+    g_warning ("Object '%s' has an inline icon, this is deprecated",
-+               type->name);
-+    G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-+    pixbuf = gdk_pixbuf_new_from_inline (-1, (guint8 *) icon_data, TRUE, 
NULL);
-+    G_GNUC_END_IGNORE_DEPRECATIONS
-   } else if (type->pixmap_file != NULL) {
-     GError *error = NULL;
-     pixbuf = gdk_pixbuf_new_from_file (type->pixmap_file, &error);
-@@ -1433,7 +1439,8 @@ dia_object_type_get_icon (const DiaObjectType *type)
-       g_clear_error (&error);
-     }
-   } else {
--    pixbuf = xpm_pixbuf_load (icon_data);
-+    const char **pixmap_data = icon_data;
-+    pixbuf = gdk_pixbuf_new_from_xpm_data (pixmap_data);
-   }
- 
-   return pixbuf;
---- a/meson.build
-+++ b/meson.build
-@@ -22,7 +22,6 @@ libxml_dep  = dependency('libxml-2.0', version: '>= 2.14.0')
- gmodule_dep = dependency('gmodule-2.0')
- libcairo_dep = dependency('cairo')
- graphene_dep = dependency('graphene-1.0', version: '>= 1.10')
--xpm_dep = dependency('xpm-pixbuf')
- 
- # Not required since not all platforms ship a separate libm.
- libm_dep = cc.find_library('m', required: false)

diff --git a/app-office/dia/files/dia-0.98-use_gtkfontbutton.patch 
b/app-office/dia/files/dia-0.98-use_gtkfontbutton.patch
deleted file mode 100644
index 5a07f6b7277f..000000000000
--- a/app-office/dia/files/dia-0.98-use_gtkfontbutton.patch
+++ /dev/null
@@ -1,496 +0,0 @@
-https://salsa.debian.org/debian/dia/-/blob/debian/0.98+git20250827-2/debian/patches/use-gtkfontbutton.patch
-Origin: https://gitlab.gnome.org/GNOME/dia/-/merge_requests/114
-This patch changes the custom font-selector window by a GtkFontButton widget.
-Fix the custom font-selector window which is very long to load.
---- a/lib/font.c
-+++ b/lib/font.c
-@@ -39,6 +39,7 @@
- #include "font.h"
- #include "message.h"
- #include "textline.h"
-+#include "units.h"
- 
- static PangoContext *pango_context = NULL;
- 
-@@ -53,13 +54,6 @@ struct _DiaFont {
-   PangoFontDescription *pfd;
-   /* mutable */ char *legacy_name;
- 
--  /* there is a difference between Pango's font size and Dia's font height */
--  /* Calculated  font_size is to make 'font_height = ascent + descent */
--  /* The font_height is used as default line height, there used to be a 
hard-coded size = 0.7 * height  */
--  /* before using pango_set_absolute_size() to overcome font size differences 
between renderers */
--  double height;
--  /* Need to load a font to query it's metrics */
--  PangoFont *loaded;
-   PangoFontMetrics *metrics;
- };
- 
-@@ -136,8 +130,6 @@ dia_font_finalize (GObject *object)
-   g_clear_pointer (&font->pfd, pango_font_description_free);
-   g_clear_pointer (&font->metrics, pango_font_metrics_unref);
- 
--  g_clear_object (&font->loaded);
--
-   G_OBJECT_CLASS (dia_font_parent_class)->finalize (object);
- }
- 
-@@ -166,33 +158,17 @@ dia_pfd_set_height(PangoFontDescription *pfd, double 
height)
- }
- 
- 
--/*!
-- * In Dia a font is usually referred to by it's (line-) height, not it's size.
-- *
-- * This methods "calculates" the latter from the former. This used to be some 
magic factor of 0.7 which did not
-- * solve the resolution dependencance of the former calculation. In fact 
there is new magic factor now because
-- * really calculating the font size from the height would involve two font 
loads which seem to be two expensive.
-- */
- static void
--_dia_font_adjust_size (DiaFont *font, double height, gboolean recalc_alwways)
-+dia_font_update_metrics (DiaFont *font)
- {
-+  PangoFont *loaded;
- 
--  if (font->height != height || !font->metrics || recalc_alwways) {
--    PangoFont *loaded;
--
--    dia_pfd_set_height (font->pfd, height);
--    /* need to load a font to get it's metrics */
--    loaded = font->loaded;
--    font->loaded = pango_context_load_font (dia_font_get_context (), 
font->pfd);
--
--    g_clear_object (&loaded);
--
--    g_clear_pointer (&font->metrics, pango_font_metrics_unref);
-+  g_clear_pointer (&font->metrics, pango_font_metrics_unref);
- 
--    /* caching metrics */
--    font->metrics = pango_font_get_metrics (font->loaded, NULL);
--    font->height = height;
--  }
-+  /* need to load a font to get its metrics */
-+  loaded = pango_context_load_font (dia_font_get_context (), font->pfd);
-+  font->metrics = pango_font_get_metrics (loaded, NULL);
-+  g_clear_object (&loaded);
- }
- 
- 
-@@ -205,15 +181,8 @@ DiaFont *
- dia_font_new (const char *family, DiaFontStyle style, double height)
- {
-   DiaFont* font = dia_font_new_from_style(style, height);
--  gboolean changed;
--
--  changed = family != NULL && g_strcmp0 (pango_font_description_get_family 
(font->pfd), family) != 0;
-   pango_font_description_set_family(font->pfd, family);
- 
--  if (changed) {
--    _dia_font_adjust_size (font, font->height, TRUE);
--  }
--
-   return font;
- }
- 
-@@ -316,9 +285,31 @@ dia_font_new_from_style (DiaFontStyle style, double 
height)
- 
-   retval = g_object_new (DIA_TYPE_FONT, NULL);
-   retval->pfd = pfd;
--  _dia_font_adjust_size (retval, height, FALSE);
-   retval->legacy_name = NULL;
- 
-+  dia_font_update_metrics (retval);
-+
-+  return retval;
-+}
-+
-+
-+DiaFont *
-+dia_font_new_from_description (const char *desc)
-+{
-+  DiaFont *retval;
-+  PangoFontDescription *pfd = pango_font_description_from_string (desc);
-+
-+  if (!pango_font_description_get_size_is_absolute (pfd)) {
-+    double size = pango_font_description_get_size (pfd);
-+    pango_font_description_set_absolute_size(pfd, size * global_zoom_factor * 
72.0);
-+  }
-+
-+  retval = g_object_new (DIA_TYPE_FONT, NULL);
-+  retval->pfd = pfd;
-+  retval->legacy_name = NULL;
-+
-+  dia_font_update_metrics (retval);
-+
-   return retval;
- }
- 
-@@ -407,8 +398,9 @@ double
- dia_font_get_height (DiaFont *font)
- {
-   g_return_val_if_fail (font != NULL, 0.0);
-+  g_return_val_if_fail (pango_font_description_get_size_is_absolute 
(font->pfd), 0.0);
- 
--  return font->height;
-+  return pdu_to_dcm(pango_font_description_get_size(font->pfd)) / 0.8;
- }
- 
- 
-@@ -430,6 +422,23 @@ dia_font_get_size (DiaFont *font)
- }
- 
- 
-+/**
-+ * dia_font_set_size:
-+ * @font: The font to modify.
-+ * @size: The new size in centimetres.
-+ *
-+ * Sets the size of font to the provided (positive) size.
-+ */
-+void
-+dia_font_set_size (DiaFont *font, double size)
-+{
-+  g_return_if_fail (size >= 0);
-+
-+  pango_font_description_set_absolute_size (font->pfd, dcm_to_pdu (size));
-+  dia_font_update_metrics (font);
-+}
-+
-+
- /**
-  * dia_font_set_height:
-  *
-@@ -438,7 +447,8 @@ dia_font_get_size (DiaFont *font)
- void
- dia_font_set_height (DiaFont* font, double height)
- {
--  _dia_font_adjust_size (font, height, FALSE);
-+  /* FIXME For now, assume height is 80% of size. */
-+  dia_font_set_size (font, height / 0.8);
- }
- 
- 
-@@ -493,7 +503,7 @@ dia_font_set_any_family (DiaFont *font, const char *family)
-   pango_font_description_set_family (font->pfd, family);
-   if (changed) {
-     /* force recalculation on name change */
--    _dia_font_adjust_size (font, font->height, TRUE);
-+    dia_font_update_metrics (font);
-   }
- 
-   g_clear_pointer (&font->legacy_name, g_free);
-@@ -531,7 +541,7 @@ dia_font_set_weight (DiaFont *font, DiaFontWeight weight)
-   dia_pfd_set_weight(font->pfd,weight);
- 
-   if (old_weight != weight) {
--    _dia_font_adjust_size (font, font->height, TRUE);
-+    dia_font_update_metrics (font);
-   }
- }
- 
-@@ -548,7 +558,7 @@ dia_font_set_slant (DiaFont *font, DiaFontSlant slant)
-   g_return_if_fail(font != NULL);
-   dia_pfd_set_slant(font->pfd,slant);
-   if (slant != old_slant)
--    _dia_font_adjust_size (font, font->height, TRUE);
-+    dia_font_update_metrics (font);
- }
- 
- 
-@@ -702,7 +712,8 @@ dia_font_ascent (const char *string, DiaFont *font, double 
height)
- {
-   if (font->metrics) {
-     double ascent = pdu_to_dcm (pango_font_metrics_get_ascent 
(font->metrics));
--    return ascent * (height / font->height);
-+    double factor = height / dia_font_get_height (font);
-+    return ascent * factor;
-   } else {
-     /* previous, _expensive_ but string specific way */
-     TextLine *text_line = text_line_new (string, font, height);
-@@ -723,7 +734,8 @@ dia_font_descent (const char *string, DiaFont *font, 
double height)
- {
-   if (font->metrics) {
-     double descent = pdu_to_dcm (pango_font_metrics_get_descent 
(font->metrics));
--    return descent * (height / font->height);
-+    double factor = height / dia_font_get_height (font);
-+    return descent * factor;
-   } else {
-     /* previous, _expensive_ but string specific way */
-     TextLine *text_line = text_line_new (string, font, height);
---- a/lib/font.h
-+++ b/lib/font.h
-@@ -95,6 +95,7 @@ DiaFont                    *dia_font_new                    
(const char       *f
- DiaFont                    *dia_font_new_from_style         (DiaFontStyle     
 style,
-                                                              double           
 height);
- DiaFont                    *dia_font_new_from_legacy_name   (const char       
*name);
-+DiaFont                    *dia_font_new_from_description   (const char       
*description);
- const char                 *dia_font_get_legacy_name        (DiaFont          
*font);
- DiaFont                    *dia_font_copy                   (DiaFont          
*font);
- DiaFontStyle                dia_font_get_style              (DiaFont          
*font);
-@@ -103,6 +104,8 @@ const PangoFontDescription *dia_font_get_description       
 (DiaFont          *f
- double                      dia_font_get_height             (DiaFont          
*font);
- void                        dia_font_set_height             (DiaFont          
*font,
-                                                              double           
 height);
-+void                        dia_font_set_size               (DiaFont          
*font,
-+                                                             double           
 size);
- double                      dia_font_get_size               (DiaFont          
*font);
- void                        dia_font_set_slant              (DiaFont          
*font,
-                                                              DiaFontSlant     
 slant);
---- a/lib/libdia.def
-+++ b/lib/libdia.def
-@@ -241,8 +241,10 @@ EXPORTS
-  dia_font_new
-  dia_font_new_from_legacy_name
-  dia_font_new_from_style
-+ dia_font_new_from_description
-  dia_font_set_any_family
-  dia_font_set_height
-+ dia_font_set_size
-  dia_font_set_slant
-  dia_font_set_slant_from_string
-  dia_font_set_weight
-@@ -250,11 +252,6 @@ EXPORTS
-  dia_font_copy
-  dia_font_string_width
- 
-- dia_font_selector_get_font
-- dia_font_selector_get_type
-- dia_font_selector_new
-- dia_font_selector_set_font
--
-  dia_guide_new
-  dia_guide_copy
-  dia_guide_free
---- a/lib/meson.build
-+++ b/lib/meson.build
-@@ -167,8 +167,6 @@ libdia_sources = stdprop_sources + [
-     'dia-colour-cell-renderer.h',
-     'dia-colour-selector.c',
-     'dia-colour-selector.h',
--    'dia-font-selector.c',
--    'dia-font-selector.h',
-     'dia-graphene.h',
-     'dia-guide.c',
-     'dia-guide.h',
---- a/lib/prop_attr.c
-+++ b/lib/prop_attr.c
-@@ -29,11 +29,11 @@
- 
- #include <gtk/gtk.h>
- #include "dia_xml.h"
-+#include "font.h"
- #include "properties.h"
- #include "propinternals.h"
- #include "dia-arrow-selector.h"
- #include "dia-colour-selector.h"
--#include "dia-font-selector.h"
- #include "dia-line-style-selector.h"
- 
- /***************************/
-@@ -421,22 +421,27 @@ fontprop_copy(FontProperty *src)
- static WIDGET *
- fontprop_get_widget(FontProperty *prop, PropDialog *dialog)
- {
--  GtkWidget *ret = dia_font_selector_new();
--  prophandler_connect(&prop->common, G_OBJECT(ret), "value-changed");
-+  GtkWidget *ret = gtk_font_button_new();
-+  gtk_font_chooser_set_level (GTK_FONT_CHOOSER (ret), 
GTK_FONT_CHOOSER_LEVEL_FAMILY | GTK_FONT_CHOOSER_LEVEL_STYLE);
-+  prophandler_connect(&prop->common, G_OBJECT(ret), "font-set");
-   return ret;
- }
- 
- static void
- fontprop_reset_widget(FontProperty *prop, WIDGET *widget)
- {
--  dia_font_selector_set_font (DIA_FONT_SELECTOR (widget),
--                              prop->font_data);
-+  const PangoFontDescription *desc = dia_font_get_description 
(prop->font_data);
-+  gtk_font_chooser_set_font_desc (GTK_FONT_CHOOSER (widget), desc);
- }
- 
- static void
- fontprop_set_from_widget(FontProperty *prop, WIDGET *widget)
- {
--  prop->font_data = dia_font_selector_get_font (DIA_FONT_SELECTOR (widget));
-+  char *desc = gtk_font_chooser_get_font (GTK_FONT_CHOOSER (widget));
-+  DiaFont *new_font = dia_font_new_from_description (desc);
-+
-+  g_clear_pointer (&desc, g_free);
-+  g_set_object (&prop->font_data, new_font);
- }
- 
- static void
---- a/lib/prop_text.c
-+++ b/lib/prop_text.c
-@@ -125,6 +125,7 @@ multistringprop_get_widget(StringProperty *prop, 
PropDialog *dialog)
-   GtkWidget *ret = gtk_text_view_new();
-   GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ret));
-   GtkWidget *frame = gtk_frame_new(NULL);
-+  gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (ret), FALSE);
-   gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
-   gtk_container_add(GTK_CONTAINER(frame), ret);
-   g_signal_connect(G_OBJECT(ret), "key-release-event",
---- a/objects/UML/class_attributes_dialog.c
-+++ b/objects/UML/class_attributes_dialog.c
-@@ -729,6 +729,7 @@ _attributes_create_page (GtkNotebook *notebook, UMLClass 
*umlclass)
-   gtk_container_add (GTK_CONTAINER (scrolledwindow), entry);
-   gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (entry), GTK_WRAP_WORD);
-   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (entry), TRUE);
-+  gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (entry), FALSE);
-   gtk_widget_show (entry);
- #if 0 /* while the GtkEntry has a "activate" signal, GtkTextView does not.
-        * Maybe we should connect to "set-focus-child" instead?
---- a/objects/UML/class_dialog.c
-+++ b/objects/UML/class_dialog.c
-@@ -40,6 +40,7 @@
- #include <math.h>
- #include <string.h>
- 
-+#include "font.h"
- #include "object.h"
- #include "class.h"
- #include "diaoptionmenu.h"
-@@ -196,6 +197,28 @@ _class_set_comment (GtkTextView *view, gchar *text)
- }
- 
- 
-+static DiaFont *
-+_font_from_button (GtkFontButton *btn)
-+{
-+  char *font_desc;
-+  DiaFont *ret;
-+
-+  font_desc = gtk_font_chooser_get_font (GTK_FONT_CHOOSER (btn));
-+  ret = dia_font_new_from_description (font_desc);
-+  g_clear_pointer (&font_desc, g_free);
-+
-+  return ret;
-+}
-+
-+
-+static void
-+_set_selector_font (GtkFontButton *btn, DiaFont *font)
-+{
-+  gtk_font_chooser_set_font_desc (GTK_FONT_CHOOSER (btn),
-+                                  dia_font_get_description (font));
-+}
-+
-+
- static void
- class_read_from_dialog(UMLClass *umlclass, UMLClassDialog *prop_dialog)
- {
-@@ -243,12 +266,12 @@ class_read_from_dialog(UMLClass *umlclass, 
UMLClassDialog *prop_dialog)
-   dia_colour_selector_get_colour (DIA_COLOUR_SELECTOR 
(prop_dialog->fill_color),
-                                   &umlclass->fill_color);
- 
--  umlclass->normal_font = dia_font_selector_get_font 
(prop_dialog->normal_font);
--  umlclass->polymorphic_font = dia_font_selector_get_font 
(prop_dialog->polymorphic_font);
--  umlclass->abstract_font = dia_font_selector_get_font 
(prop_dialog->abstract_font);
--  umlclass->classname_font = dia_font_selector_get_font 
(prop_dialog->classname_font);
--  umlclass->abstract_classname_font = dia_font_selector_get_font 
(prop_dialog->abstract_classname_font);
--  umlclass->comment_font = dia_font_selector_get_font 
(prop_dialog->comment_font);
-+  umlclass->normal_font = _font_from_button(prop_dialog->normal_font);
-+  umlclass->polymorphic_font = 
_font_from_button(prop_dialog->polymorphic_font);
-+  umlclass->abstract_font = _font_from_button(prop_dialog->abstract_font);
-+  umlclass->classname_font = _font_from_button (prop_dialog->classname_font);
-+  umlclass->abstract_classname_font = _font_from_button 
(prop_dialog->abstract_classname_font);
-+  umlclass->comment_font = _font_from_button (prop_dialog->comment_font);
- 
-   umlclass->font_height = gtk_spin_button_get_value 
(prop_dialog->normal_font_height);
-   umlclass->abstract_font_height = gtk_spin_button_get_value 
(prop_dialog->abstract_font_height);
-@@ -291,12 +314,12 @@ class_fill_in_dialog(UMLClass *umlclass)
-   dia_colour_selector_set_colour (prop_dialog->text_color, 
&umlclass->text_color);
-   dia_colour_selector_set_colour (prop_dialog->line_color, 
&umlclass->line_color);
-   dia_colour_selector_set_colour (prop_dialog->fill_color, 
&umlclass->fill_color);
--  dia_font_selector_set_font (prop_dialog->normal_font, 
umlclass->normal_font);
--  dia_font_selector_set_font (prop_dialog->polymorphic_font, 
umlclass->polymorphic_font);
--  dia_font_selector_set_font (prop_dialog->abstract_font, 
umlclass->abstract_font);
--  dia_font_selector_set_font (prop_dialog->classname_font, 
umlclass->classname_font);
--  dia_font_selector_set_font (prop_dialog->abstract_classname_font, 
umlclass->abstract_classname_font);
--  dia_font_selector_set_font (prop_dialog->comment_font, 
umlclass->comment_font);
-+  _set_selector_font (prop_dialog->normal_font, umlclass->normal_font);
-+  _set_selector_font (prop_dialog->polymorphic_font, 
umlclass->polymorphic_font);
-+  _set_selector_font (prop_dialog->abstract_font, umlclass->abstract_font);
-+  _set_selector_font (prop_dialog->classname_font, umlclass->classname_font);
-+  _set_selector_font (prop_dialog->abstract_classname_font, 
umlclass->abstract_classname_font);
-+  _set_selector_font (prop_dialog->comment_font, umlclass->comment_font);
-   gtk_spin_button_set_value (prop_dialog->normal_font_height, 
umlclass->font_height);
-   gtk_spin_button_set_value (prop_dialog->polymorphic_font_height, 
umlclass->polymorphic_font_height);
-   gtk_spin_button_set_value (prop_dialog->abstract_font_height, 
umlclass->abstract_font_height);
-@@ -311,7 +334,7 @@ create_font_props_row (GtkGrid    *grid,
-                        gint        row,
-                        DiaFont    *font,
-                        real        height,
--                       DiaFontSelector **fontsel,
-+                       GtkFontButton   **fontsel,
-                        GtkSpinButton   **heightsel)
- {
-   GtkWidget *label;
-@@ -320,9 +343,10 @@ create_font_props_row (GtkGrid    *grid,
-   label = gtk_label_new (kind);
-   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-   gtk_grid_attach (grid, label, 0, row, 1, 1);
--  *fontsel = DIA_FONT_SELECTOR (dia_font_selector_new ());
-+  *fontsel = GTK_FONT_BUTTON (gtk_font_button_new ());
-   gtk_widget_set_hexpand (GTK_WIDGET (*fontsel), TRUE);
--  dia_font_selector_set_font (DIA_FONT_SELECTOR (*fontsel), font);
-+  gtk_font_chooser_set_font_desc (GTK_FONT_CHOOSER (*fontsel), 
dia_font_get_description (font));
-+  gtk_font_chooser_set_level (GTK_FONT_CHOOSER (*fontsel), 
GTK_FONT_CHOOSER_LEVEL_FAMILY | GTK_FONT_CHOOSER_LEVEL_STYLE);
-   gtk_grid_attach (GTK_GRID (grid), GTK_WIDGET(*fontsel), 1, row, 1, 1);
- 
-   adj = GTK_ADJUSTMENT (gtk_adjustment_new (height, 0.1, 10.0, 0.1, 1.0, 0));
-@@ -382,6 +406,7 @@ class_create_page(GtkNotebook *notebook,  UMLClass 
*umlclass)
-   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow),
-                                      GTK_SHADOW_IN);
-   entry = gtk_text_view_new ();
-+  gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (entry), FALSE);
-   prop_dialog->comment = GTK_TEXT_VIEW(entry);
-   gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (entry), GTK_WRAP_WORD);
- 
---- a/objects/UML/class_dialog.h
-+++ b/objects/UML/class_dialog.h
-@@ -1,7 +1,6 @@
- #pragma once
- 
- #include "dia-colour-selector.h"
--#include "dia-font-selector.h"
- 
- G_BEGIN_DECLS
- 
-@@ -32,12 +31,12 @@ struct _UMLClassDialog {
-   GtkToggleButton *op_supp;
-   GtkToggleButton *comments_vis;
-   GtkToggleButton *op_wrap;
--  DiaFontSelector *normal_font;
--  DiaFontSelector *abstract_font;
--  DiaFontSelector *polymorphic_font;
--  DiaFontSelector *classname_font;
--  DiaFontSelector *abstract_classname_font;
--  DiaFontSelector *comment_font;
-+  GtkFontButton *normal_font;
-+  GtkFontButton *abstract_font;
-+  GtkFontButton *polymorphic_font;
-+  GtkFontButton *classname_font;
-+  GtkFontButton *abstract_classname_font;
-+  GtkFontButton *comment_font;
-   GtkSpinButton *normal_font_height;
-   GtkSpinButton *abstract_font_height;
-   GtkSpinButton *polymorphic_font_height;
---- a/objects/UML/class_operations_dialog.c
-+++ b/objects/UML/class_operations_dialog.c
-@@ -982,6 +982,7 @@ operations_data_create_hbox (UMLClass *umlclass)
-   gtk_container_add (GTK_CONTAINER (scrolledwindow), entry);
-   gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (entry), GTK_WRAP_WORD);
-   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (entry),TRUE);
-+  gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (entry), FALSE);
- 
- 
-   gtk_grid_attach (GTK_GRID (grid), label, 4, 0, 1, 1);
-@@ -1340,6 +1341,7 @@ operations_parameters_data_create_vbox (UMLClass 
*umlclass)
-   gtk_container_add (GTK_CONTAINER (scrolledwindow), entry);
-   gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (entry), GTK_WRAP_WORD);
-   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (entry),TRUE);
-+  gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (entry), FALSE);
- 
-   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-   gtk_grid_attach (GTK_GRID (grid), label, 2, 1, 1, 1);

Reply via email to