Review Request 128858: [frameworks] Hide cursor when tablet pen leaves proximity of the screen

Oliver Sander oliver.sander at tu-dresden.de
Thu Sep 7 04:33:42 UTC 2017



> On Sept. 6, 2017, 8:24 p.m., Albert Astals Cid wrote:
> > ui/presentationwidget.cpp, line 1305
> > <https://git.reviewboard.kde.org/r/128858/diff/4/?file=481745#file481745line1305>
> >
> >     Why this change?

Previously, the code there was

      slotChangeDrawingToolEngine( QDomElement() );
      slotChangeDrawingToolEngine( m_currentDrawingToolElement );

And here is the content of slotChangeDrawingToolEngine:

    if ( element.isNull() )
    {
        delete m_drawingEngine;
        m_drawingEngine = 0;
        m_drawingRect = QRect();
        setCursor( Qt::ArrowCursor );
    }
    else
    {
        m_drawingEngine = new SmoothPathEngine( element );
        setCursor( QCursor( QPixmap( QStringLiteral("pencil") ), Qt::ArrowCursor ) );
        m_currentDrawingToolElement = element;
    }

You can see that it sets the cursor shape, but we don't want that: When drawing with the stylus we want the cursor to remain a CrossCursor, not change back to ArrowCursor.  But the cursor change is really only a by-product of the calls to this method.  Therefore I simply inlined the calls to slotChangeDrawingToolEngine, and omitted the cursor change.


- Oliver


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


On Oct. 5, 2016, 4:20 p.m., Oliver Sander wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/128858/
> -----------------------------------------------------------
> 
> (Updated Oct. 5, 2016, 4:20 p.m.)
> 
> 
> Review request for Okular.
> 
> 
> Repository: okular
> 
> 
> Description
> -------
> 
> I am trying to fix the following papercut:  I regularly write on pdf files in presentation mode, using the pen that comes with my Lenovo ThinkPad Yoga.  When I approach the screen with the pen, the cursor appears, and it follows the pen tip during writing.  When I lift off the pen, the cursor stays on, and auto-hides only a few seconds later (because of Okular::Settings::EnumSlidesCursor::HiddenDelay).  As a consequence, the cursor frequently hides the last bits of what I have just written.  This is a nuisance, because I do this in front of an audience, and a lot of it is math (where every detail matters).
> 
> Ideally, the cursor would auto-hide when I lift the pen off the screen.  Luckily, Qt has an event for this: QEvent::TabletLeaveProximity.  Unluckily, the documentation says (http://doc.qt.io/qt-5/qtabletevent.html):
> 
> "TabletEnterProximity and TabletLeaveProximity events [...] are only sent to QApplication"
> 
> Therefore, this patch introduces a new class TabletApplication, which inherits from QApplication, and is used in main.cpp instead of QApplication.  The proximity events are really caught, and each time a short note is printed on the console.
> 
> Unfortunately, at this point I am stuck and need some help.  Apparently, I cannot control the cursor from a QApplication.  How do I get the information that a TabletProximity has been caught to the presentation widget? Maybe the answer is trivial, but I have very little Qt programming experience.  Thanks for your help!
> 
> 
> Diffs
> -----
> 
>   ui/presentationwidget.h 69574d2 
>   ui/presentationwidget.cpp c16d616 
> 
> Diff: https://git.reviewboard.kde.org/r/128858/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Oliver Sander
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/okular-devel/attachments/20170907/b4e1ce7b/attachment-0001.html>


More information about the Okular-devel mailing list