LibGfx+LibGUI: Add FrameShape::Window

This shape is for use by the main widget of a frameless window
that still wishes to have proper borders but no title.

Raised Containers were used previously for this pattern but did not
always represent perspective and shadow correctly depending on thread
highlighting and the immediate background color. Containers are
really meant to be used inside other widgets where the background
color can be controlled.
This commit is contained in:
thankyouverycool 2022-02-25 11:39:17 -05:00 committed by Andreas Kling
parent 7a7e57ced0
commit bb4963a697
Notes: sideshowbarker 2024-07-17 18:17:20 +09:00
3 changed files with 8 additions and 1 deletions

View file

@ -28,7 +28,8 @@ Frame::Frame()
{ Gfx::FrameShape::NoFrame, "NoFrame" },
{ Gfx::FrameShape::Box, "Box" },
{ Gfx::FrameShape::Container, "Container" },
{ Gfx::FrameShape::Panel, "Panel" });
{ Gfx::FrameShape::Panel, "Panel" },
{ Gfx::FrameShape::Window, "Window" });
}
Frame::~Frame()

View file

@ -219,6 +219,11 @@ void ClassicStylePainter::paint_frame(Painter& painter, IntRect const& rect, Pal
if (shape == Gfx::FrameShape::NoFrame)
return;
if (shape == FrameShape::Window) {
StylePainter::paint_window_frame(painter, rect, palette);
return;
}
Color top_left_color;
Color bottom_right_color;
Color dark_shade = palette.threed_shadow1();

View file

@ -28,6 +28,7 @@ enum class FrameShape {
Box,
Container,
Panel,
Window,
};
// FIXME: should this be in its own header?