Clemens Fruhwirth clemens@endorphin.org wrote:
Clemens Fruhwirth clemens@endorphin.org wrote:
The attached test case does produce strange results for accepting-values calls.
After a fair amount of source reading: Not a bug.
I changed my feelings regarding this issue. As even McCLIM makes incorrect use of its own facilities, I decided that it's better that accepting-values gives at least an annoying warning if it detects an incorrect usage pattern. This is easy to do, see the serial-checking patch below.
Regarding McCLIM's own incorrect use of accepting-values, see commands-accepting-values-fix.diff. The partial command parser must generate :query-identifier for all accept statements, because it does not generate unique prompts. This is bug becomes visible when using
(define-foobar-command (com-foobar :menu t :name t) ((x 'integer) (y 'integer)) ())
When the command is invoked via menu or via a partial command, the two integer arguments cause two identical prompts, namely "Enter an integer". The problem with this is that accepting-values uses :prompt when :query-identifier is missing, and as the command parser hasn't supplied unique prompts, the query-identifiers are non-unique too.
Non-unique query-identifiers in accepting-values cause strange screen corruption. I really don't like that and when this happens to a new user - as it happend to me - the user has little clue where to start searching for a remedy and might even be tempted not to search at all because this looks like a toolkit bug.
So, we better spend some time on checking usage patterns.