
Hi; Sorry if this is either a dumb question or Pilot Error, but I am having trouble showing the user a "busy" cursor when a long-running command is invoked. - Current "master" codeberg McCLIM - Fedora Core 41 - xorg-x11-server-Xwayland-24.1.8-1.fc41.x86_64 - SBCL vintage 2.1.1 (homebuilt) I *THINK* I used to be able to do this years ago running under X11 (vs Wayland). Please find attached a hopefully short program which either shows the problem, or shows my ignorance. Thanks in advance for any help. -jm --- John Morrison <jm@symbolic-simulation.com> Chief Technology Officer Symbolic Simulation, LLC <https://www.symbolic-simulation.com> m: (617) 388-3071 <+1-617-388-3071> <https://www.symbolic-simulation.com> *CONFIDENTIALITY NOTICE: The information transmitted by this email is intended only for the person or entity to which it is addressed. This email may contain proprietary, business-confidential, and/or privileged material. If you are not the intended recipient of this message, be aware that any use, review, retransmission, distribution, reproduction or any action taken in reliance upon this message is strictly prohibited. If you received this in error, please contact the sender and delete the material from all computers.*

Hi John, I do see that macro in Genera CLIM spec v2.0 for `clim:pointer-cursor`. Whether this is a regression or not is before my time working with McCLIM, but it does seem like it should be... I was able to replicate that it isn't working for me either. After looking a little in the internals, it looks like McCLIM won't change the cursor of a sheet that has a direct mirror. It looks like that prerequisite was introduced 8 years ago in commit d95dfd91517106cc6a84774434c69c1386453abc. I experimented a little in the clim-listener application and this snippet did work (as proof of concept): ``` CLIM-USER> (setf (sheet-pointer-cursor (pointer-sheet (port-pointer (port *application-frame*)))) :busy) ``` I'll see if anyone knows the history on IRC and whether it should have a fix. Thanks, Charlie On Thu, Oct 9, 2025 at 1:48 PM John Morrison <jm@symbolic-simulation.com> wrote:
Hi;
Sorry if this is either a dumb question or Pilot Error, but I am having trouble showing the user a "busy" cursor when a long-running command is invoked.
- Current "master" codeberg McCLIM - Fedora Core 41 - xorg-x11-server-Xwayland-24.1.8-1.fc41.x86_64 - SBCL vintage 2.1.1 (homebuilt)
I *THINK* I used to be able to do this years ago running under X11 (vs Wayland).
Please find attached a hopefully short program which either shows the problem, or shows my ignorance.
Thanks in advance for any help.
-jm
--- John Morrison <jm@symbolic-simulation.com> Chief Technology Officer Symbolic Simulation, LLC <https://www.symbolic-simulation.com> m: (617) 388-3071 <+1-617-388-3071> <https://www.symbolic-simulation.com> *CONFIDENTIALITY NOTICE: The information transmitted by this email is intended only for the person or entity to which it is addressed. This email may contain proprietary, business-confidential, and/or privileged material. If you are not the intended recipient of this message, be aware that any use, review, retransmission, distribution, reproduction or any action taken in reliance upon this message is strictly prohibited. If you received this in error, please contact the sender and delete the material from all computers.*

Hey, Thanks! It's a small thing, but failing to show any indication whatsoever that the computer was thinking - in my own program - made me, er, torqued. -jm On Fri, Oct 10, 2025 at 11:05 AM Charlie McMackin <charliemac@gmail.com> wrote:
Hi John,
I do see that macro in Genera CLIM spec v2.0 for `clim:pointer-cursor`. Whether this is a regression or not is before my time working with McCLIM, but it does seem like it should be... I was able to replicate that it isn't working for me either.
After looking a little in the internals, it looks like McCLIM won't change the cursor of a sheet that has a direct mirror. It looks like that prerequisite was introduced 8 years ago in commit d95dfd91517106cc6a84774434c69c1386453abc. I experimented a little in the clim-listener application and this snippet did work (as proof of concept): ``` CLIM-USER> (setf (sheet-pointer-cursor (pointer-sheet (port-pointer (port *application-frame*)))) :busy) ``` I'll see if anyone knows the history on IRC and whether it should have a fix.
Thanks, Charlie
On Thu, Oct 9, 2025 at 1:48 PM John Morrison <jm@symbolic-simulation.com> wrote:
Hi;
Sorry if this is either a dumb question or Pilot Error, but I am having trouble showing the user a "busy" cursor when a long-running command is invoked.
- Current "master" codeberg McCLIM - Fedora Core 41 - xorg-x11-server-Xwayland-24.1.8-1.fc41.x86_64 - SBCL vintage 2.1.1 (homebuilt)
I *THINK* I used to be able to do this years ago running under X11 (vs Wayland).
Please find attached a hopefully short program which either shows the problem, or shows my ignorance.
Thanks in advance for any help.
-jm
--- John Morrison <jm@symbolic-simulation.com> Chief Technology Officer Symbolic Simulation, LLC <https://www.symbolic-simulation.com> m: (617) 388-3071 <+1-617-388-3071> <https://www.symbolic-simulation.com> *CONFIDENTIALITY NOTICE: The information transmitted by this email is intended only for the person or entity to which it is addressed. This email may contain proprietary, business-confidential, and/or privileged material. If you are not the intended recipient of this message, be aware that any use, review, retransmission, distribution, reproduction or any action taken in reliance upon this message is strictly prohibited. If you received this in error, please contact the sender and delete the material from all computers.*

In the olden days, we’d indicate that in the status line. But that’s consider unappealing these days. Mike McDonald mikemac@mikemac.com
On Oct 10, 2025, at 7:36 PM, John Morrison <jm@symbolic-simulation.com> wrote:
Hey, Thanks! It's a small thing, but failing to show any indication whatsoever that the computer was thinking - in my own program - made me, er, torqued.
-jm
On Fri, Oct 10, 2025 at 11:05 AM Charlie McMackin <charliemac@gmail.com <mailto:charliemac@gmail.com>> wrote:
Hi John,
I do see that macro in Genera CLIM spec v2.0 for `clim:pointer-cursor`. Whether this is a regression or not is before my time working with McCLIM, but it does seem like it should be... I was able to replicate that it isn't working for me either.
After looking a little in the internals, it looks like McCLIM won't change the cursor of a sheet that has a direct mirror. It looks like that prerequisite was introduced 8 years ago in commit d95dfd91517106cc6a84774434c69c1386453abc. I experimented a little in the clim-listener application and this snippet did work (as proof of concept): ``` CLIM-USER> (setf (sheet-pointer-cursor (pointer-sheet (port-pointer (port *application-frame*)))) :busy) ``` I'll see if anyone knows the history on IRC and whether it should have a fix.
Thanks, Charlie
On Thu, Oct 9, 2025 at 1:48 PM John Morrison <jm@symbolic-simulation.com <mailto:jm@symbolic-simulation.com>> wrote:
Hi;
Sorry if this is either a dumb question or Pilot Error, but I am having trouble showing the user a "busy" cursor when a long-running command is invoked. Current "master" codeberg McCLIM Fedora Core 41 xorg-x11-server-Xwayland-24.1.8-1.fc41.x86_64 SBCL vintage 2.1.1 (homebuilt) I *THINK* I used to be able to do this years ago running under X11 (vs Wayland).
Please find attached a hopefully short program which either shows the problem, or shows my ignorance.
Thanks in advance for any help.
-jm
--- John Morrison <mailto:jm@symbolic-simulation.com> Chief Technology Officer Symbolic Simulation, LLC <https://www.symbolic-simulation.com/> m: (617) 388-3071 <tel:+1-617-388-3071> <https://www.symbolic-simulation.com/> CONFIDENTIALITY NOTICE: The information transmitted by this email is intended only for the person or entity to which it is addressed. This email may contain proprietary, business-confidential, and/or privileged material. If you are not the intended recipient of this message, be aware that any use, review, retransmission, distribution, reproduction or any action taken in reliance upon this message is strictly prohibited. If you received this in error, please contact the sender and delete the material from all computers.

It’s also always good to have an abstraction; different types of interface may have different ways of indicating that they’re busy. Of course, there’s also a school of thought that says an application’s human interface shouldn’t ever actually be “busy” in any sort of blocking fashion, but that’s just moving the problem around: No matter how fast a system may be, perform a significant operation on an arbitrary graph of objects can always wind up being slow enough that it blocks the user. But how an application’s human interface represent this may need to vary substantially. (E.g. by dimming out the representation of a graph that’s being processed and therefore can’t be manipulated.) -- Chris

Hello John, you've remembered well, it worked, but the cursor was always queried from the sheet over which the pointer was located (in McCLIM); in other words setting the top-level sheet cursor did not work, because the cursor was over the interactor (and the interactor was the child of a top-level sheet). Most notably, this command would work in your example: (define-presentation-type-abbreviation cursor-type () `(member :default :prompt :button :busy :not-allowed)) (define-test-cursor-command (com-busy3 :name t) ((type 'cursor-type)) (let* ((sheet (frame-standard-output *application-frame*))) (setf (sheet-pointer-cursor sheet) type))) That said I agree that this behavior is sub-optimal, so I've implemented bits necessary to have the most intuitive behavior, namely: - if the sheet has an associated cursor, use it - otherwise look among sheet ancestors until you find the first defined cursor - if there is no such cursor, use the cursor associated with port-pointer cursor This way if you first associate the pointer cursor, it will take effect, but when you assign the top-level sheet cursor, that will take the precedence -- and similarily, when you assign the interactor cursor, it will take the precedence when the cursor is over it. These changes were pushed to master a moment ago. Best regards, Daniel -- Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland TurtleWare - Daniel Kochmański | www.turtleware.eu "Be the change that you wish to see in the world." - Mahatma Gandhi On Thursday, October 9th, 2025 at 9:10 PM, John Morrison <jm@symbolic-simulation.com> wrote:
Hi;
Sorry if this is either a dumb question or Pilot Error, but I am having trouble showing the user a "busy" cursor when a long-running command is invoked.
- Current "master" codeberg McCLIM - Fedora Core 41 - xorg-x11-server-Xwayland-24.1.8-1.fc41.x86_64 - SBCL vintage 2.1.1 (homebuilt)
I *THINK* I used to be able to do this years ago running under X11 (vs Wayland).
Please find attached a hopefully short program which either shows the problem, or shows my ignorance.
Thanks in advance for any help.
-jm
--- [John Morrison](mailto:jm@symbolic-simulation.com) Chief Technology Officer [Symbolic Simulation, LLC](https://www.symbolic-simulation.com) m: [(617) 388-3071](tel:+1-617-388-3071) https://www.symbolic-simulation.com CONFIDENTIALITY NOTICE: The information transmitted by this email is intended only for the person or entity to which it is addressed. This email may contain proprietary, business-confidential, and/or privileged material. If you are not the intended recipient of this message, be aware that any use, review, retransmission, distribution, reproduction or any action taken in reliance upon this message is strictly prohibited. If you received this in error, please contact the sender and delete the material from all computers.

Geez, THAT was fast. Thank you again for not only this piece of work, but driving the entire effort forward. -jm On Fri, Oct 10, 2025 at 4:07 PM Daniel Kochmański <daniel@turtleware.eu> wrote:
Hello John,
you've remembered well, it worked, but the cursor was always queried from the sheet over which the pointer was located (in McCLIM); in other words setting the top-level sheet cursor did not work, because the cursor was over the interactor (and the interactor was the child of a top-level sheet). Most notably, this command would work in your example:
(define-presentation-type-abbreviation cursor-type () `(member :default :prompt :button :busy :not-allowed))
(define-test-cursor-command (com-busy3 :name t) ((type 'cursor-type)) (let* ((sheet (frame-standard-output *application-frame*))) (setf (sheet-pointer-cursor sheet) type)))
That said I agree that this behavior is sub-optimal, so I've implemented bits necessary to have the most intuitive behavior, namely:
- if the sheet has an associated cursor, use it - otherwise look among sheet ancestors until you find the first defined cursor - if there is no such cursor, use the cursor associated with port-pointer cursor
This way if you first associate the pointer cursor, it will take effect, but when you assign the top-level sheet cursor, that will take the precedence -- and similarily, when you assign the interactor cursor, it will take the precedence when the cursor is over it.
These changes were pushed to master a moment ago.
Best regards, Daniel
-- Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland TurtleWare - Daniel Kochmański | www.turtleware.eu
"Be the change that you wish to see in the world." - Mahatma Gandhi
On Thursday, October 9th, 2025 at 9:10 PM, John Morrison < jm@symbolic-simulation.com> wrote:
Hi;
Sorry if this is either a dumb question or Pilot Error, but I am having trouble showing the user a "busy" cursor when a long-running command is invoked.
- Current "master" codeberg McCLIM - Fedora Core 41 - xorg-x11-server-Xwayland-24.1.8-1.fc41.x86_64 - SBCL vintage 2.1.1 (homebuilt)
I *THINK* I used to be able to do this years ago running under X11 (vs Wayland).
Please find attached a hopefully short program which either shows the problem, or shows my ignorance.
Thanks in advance for any help.
-jm
--- John Morrison <jm@symbolic-simulation.com> Chief Technology Officer Symbolic Simulation, LLC <https://www.symbolic-simulation.com> m: (617) 388-3071 <+1-617-388-3071> <https://www.symbolic-simulation.com> *CONFIDENTIALITY NOTICE: The information transmitted by this email is intended only for the person or entity to which it is addressed. This email may contain proprietary, business-confidential, and/or privileged material. If you are not the intended recipient of this message, be aware that any use, review, retransmission, distribution, reproduction or any action taken in reliance upon this message is strictly prohibited. If you received this in error, please contact the sender and delete the material from all computers.*
participants (5)
-
Charlie McMackin
-
Chris Hanson
-
Daniel Kochmański
-
John Morrison
-
Michael McDonald