1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 07:17:35 +00:00

Stop recomposing the window hierarchy after every dang widget paint.

This commit is contained in:
Andreas Kling 2019-01-09 04:46:16 +01:00
parent f3ec96a1b9
commit cfd76ade73
8 changed files with 34 additions and 41 deletions

View file

@ -1,6 +1,7 @@
#include "Window.h"
#include "WindowManager.h"
#include "Event.h"
#include "EventLoop.h"
#include "Widget.h"
Window::Window(Object* parent)
@ -46,9 +47,14 @@ void Window::setRect(const Rect& rect)
WindowManager::the().notifyRectChanged(*this, oldRect, m_rect);
}
void Window::repaint()
void Window::repaint(const Rect& rect)
{
event(*make<PaintEvent>());
event(*make<PaintEvent>(rect));
}
void Window::update(const Rect& rect)
{
EventLoop::main().postEvent(this, make<PaintEvent>(rect));
}
void Window::event(Event& event)
@ -80,9 +86,11 @@ void Window::event(Event& event)
}
if (m_mainWidget) {
if (pe.rect().is_empty())
return m_mainWidget->event(*make<PaintEvent>(m_mainWidget->rect()));
m_mainWidget->event(*make<PaintEvent>(m_mainWidget->rect()));
else
return m_mainWidget->event(event);
m_mainWidget->event(event);
WindowManager::the().did_paint(*this);
return;
}
return Object::event(event);
}