[gtk: 1/5] Don't cast GtkWrapMode to the incompatible enum PangoWrapMode
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk: 1/5] Don't cast GtkWrapMode to the incompatible enum PangoWrapMode
- Date: Tue, 3 May 2022 17:46:51 +0000 (UTC)
commit 737854aa0d203de7bdab2b282a51691c9056dadc
Author: Federico Mena Quintero <federico gnome org>
Date: Tue Apr 26 13:43:19 2022 -0500
Don't cast GtkWrapMode to the incompatible enum PangoWrapMode
The enum values are not compatible, and moreover, there is an extra
GTK_WRAP_NONE that PangoWrapMode doesn't have - thus,
pango_wrap_mode_to_string() will assert.
As far as I can tell, Orca does not read the wrap-mode key in the
dictionary for text attributes, anyway.
Fixes: #4869
gtk/a11y/gtkatspipango.c | 1 +
gtk/a11y/gtkatspitextbuffer.c | 25 +++++++++++++++++++++++--
2 files changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/gtk/a11y/gtkatspipango.c b/gtk/a11y/gtkatspipango.c
index 4db6a1a64b..b353027cc4 100644
--- a/gtk/a11y/gtkatspipango.c
+++ b/gtk/a11y/gtkatspipango.c
@@ -113,6 +113,7 @@ pango_underline_to_string (PangoUnderline value)
const char *
pango_wrap_mode_to_string (PangoWrapMode mode)
{
+ /* Keep these in sync with gtk_wrap_mode_to_string() */
switch (mode)
{
case PANGO_WRAP_WORD:
diff --git a/gtk/a11y/gtkatspitextbuffer.c b/gtk/a11y/gtkatspitextbuffer.c
index 61e240fb0d..40fd05fa1f 100644
--- a/gtk/a11y/gtkatspitextbuffer.c
+++ b/gtk/a11y/gtkatspitextbuffer.c
@@ -55,6 +55,27 @@ gtk_text_direction_to_string (GtkTextDirection direction)
}
}
+static const char *
+gtk_wrap_mode_to_string (GtkWrapMode wrap_mode)
+{
+ /* Keep these in sync with pango_wrap_mode_to_string(); note that
+ * here we have an extra case for NONE.
+ */
+ switch (wrap_mode)
+ {
+ case GTK_WRAP_NONE:
+ return "none";
+ case GTK_WRAP_CHAR:
+ return "char";
+ case GTK_WRAP_WORD:
+ return "word";
+ case GTK_WRAP_WORD_CHAR:
+ return "word-char";
+ default:
+ g_assert_not_reached ();
+ }
+}
+
void
gtk_text_view_add_default_attributes (GtkTextView *view,
GVariantBuilder *builder)
@@ -75,7 +96,7 @@ gtk_text_view_add_default_attributes (GtkTextView *view,
g_variant_builder_add (builder, "{ss}", "direction",
gtk_text_direction_to_string (text_attrs->direction));
g_variant_builder_add (builder, "{ss}", "wrap-mode",
- pango_wrap_mode_to_string ((PangoWrapMode)text_attrs->wrap_mode));
+ gtk_wrap_mode_to_string (text_attrs->wrap_mode));
g_variant_builder_add (builder, "{ss}", "editable",
text_attrs->editable ? "true" : "false");
g_variant_builder_add (builder, "{ss}", "invisible",
@@ -256,7 +277,7 @@ gtk_text_buffer_get_run_attributes (GtkTextBuffer *buffer,
"wrap-mode", &wrap_mode,
NULL);
if (val_set)
- g_variant_builder_add (builder, "{ss}", "wrap-mode", pango_wrap_mode_to_string
((PangoWrapMode)wrap_mode));
+ g_variant_builder_add (builder, "{ss}", "wrap-mode", gtk_wrap_mode_to_string (wrap_mode));
temp_tags = temp_tags->next;
}
val_set = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]