| 95 | } |
| 96 | |
| 97 | bool CanvasWidget::sendEvent(InputEvent const& event) { |
| 98 | if (!m_visible) |
| 99 | return false; |
| 100 | |
| 101 | auto& context = GuiContext::singleton(); |
| 102 | int interfaceScale = m_ignoreInterfaceScale ? 1 : context.interfaceScale(); |
| 103 | if (auto mouseButtonDown = event.ptr<MouseButtonDownEvent>()) { |
| 104 | if (inMember(*context.mousePosition(event, interfaceScale)) && m_captureMouse) { |
| 105 | m_clickEvents.append({*context.mousePosition(event, interfaceScale) - screenPosition(), mouseButtonDown->mouseButton, true}); |
| 106 | m_clickEvents.limitSizeBack(MaximumEventBuffer); |
| 107 | return true; |
| 108 | } |
| 109 | } else if (auto mouseButtonUp = event.ptr<MouseButtonUpEvent>()) { |
| 110 | if (m_captureMouse) { |
| 111 | m_clickEvents.append({*context.mousePosition(event, interfaceScale) - screenPosition(), mouseButtonUp->mouseButton, false}); |
| 112 | m_clickEvents.limitSizeBack(MaximumEventBuffer); |
| 113 | return true; |
| 114 | } |
| 115 | } else if (event.is<MouseMoveEvent>()) { |
| 116 | m_mousePosition = *context.mousePosition(event, interfaceScale) - screenPosition(); |
| 117 | return false; |
| 118 | } else if (auto keyDown = event.ptr<KeyDownEvent>()) { |
| 119 | if (m_captureKeyboard) { |
| 120 | m_keyEvents.append({keyDown->key, true}); |
| 121 | return true; |
| 122 | } |
| 123 | } else if (auto keyUp = event.ptr<KeyUpEvent>()) { |
| 124 | if (m_captureKeyboard) { |
| 125 | m_keyEvents.append({keyUp->key, false}); |
| 126 | m_keyEvents.limitSizeBack(MaximumEventBuffer); |
| 127 | return true; |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | return Widget::sendEvent(event); |
| 132 | } |
| 133 | |
| 134 | KeyboardCaptureMode CanvasWidget::keyboardCaptureMode() const { |
| 135 | return m_captureKeyboard ? KeyboardCaptureMode::KeyEvents : KeyboardCaptureMode::None; |
nothing calls this directly
no test coverage detected