Skip to content
  • Dmitry Kazakov's avatar
    Add workaround for handling table press correctly in WinInk mode · d684bc55
    Dmitry Kazakov authored
    Original problem: widgets do not get synthesized mouse-down and
    mouse-press events until the stylus is released
    
    Reason: if the app accepts the event, WndProc should report
    that to the system (by returning true). This is the only way to
    prevent Windows from starting some system-wide gestures, like
    click+hold -> right button click. If we ignore the event, then
    OS postpones all synthesized mouse events until the entire gesture
    is completed.
    
    The patch implements a "hackish" workaround for the original problem
    by using the following rules:
    
    1) All tablet-move events are ignored (without synthesized mouse events
       OS doesn't generate any Enter/Leave events)
    
    2) All not-accepted tablet press- and release-events and also reported as
       ignored (without it D&D doesn't work).
    
    3) All accepted tablet press- and release-events are reported as "accepted",
       **but** we artificially synthesize mouse events for them.
    
    TODO: there are still two problems:
    
    1) Perhaps this synthesizeMouseEvent() is not needed at all. But we should
       first check if Qt relies on these synthesized messages anywhere in the
       code or not.
    
    2) If we still keep synthesizeMouseEvent(), then it should fetch actual
       tablet buttons from QGuiApplicationPrivate::tabletDevicePoint(). Right
       now it always synthesizes left-click, whatever the button was pressed/
       released.
    
    CCBUG:406668
    d684bc55