b53f0365865b5449ef209ea86c5220dd07dc8b28
braney
  Fri Aug 7 12:07:45 2026 -0700
quickLift: don't report items that failed to lift as filtered out, refs #38033

Items that could not be mapped through the chain were counted by the same
variable the track filters use, so a lifted view claimed a number of items had
been filtered out when no filter had removed anything.  Count the two cases
apart: failing a filter is a filter rejection, while passing the filters and
then getting nothing back from the lift is a lift failure, and say so in the
label.

diff --git src/hg/lib/trackDbCustom.c src/hg/lib/trackDbCustom.c
index a365a217bc9..605aeba2fd1 100644
--- src/hg/lib/trackDbCustom.c
+++ src/hg/lib/trackDbCustom.c
@@ -1643,25 +1643,33 @@
     sameString(setting, "frames") ||
     sameString(setting, "setColorWith") ||
     sameString(setting, "summary") ||
     sameString(setting, "searchTrix") ||
     (startsWith("decorator.", setting) && endsWith(setting, ".url"));
 }
 
 char *labelAsFilteredNumber(char *label, unsigned numOut)
 /* add text to label to indicate filter is active */
 {
 char buffer[2048];
 safef(buffer, sizeof buffer, " (%d items filtered out)", numOut);
 return catTwoStrings(label, buffer);
 }
 
+char *labelAsNotLiftedNumber(char *label, unsigned numOut)
+/* add text to label to indicate items were dropped by the lift, not by a filter */
+{
+char buffer[2048];
+safef(buffer, sizeof buffer, " (%d items could not be lifted)", numOut);
+return catTwoStrings(label, buffer);
+}
+
 char *labelAsFiltered(char *label)
 /* add text to label to indicate filter is active */
 {
 #define FILTER_ACTIVATED " (filter activated)"
 if (stringIn(FILTER_ACTIVATED, label))
     return label;
 return (catTwoStrings(label, FILTER_ACTIVATED));
 }