Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-111400

figure out how to get Wacom tablet proximity position; deliver to window

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Unresolved
    • Icon: P3: Somewhat important P3: Somewhat important
    • None
    • 6.5
    • None

      This feature has always been missing. Last time I looked, it seemed that we would need to wait for the tablet move event that comes after the proximity-enter, because the position info (etc) is missing from the proximity-enter event itself. And so, we've never been able to deliver TabletEnterProximity events to the appropriate QWindow: you have to subclass Q(Gui)Application to get the events (as in qtbase/examples/widgets/widgets/tablet/tabletapplication.cpp) or install an event filter (as in qtbase/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp).

      While we're at it, we can add whatever else we can get, and remove as many Q_UNUSED as possible from this:

      bool QWindowSystemInterface::handleTabletEnterLeaveProximityEvent(QWindow *window, ulong timestamp, const QPointingDevice *device,
                                                                        bool inProximity, const QPointF &local, const QPointF &global,
                                                                        Qt::MouseButtons buttons, int xTilt, int yTilt,
                                                                        qreal tangentialPressure, qreal rotation, int z,
                                                                        Qt::KeyboardModifiers modifiers)
      {
          Q_UNUSED(window);
          Q_UNUSED(local);
          Q_UNUSED(global);
          Q_UNUSED(buttons);
          Q_UNUSED(xTilt);
          Q_UNUSED(yTilt);
          Q_UNUSED(tangentialPressure);
          Q_UNUSED(rotation);
          Q_UNUSED(z);
          Q_UNUSED(modifiers);
          return inProximity
              ? handleWindowSystemEvent<QWindowSystemInterfacePrivate::TabletEnterProximityEvent>(timestamp, device)
              : handleWindowSystemEvent<QWindowSystemInterfacePrivate::TabletLeaveProximityEvent>(timestamp, device);
      }
      
          class TabletEnterProximityEvent : public PointerEvent {
          public:
              // TODO store more info: position and whatever else we can get on most platforms
              TabletEnterProximityEvent(ulong time, const QPointingDevice *device)
                  : PointerEvent(nullptr, time, TabletEnterProximity, Qt::NoModifier, device) { }
          };
      
          class TabletLeaveProximityEvent : public PointerEvent {
          public:
              // TODO store more info: position and whatever else we can get on most platforms
              TabletLeaveProximityEvent(ulong time, const QPointingDevice *device)
                  : PointerEvent(nullptr, time, TabletLeaveProximity, Qt::NoModifier, device) { }
          };
      

      If we can deliver the proximity events to the window, it will be much easier to make use of them in Qt Quick.

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            srutledg Shawn Rutledge
            srutledg Shawn Rutledge
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: