1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 04:58:13 +00:00

LibGUI: Introduce widget content margins + improve splitters

A GUI::Widget can now set an optional content margin (4x0 by default.)
Pixels in the content margin will be ignored for hit testing purposes.

Use this to allow frame-like widgets (like GUI::Frame!) to ignore any
mouse events in the frame area, and instead let those go to parent.

This allows GUI::Splitter to react "sooner" to mouse events that were
previously swallowed by the child widgets instead of ending up in the
splitter. The net effect is that 2 more pixels on each side of a
splitter handle are now interactive and usable for splitting! :^)
This commit is contained in:
Andreas Kling 2020-04-24 18:55:29 +02:00
parent 9badcff1ba
commit 42f0b2522b
6 changed files with 57 additions and 17 deletions

View file

@ -42,6 +42,14 @@ Frame::~Frame()
{
}
void Frame::set_frame_thickness(int thickness)
{
if (m_thickness == thickness)
return;
m_thickness = thickness;
set_content_margins({ thickness, thickness, thickness, thickness });
}
void Frame::paint_event(PaintEvent& event)
{
if (m_shape == Gfx::FrameShape::NoFrame)