| 
    KiCad PCB EDA Suite
    
   | 
 
#include <tool_dispatcher.h>
 Classes | |
| struct | BUTTON_STATE | 
| Store information about a mouse button state.  More... | |
Public Member Functions | |
| TOOL_DISPATCHER (TOOL_MANAGER *aToolMgr) | |
| virtual | ~TOOL_DISPATCHER () | 
| virtual void | ResetState () | 
| Bring the dispatcher to its initial state.   | |
| virtual void | DispatchWxEvent (wxEvent &aEvent) | 
| Process wxEvents (mostly UI events), translate them to TOOL_EVENTs, and make tools handle those.   | |
| std::optional< TOOL_EVENT > | GetToolEvent (wxKeyEvent *aKeyEvent, bool *aSpecialKeyFlag) | 
| Map a wxWidgets key event to a TOOL_EVENT.   | |
Private Member Functions | |
| bool | handleMouseButton (wxEvent &aEvent, int aIndex, bool aMotion) | 
| Handles mouse related events (click, motion, dragging).   | |
| KIGFX::VIEW * | getView () | 
| Returns the instance of VIEW, used by the application.   | |
Static Private Member Functions | |
| static int | decodeModifiers (const wxKeyboardState *aState) | 
| Returns the state of key modifiers (Alt, Ctrl and so on) as OR'ed list of bits (MD_CTRL, MD_ALT ...)   | |
Private Attributes | |
| int | m_sysDragMinX | 
| Minimum distance before drag is activated in the X axis.   | |
| int | m_sysDragMinY | 
| Maximum distance before drag is activated in the Y axis.   | |
| VECTOR2D | m_lastMousePos | 
| The last mouse cursor position (in world coordinates).   | |
| VECTOR2D | m_lastMousePosScreen | 
| The last mouse cursor position (in screen coordinates).   | |
| std::vector< BUTTON_STATE * > | m_buttons | 
| TOOL_MANAGER * | m_toolMgr | 
| Instance of tool manager that cooperates with the dispatcher.   | |
Static Private Attributes | |
| static const int | DragTimeThreshold = 300 | 
| The time threshold for a mouse button press that distinguishes between a single mouse click and a beginning of drag event (expressed in milliseconds).   | |
| static const int | DragDistanceThreshold = 8 | 
| The distance threshold for mouse cursor that distinguishes between a single mouse click and a beginning of drag event (expressed in screen pixels).   | |
Definition at line 52 of file tool_dispatcher.h.
| TOOL_DISPATCHER::TOOL_DISPATCHER | ( | TOOL_MANAGER * | aToolMgr | ) | 
| aToolMgr | tool manager instance the events will be sent to. | 
Definition at line 131 of file tool_dispatcher.cpp.
References BUT_AUX1, BUT_AUX2, BUT_LEFT, BUT_MIDDLE, BUT_RIGHT, DragDistanceThreshold, m_buttons, m_sysDragMinX, m_sysDragMinY, m_toolMgr, and ResetState().
      
  | 
  virtual | 
Definition at line 155 of file tool_dispatcher.cpp.
References m_buttons.
      
  | 
  staticprivate | 
Returns the state of key modifiers (Alt, Ctrl and so on) as OR'ed list of bits (MD_CTRL, MD_ALT ...)
Definition at line 161 of file tool_dispatcher.cpp.
References MD_ALT, MD_ALTGR, MD_CTRL, MD_META, MD_SHIFT, and MD_SUPER.
Referenced by DispatchWxEvent(), GetToolEvent(), and handleMouseButton().
      
  | 
  virtual | 
Process wxEvents (mostly UI events), translate them to TOOL_EVENTs, and make tools handle those.
| aEvent | is the wxWidgets event to be processed. | 
Definition at line 477 of file tool_dispatcher.cpp.
References decodeModifiers(), dump(), KIGFX::WX_VIEW_CONTROLS::EVT_REFRESH_MOUSE, KIPLATFORM::APP::ForceTimerMessagesToBeCreatedIfNecessary(), GetToolEvent(), handleMouseButton(), KIUI::IsInputControlEditable(), KIUI::IsInputControlFocused(), isMouseClick(), KIPLATFORM::UI::IsWindowActive(), kicadTraceKeyEvent, kicadTraceToolStack, m_buttons, m_lastMousePos, m_lastMousePosScreen, m_toolMgr, MD_MODIFIER_MASK, ACTION_MENU::OnMenuEvent(), TA_MOUSE_MOTION, TA_MOUSE_WHEEL, and TC_MOUSE.
Referenced by CVPCB_MAINFRAME::CVPCB_MAINFRAME(), FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME(), KICAD_MANAGER_FRAME::setupTools(), SIMULATOR_FRAME::setupTools(), SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME(), CVPCB_MAINFRAME::~CVPCB_MAINFRAME(), and KICAD_MANAGER_FRAME::~KICAD_MANAGER_FRAME().
| std::optional< TOOL_EVENT > TOOL_DISPATCHER::GetToolEvent | ( | wxKeyEvent * | aKeyEvent, | 
| bool * | aSpecialKeyFlag ) | 
Map a wxWidgets key event to a TOOL_EVENT.
Definition at line 397 of file tool_dispatcher.cpp.
References decodeModifiers(), dump(), ignore_unused(), isKeyModifierOnly(), isKeySpecialCode(), kicadTraceKeyEvent, MD_ALT, MD_CTRL, TA_CANCEL_TOOL, TA_KEY_PRESSED, TC_COMMAND, TC_KEYBOARD, and translateSpecialCode().
Referenced by DispatchWxEvent().
      
  | 
  private | 
Returns the instance of VIEW, used by the application.
Definition at line 206 of file tool_dispatcher.cpp.
References m_toolMgr.
      
  | 
  private | 
Handles mouse related events (click, motion, dragging).
Definition at line 212 of file tool_dispatcher.cpp.
References TOOL_DISPATCHER::BUTTON_STATE::button, TOOL_DISPATCHER::BUTTON_STATE::dblClickEvent, decodeModifiers(), down, TOOL_DISPATCHER::BUTTON_STATE::downEvent, TOOL_DISPATCHER::BUTTON_STATE::downPosition, TOOL_DISPATCHER::BUTTON_STATE::downTimestamp, TOOL_DISPATCHER::BUTTON_STATE::dragging, TOOL_DISPATCHER::BUTTON_STATE::dragOrigin, TOOL_DISPATCHER::BUTTON_STATE::dragOriginScreen, DragTimeThreshold, TOOL_DISPATCHER::BUTTON_STATE::GetState(), m_buttons, m_lastMousePos, m_lastMousePosScreen, m_sysDragMinX, m_sysDragMinY, m_toolMgr, TOOL_DISPATCHER::BUTTON_STATE::pressed, TA_MOUSE_CLICK, TA_MOUSE_DBLCLICK, TA_MOUSE_DOWN, TA_MOUSE_DRAG, TA_MOUSE_UP, TC_MOUSE, up, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by DispatchWxEvent().
      
  | 
  virtual | 
Bring the dispatcher to its initial state.
Definition at line 199 of file tool_dispatcher.cpp.
References m_buttons.
Referenced by TOOL_DISPATCHER().
      
  | 
  staticprivate | 
The distance threshold for mouse cursor that distinguishes between a single mouse click and a beginning of drag event (expressed in screen pixels).
System drag preferences take precedence if available
Definition at line 99 of file tool_dispatcher.h.
Referenced by TOOL_DISPATCHER().
      
  | 
  staticprivate | 
The time threshold for a mouse button press that distinguishes between a single mouse click and a beginning of drag event (expressed in milliseconds).
Definition at line 94 of file tool_dispatcher.h.
Referenced by handleMouseButton().
      
  | 
  private | 
Definition at line 109 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), handleMouseButton(), ResetState(), TOOL_DISPATCHER(), and ~TOOL_DISPATCHER().
      
  | 
  private | 
The last mouse cursor position (in world coordinates).
Definition at line 104 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), and handleMouseButton().
      
  | 
  private | 
The last mouse cursor position (in screen coordinates).
Definition at line 105 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), and handleMouseButton().
      
  | 
  private | 
Minimum distance before drag is activated in the X axis.
Definition at line 101 of file tool_dispatcher.h.
Referenced by handleMouseButton(), and TOOL_DISPATCHER().
      
  | 
  private | 
Maximum distance before drag is activated in the Y axis.
Definition at line 102 of file tool_dispatcher.h.
Referenced by handleMouseButton(), and TOOL_DISPATCHER().
      
  | 
  private | 
Instance of tool manager that cooperates with the dispatcher.
Definition at line 112 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), getView(), handleMouseButton(), and TOOL_DISPATCHER().