Skip to content
Try edited this page Nov 21, 2019 · 1 revision

Events

virtual void mouseDownEvent   (Tempest::MouseEvent& event);

Called, when a mouse clicks on this widget or finger touches it. Traverse mode: leafs-to-root.

virtual void mouseUpEvent     (Tempest::MouseEvent& event);

Symmetrical to mouseDownEvent, will be called on same widget which receives mouseDownEvent previously. Traverse mode: direct.

virtual void mouseMoveEvent   (Tempest::MouseEvent& event);

Called, when a mouse moves over the widget, if mouseDragEvent is not processed. Traverse mode: leafs-to-root.

virtual void mouseDragEvent   (Tempest::MouseEvent& event);

Called, when a mouse moves over the widget, if mouseDownEvent was received by this widget previously. Traverse mode: direct.

virtual void mouseWheelEvent  (Tempest::MouseEvent& event);

Called, when a mouse wheel state changed. The receiver-widget going to be determinate using same traverse mode as mouseDownEvent. Traverse mode: leafs-to-root.

virtual void keyDownEvent     (Tempest::MouseEvent& event);

Called, when a key pressed on keyboard. Key-repeat event, from OS, will be ignored. Traverse mode: focus.

virtual void keyUpEvent       (Tempest::MouseEvent& event);

Symmetrical to keyDownEvent, will be called on same widget which receives keyDownEvent with same scan-code previously. Traverse mode: direct.

virtual void paintEvent       (Tempest::MouseEvent& event);

Called, when widget has to be redrawn. Traverse mode: root-to-leafs.

virtual void resizeEvent      (Tempest::MouseEvent& event);

Called, when widget size has changed. Traverse mode: direct.

virtual void focusEvent       (Tempest::MouseEvent& event);

Called, when widget focus has changed. Traverse mode: direct.

Traverse modes

  • direct: target widget is known upfront.
  • focus: target widget is widget with keyboard focus
  • leafs-to-root: child widget is checked first; parent after
  • root-to-leafs: parent widget is checked first; child's after

Examples

class Example:public Widget {
  void mouseDownEvent(MouseEvent& event) override {
    Log::i("mouse pressed at: x = ",event.x,", y = ",event.y);
    }
  };
class Example:public Widget {
  void mouseUpEvent(MouseEvent& event) override {
    // error: mouseUpEvent will never be called because mouseDownEvent is not handled
    Log::i("mouse clicked at: x = ",event.x,", y = ",event.y);
    }
  };
class Example:public Widget {
  void mouseDownEvent(MouseEvent& event) override {
    event.accept();
    }
  void mouseDragEvent(MouseEvent& event) override {
    // will be called only while mouse button is holded
    Log::i("mouse at: x = ",event.x,", y = ",event.y);
    }
  };

Clone this wiki locally