mirror of
https://github.com/RGBCube/serenity
synced 2025-05-22 00:15:08 +00:00
Deliver mouse events to the appropriate Window.
This commit is contained in:
parent
f2fa7b615f
commit
5d125e40d9
3 changed files with 16 additions and 1 deletions
|
@ -1,5 +1,6 @@
|
|||
#include "Window.h"
|
||||
#include "WindowManager.h"
|
||||
#include "Event.h"
|
||||
|
||||
Window::Window(Object* parent)
|
||||
: Object(parent)
|
||||
|
@ -37,3 +38,14 @@ void Window::setRect(const Rect& rect)
|
|||
m_rect = rect;
|
||||
WindowManager::the().notifyRectChanged(*this, oldRect, m_rect);
|
||||
}
|
||||
|
||||
void Window::event(Event& event)
|
||||
{
|
||||
if (event.isMouseEvent()) {
|
||||
auto& me = static_cast<MouseEvent&>(event);
|
||||
printf("Window{%p}: %s %d,%d\n", this, me.name(), me.x(), me.y());
|
||||
return Object::event(event);
|
||||
}
|
||||
|
||||
return Object::event(event);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
class Widget;
|
||||
|
||||
class Window : public Object {
|
||||
class Window final : public Object {
|
||||
public:
|
||||
explicit Window(Object* parent = nullptr);
|
||||
virtual ~Window() override;
|
||||
|
@ -27,6 +27,8 @@ public:
|
|||
|
||||
void setMainWidget(Widget*);
|
||||
|
||||
virtual void event(Event&) override;
|
||||
|
||||
private:
|
||||
String m_title;
|
||||
Rect m_rect;
|
||||
|
|
|
@ -116,6 +116,7 @@ void WindowManager::processMouseEvent(MouseEvent& event)
|
|||
if (window->rect().contains(event.position())) {
|
||||
// FIXME: Re-use the existing event instead of crafting a new one?
|
||||
auto localEvent = make<MouseEvent>(event.type(), event.x() - window->rect().x(), event.y() - window->rect().y(), event.button());
|
||||
window->event(*localEvent);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue