Pointer Handling

Pointer events can be associated with any RWindowBase derived class. At the simplest, pointer down, drag and up events are generated, associated with the window in which the event occurred.

Variant : ScreenPlay and non-ScreenPlay . Target audience : Application developers.

The Window Server allows applications to control pointer handling much more finely than this.

  • Multiple drag events which the Window Server receives from the pointer device driver are usually translated into a single drag event for the client application, incorporating all movement occurring between one pointer-related RWsSession::GetEvent() and the next RWsSession::EventReady() . This behavior is appropriate for a typical application, and ensures that pointer events are delivered at a rate that the application can handle.

  • If required, an application may request the Window Server to store all pointer events in a pointer buffer, and then deliver that entire buffer when it is full. This is useful for freehand drawing and handwriting recognition.

  • Double-click may be detected by the Window Server. The interval between double clicks is supported as a system-wide setting.

  • Repeated pointer-down events may be generated when the pointer is held still in a particular place—similar to keyboard auto-repeat.

  • Areas of a window may be designated as key areas, so that a pointer event in that window is turned into a key event, and delivered to the window’s owning client application as a key event. This is intended to support on-screen pseudo-keyboards.

  • The pointer may be grabbed by a particular window so that events generated outside that window's extent are associated with that window.

  • A window can capture pointer clicks from outside its visible area. In order to do this, it has to call the function RWindowBase::SetPointerCapture() . Various values can be passed as a parameter to this function allowing, for example, no capturing to take place, capturing of all events from within the window's window group, and capturing of all events from within all groups. If several windows request events to be captured, the Window Server does some arbitration.