Review Request 119663: libkscreensaver: blank mouse cursor in startup code

Thomas Lübking thomas.luebking at gmail.com
Mon Aug 11 11:19:28 BST 2014



> On Aug. 8, 2014, 3:35 nachm., Thomas Lübking wrote:
> > Would it be sufficient to set the cursor on "target" instead of an application wide override?
> > 
> > setOverrideCursor has this "nasty" stack behavior which could be troublesome in a library and I could eg. think of "screensavers" implementing a little game (ie. run kpatience or so ;-)
> > In case they should have nice control over the cursor w/o having to rewind a stack (or using an override on top ...)
> 
> Wolfgang Bauer wrote:
>     > Would it be sufficient to set the cursor on "target" instead of an application wide override?
>     
>     No, unfortunately not.
>     That was the first thing I tried, but it had no effect at all (no matter whether it is done before target->show() or after).
>     
>     The only other way I see is explicitely set a blank mouse cursor in all of the affected screen savers (I tried this with Euphoria and it worked), but that would be much more work of course.
>     
>     > setOverrideCursor has this "nasty" stack behavior which could be troublesome in a library and I could eg. think of "screensavers" implementing a little game (ie. run kpatience or so ;-)
>     
>     Does this actually make sense?
>     When used as screensaver, it would immediately disappear anyway when you move the mouse, no?
>     
>     A side-note: xscreensaver's "julia" screensaver does something like this: it allows you to choose a new starting point for its animation by clicking with the mouse. But when used as screensaver, the xscreensaver daemon forces a blank cursor somehow (I haven't looked at the source code how exactly, but I would guess via XGrabPointer()), so even this one does not show a cursor then. When used with KDE's screen locker, the cursor does show (that's of course not changed by this patch, as that screensaver obviously doesn't use libkscreensaver), still you can do that only in demo mode/in the systemsettings preview because otherwise the screensaver disappears on every input event.

> Does this actually make sense?
Dunno, don't use screensavers ;-)

> When used as screensaver, it would immediately disappear anyway when you move the mouse, no?
For the moment, yes.
Since the screensaver will not be the grabbing client (other process) it would require a hint to the locker to not exit the screensaver on mousemove but forward input instead.

> No, unfortunately not.
There'll be a "QGuiApplication::overrideCursor()" then.
See how nasty that is? ;-)

while (qApp->overrideCursor())
    qApp->restoreOverrideCursor();


- Thomas


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/119663/#review64072
-----------------------------------------------------------


On Aug. 8, 2014, 12:37 nachm., Wolfgang Bauer wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/119663/
> -----------------------------------------------------------
> 
> (Updated Aug. 8, 2014, 12:37 nachm.)
> 
> 
> Review request for kde-workspace.
> 
> 
> Bugs: 334762
>     http://bugs.kde.org/show_bug.cgi?id=334762
> 
> 
> Repository: kde-workspace
> 
> 
> Description
> -------
> 
> Qt's QGLWidget apparently explicitely sets a standard mouse pointer for the screensaver widget.
> This patch prevents the mouse cursor from being shown for KDE's OpenGL screensavers by setting a blank override cursor for the screensaver application when not run in demo mode.
> 
> 
> Diffs
> -----
> 
>   kscreensaver/libkscreensaver/main.cpp 561205a 
> 
> Diff: https://git.reviewboard.kde.org/r/119663/diff/
> 
> 
> Testing
> -------
> 
> Set one of KDE's OpenGL screensavers in systemsettings->Display and Monitor->Screen Locker, like Euphoria or Solarwinds.
> Wait for the screensaver to kick in.
> Notice that the mouse pointer is blanked now, whereas it was shown without this patch.
> 
> If a password is required, the mouse cursor does correctly re-appear for the greeter as it should if you move the mouse/press a key to get rid of the screensaver.
> 
> I'm using the patch on my systems for over two months now and haven't noticed any unexpected results.
> 
> 
> Thanks,
> 
> Wolfgang Bauer
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20140811/79ce1589/attachment.htm>


More information about the kde-core-devel mailing list