From 9d4b1d3f91ba94513ad99ba01ee33d5279fb9799 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 9 Jun 2021 23:14:37 +0100 Subject: [PATCH] Support queries with no whitespace like $draw(EID>100) --- qrenderdoc/Windows/EventBrowser.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/qrenderdoc/Windows/EventBrowser.cpp b/qrenderdoc/Windows/EventBrowser.cpp index 6ba00a786..b97ab1847 100644 --- a/qrenderdoc/Windows/EventBrowser.cpp +++ b/qrenderdoc/Windows/EventBrowser.cpp @@ -1501,6 +1501,8 @@ private: { QList ret; + const QString operatorChars = lit("<>=:&"); + int p = 0; while(p < parameters.size()) { @@ -1512,7 +1514,11 @@ private: Token t; t.position = p; - while(p < parameters.size() && !parameters[p].isSpace()) + + bool tokenIsOperator = operatorChars.contains(parameters[p]); + + while(p < parameters.size() && !parameters[p].isSpace() && + operatorChars.contains(parameters[p]) == tokenIsOperator) p++; t.length = p - t.position; t.text = parameters.mid(t.position, t.length); @@ -1762,7 +1768,9 @@ Available numeric properties. Compare with $event(prop > 100) or $event(prop <= rdcarray filterCompleter_event(ICaptureContext *ctx, const rdcstr &name, const rdcstr ¶ms) { - if(params.find_first_of(" \t") == -1) + QList tokens = tokenise(params); + + if(tokens.size() <= 1) return {"EID"}; return {}; @@ -1881,7 +1889,9 @@ can be queried with a filter such as $draw(flags & Clear|ClearDepthStencil) rdcarray filterCompleter_draw(ICaptureContext *ctx, const rdcstr &name, const rdcstr ¶ms) { - if(params.find_first_of(" \t") == -1) + QList tokens = tokenise(params); + + if(tokens.size() <= 1) return { "EID", "parent", "drawId", "numIndices", // most aliases we don't autocomplete but this one we leave @@ -1890,8 +1900,6 @@ can be queried with a filter such as $draw(flags & Clear|ClearDepthStencil) "flags", }; - QList tokens = tokenise(params); - if(tokens[0].text == lit("flags") && tokens.size() >= 2) { CacheDrawFlagsLookup(); @@ -2230,7 +2238,9 @@ Available numeric properties. Compare with $dispatch(prop > 100) or $dispatch(pr rdcarray filterCompleter_dispatch(ICaptureContext *ctx, const rdcstr &name, const rdcstr ¶ms) { - if(params.find_first_of(" \t") == -1) + QList tokens = tokenise(params); + + if(tokens.size() <= 1) return { "EID", "parent", "drawcallId", "drawId", "x", "y", "z", "size", "duration", };