-
Notifications
You must be signed in to change notification settings - Fork 5
[SDL2]: Possibility to reveal mouse pointer outside an SDL window? #159
Comments
Can you share the link to sources, please? It seems like app is hiding the mouse pointer but not grabbing the input. I think it should be technically possible to do what you describe, by tracking the mouse coordinates and comparing against the window box. However there is one big problem potentially: if application uses different "mouse sensitivity" parameters, then system pointer and application pointer are never in sync and it probably ends in strange result (2 mouse pointers with different speeds). |
Sure, it's ScummVM. I remember having a vice-versa issue when switching to SDL2 in ScummVM. A remaining red or black dot was still visibly drawn OVER the ScummVM pointer. But the pointer itself was invisible outside the SDL window from day one, iirc. I can provide a minimal test build, if necessary, will take some time, though |
If I remember correctly, clearing the mouse pointer was done wrongly and that caused extra dot. Ok, no need to make test build, I should be able to build ScummVM locally if needed. |
Thank you very much for taking a look. |
Maybe you could try comment out the next line for the science: https://github.com/scummvm/scummvm/blob/bb388295a465ef2443a419bc399ae52e71c39df5/backends/platform/sdl/sdl.cpp#L167 (or change it to SDL_ENABLE) The idea is to observe system pointer behaviour related to ScummVM's one. Of course, there is mouse code all over ScummVM so that line may not be sufficient. |
There are four instances of SDL_ShowCursor(SDL_ENABLE) in the code. That is as far as my limited knowledge will take me. |
@raziel- IIRC I changed locally this file also https://github.com/scummvm/scummvm/blob/d968d22eb124a9f422d5c5ebd401135cdd41033f/backends/graphics/sdl/sdl-graphics.cpp And then I could see 2 cursors at the same time, and they were actually in sync within the window area. |
Thanks for the tests. That is not the intended behaviour i was looking for though. I guess ScummVM is not capable of doing that, but is SDL? |
@raziel- it was merely a debugging test, not a solution. I don't know yet how to deal with this request, it's kind of multidimensional :) There is SDL 1 and 2. Then there is possibility to capture (grab) pointer inside the window (so cannot move pointer out of window). And probably loads of more things that I cannot even think right now. |
Don't feel pushed. |
I'm not sure if it will help the effort in any way, but you could probably drop the SDL1 part from this request? |
@raziel- done, sorry, I haven't been investigating this much. |
No problem. |
So, i have an SDL app running in window mode.
It has it´s own mouse pointer which moves around just fine inside the window borders.
Though, once you happen to move the pointer outside the window borders the SDL apps pointer is stuck at where you left the window.
While i understand that the SDL apps pointer won´t move along the window borders according to where the (now hidden) pointer is outside the window, it would still be nice to see where it is.
Right now, moving the pointer out of the window makes it vanish completely (on the rest of the Workbench screen that is).
The pointer itself is still tracked by the system though, because if i move it anywhere on the WB and click, it will pop up at the correct spot.
The problem is to find the "correct" spot to click, because the pointer could be anywhere, e.g. over a docky icon and clicking now to reveal the pointer also clicks on the docky icon and starts the program bound to it (which is not wanted in that case).
My question is:
Would it be possible to reveal the pointer on WB, once it leaves the borders of an SDL window?
It wouldn´t have to be the original WB pointer, i´d be happy with anything i could track with my eyes, like a bright red dot or something.
Thank you
AmigaOS4
SDL 2.0.12
SDL 1.0.15
The text was updated successfully, but these errors were encountered: