diff --git a/app/flatpak-builtins-list.c b/app/flatpak-builtins-list.c index bfd3879d..fb7abfc9 100644 --- a/app/flatpak-builtins-list.c +++ b/app/flatpak-builtins-list.c @@ -169,16 +169,16 @@ print_table_for_refs (gboolean print_apps, flatpak_table_printer_set_column_expand (printer, i, TRUE); flatpak_table_printer_set_column_ellipsize (printer, find_column (columns, "description", NULL), - TRUE); - flatpak_table_printer_set_column_ellipsize_middle (printer, + FLATPAK_ELLIPSIZE_MODE_END); + flatpak_table_printer_set_column_ellipsize (printer, find_column (columns, "application", NULL), - TRUE, TRUE); + FLATPAK_ELLIPSIZE_MODE_START); if (app_runtime) { if (!flatpak_split_partial_ref_arg (app_runtime, FLATPAK_KINDS_RUNTIME, NULL, NULL, &match_kinds, &match_id, &match_arch, &match_branch, error)) - return FALSE; + return FALSE; } for (i = 0; i < refs_array->len; i++) diff --git a/app/flatpak-builtins-remote-ls.c b/app/flatpak-builtins-remote-ls.c index 628ddc32..27392a00 100644 --- a/app/flatpak-builtins-remote-ls.c +++ b/app/flatpak-builtins-remote-ls.c @@ -126,7 +126,7 @@ ls_remote (GHashTable *refs_hash, const char **arches, const char *app_runtime, flatpak_table_printer_set_column_expand (printer, i, TRUE); flatpak_table_printer_set_column_ellipsize (printer, find_column (columns, "description", NULL), - TRUE); + FLATPAK_ELLIPSIZE_MODE_END); if (app_runtime) { diff --git a/app/flatpak-builtins-search.c b/app/flatpak-builtins-search.c index e1f6441a..ed4cd751 100644 --- a/app/flatpak-builtins-search.c +++ b/app/flatpak-builtins-search.c @@ -260,9 +260,9 @@ print_matches (Column *columns, GSList *matches) flatpak_get_window_size (&rows, &cols); ellip = find_column (columns, "description", NULL); - flatpak_table_printer_set_column_ellipsize (printer, ellip, TRUE); + flatpak_table_printer_set_column_ellipsize (printer, ellip, FLATPAK_ELLIPSIZE_MODE_END); ellip = find_column (columns, "application", NULL); - flatpak_table_printer_set_column_ellipsize_middle (printer, ellip, TRUE, TRUE); + flatpak_table_printer_set_column_ellipsize (printer, ellip, FLATPAK_ELLIPSIZE_MODE_START); flatpak_table_printer_print_full (printer, 0, cols, NULL, NULL); g_print ("\n"); diff --git a/app/flatpak-builtins-utils.c b/app/flatpak-builtins-utils.c index c9492153..c4dbf3d5 100644 --- a/app/flatpak-builtins-utils.c +++ b/app/flatpak-builtins-utils.c @@ -973,22 +973,24 @@ format_timestamp (guint64 timestamp) char * ellipsize_string (const char *text, int len) { - return ellipsize_string_pos (text, len, FALSE); + return ellipsize_string_full (text, len, FLATPAK_ELLIPSIZE_MODE_END); } char * -ellipsize_string_pos (const char *text, int len, gboolean middle) +ellipsize_string_full (const char *text, int len, FlatpakEllipsizeMode mode) { g_autofree char *ret = g_strdup (text); - if (g_utf8_strlen (ret, -1) > len) + if (mode != FLATPAK_ELLIPSIZE_MODE_NONE && g_utf8_strlen (ret, -1) > len) { char *p; char *q; int i; int l1, l2; - if (middle) + if (mode == FLATPAK_ELLIPSIZE_MODE_START) + l1 = 0; + else if (mode == FLATPAK_ELLIPSIZE_MODE_MIDDLE) l1 = len / 2; else l1 = len - 1; diff --git a/app/flatpak-builtins-utils.h b/app/flatpak-builtins-utils.h index 0789affa..9e3035e7 100644 --- a/app/flatpak-builtins-utils.h +++ b/app/flatpak-builtins-utils.h @@ -129,8 +129,17 @@ Column *handle_column_args (Column *all_columns, GError **error); char * format_timestamp (guint64 timestamp); + + +typedef enum { + FLATPAK_ELLIPSIZE_MODE_NONE, + FLATPAK_ELLIPSIZE_MODE_START, + FLATPAK_ELLIPSIZE_MODE_MIDDLE, + FLATPAK_ELLIPSIZE_MODE_END, +} FlatpakEllipsizeMode; + char * ellipsize_string (const char *text, int len); -char * ellipsize_string_pos (const char *text, int len, gboolean middle); +char * ellipsize_string_full (const char *text, int len, FlatpakEllipsizeMode mode); AsApp *as_store_find_app (AsStore *store, const char *ref); diff --git a/app/flatpak-table-printer.c b/app/flatpak-table-printer.c index 6a5a8dbd..b620bcb4 100644 --- a/app/flatpak-table-printer.c +++ b/app/flatpak-table-printer.c @@ -67,8 +67,7 @@ typedef struct { char *title; gboolean expand; - gboolean ellipsize; - gboolean ellipsize_middle; + FlatpakEllipsizeMode ellipsize; } TableColumn; static void @@ -564,7 +563,7 @@ flatpak_table_printer_print_full (FlatpakTablePrinter *printer, if (shrinks[j] > 0 && ellipsize) { len -= shrinks[j]; - freeme = text = ellipsize_string_pos (text, len, col->ellipsize_middle); + freeme = text = ellipsize_string_full (text, len, col->ellipsize); } if (flatpak_fancy_output ()) @@ -660,22 +659,9 @@ flatpak_table_printer_set_column_expand (FlatpakTablePrinter *printer, void flatpak_table_printer_set_column_ellipsize (FlatpakTablePrinter *printer, int column, - gboolean ellipsize) + FlatpakEllipsizeMode mode) { TableColumn *col = get_table_column (printer, column); - col->ellipsize = ellipsize; - col->ellipsize_middle = FALSE; -} - -void -flatpak_table_printer_set_column_ellipsize_middle (FlatpakTablePrinter *printer, - int column, - gboolean ellipsize, - gboolean middle) -{ - TableColumn *col = get_table_column (printer, column); - - col->ellipsize = ellipsize; - col->ellipsize_middle = middle; + col->ellipsize = mode; } diff --git a/app/flatpak-table-printer.h b/app/flatpak-table-printer.h index bb7637b8..f15099e5 100644 --- a/app/flatpak-table-printer.h +++ b/app/flatpak-table-printer.h @@ -74,10 +74,6 @@ void flatpak_table_printer_set_column_expand (FlatpakTablePrinter gboolean expand); void flatpak_table_printer_set_column_ellipsize (FlatpakTablePrinter *printer, int col, - gboolean ellipsize); -void flatpak_table_printer_set_column_ellipsize_middle (FlatpakTablePrinter *printer, - int col, - gboolean ellipsize, - gboolean middle); + FlatpakEllipsizeMode mode); #endif /* __FLATPAK_TABLE_PRINTER_H__ */