From 8d64ac935ab521d63946a1215be441076b384382 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 8 Dec 2021 07:58:51 -0500 Subject: serializer: Support tabs in spaces When serializing to a string, we use 'sp' as unit for spaces. When serializing to json, we now set a string member 'positions-in', with the possible values 'pixels' or 'spaces'. --- pango/serializer.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/pango/serializer.c b/pango/serializer.c index 385410cc..8bb79da4 100644 --- a/pango/serializer.c +++ b/pango/serializer.c @@ -198,7 +198,11 @@ add_tab_array (GtkJsonPrinter *printer, gtk_json_printer_start_object (printer, "tabs"); - gtk_json_printer_add_boolean (printer, "positions-in-pixels", pango_tab_array_get_positions_in_pixels (tabs)); + if (pango_tab_array_get_positions_in_pixels (tabs)) + gtk_json_printer_add_string (printer, "positions-in", "pixels"); + else if (pango_tab_array_get_positions_in_spaces (tabs)) + gtk_json_printer_add_string (printer, "positions-in", "spaces"); + gtk_json_printer_start_array (printer, "positions"); for (int i = 0; i < pango_tab_array_get_size (tabs); i++) { @@ -1016,12 +1020,12 @@ json_parser_fill_tabs (GtkJsonParser *parser, } enum { - TABS_POSITIONS_IN_PIXELS, + TABS_POSITIONS_IN, TABS_POSITIONS }; static const char *tabs_members[] = { - "positions-in-pixels", + "positions-in", "positions", NULL }; @@ -1036,8 +1040,15 @@ json_parser_fill_tab_array (GtkJsonParser *parser, { switch (gtk_json_parser_select_member (parser, tabs_members)) { - case TABS_POSITIONS_IN_PIXELS: - pango_tab_array_set_positions_in_pixels (tabs, gtk_json_parser_get_boolean (parser)); + case TABS_POSITIONS_IN: + { + char *str = gtk_json_parser_get_string (parser); + if (strcmp (str, "pixels") == 0) + pango_tab_array_set_positions_in_pixels (tabs, TRUE); + else if (strcmp (str, "spaces") == 0) + pango_tab_array_set_positions_in_spaces (tabs, TRUE); + g_free (str); + } break; case TABS_POSITIONS: -- cgit v1.2.1