mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:17:35 +00:00
Minor GUI API things + make Button corners properly transparent.
This commit is contained in:
parent
f7261d7b26
commit
1d914cbd84
5 changed files with 10 additions and 14 deletions
|
@ -23,8 +23,7 @@ int main(int argc, char** argv)
|
||||||
GUI_CreateWidgetParameters label_params;
|
GUI_CreateWidgetParameters label_params;
|
||||||
label_params.type = GUI_WidgetType::Label;
|
label_params.type = GUI_WidgetType::Label;
|
||||||
label_params.rect = { 20, 20, 260, 20 };
|
label_params.rect = { 20, 20, 260, 20 };
|
||||||
label_params.background_color = 0xffffff;
|
label_params.opaque = false;
|
||||||
label_params.opaque = true;
|
|
||||||
strcpy(label_params.text, "Hello World!");
|
strcpy(label_params.text, "Hello World!");
|
||||||
int label_id = syscall(SC_gui_create_widget, window_id, &label_params);
|
int label_id = syscall(SC_gui_create_widget, window_id, &label_params);
|
||||||
if (label_id < 0) {
|
if (label_id < 0) {
|
||||||
|
@ -35,8 +34,6 @@ int main(int argc, char** argv)
|
||||||
GUI_CreateWidgetParameters button_params;
|
GUI_CreateWidgetParameters button_params;
|
||||||
button_params.type = GUI_WidgetType::Button;
|
button_params.type = GUI_WidgetType::Button;
|
||||||
button_params.rect = { 60, 60, 120, 20 };
|
button_params.rect = { 60, 60, 120, 20 };
|
||||||
button_params.background_color = 0xffffff;
|
|
||||||
button_params.opaque = true;
|
|
||||||
strcpy(button_params.text, "I'm a button!");
|
strcpy(button_params.text, "I'm a button!");
|
||||||
int button_id = syscall(SC_gui_create_widget, window_id, &button_params);
|
int button_id = syscall(SC_gui_create_widget, window_id, &button_params);
|
||||||
if (button_id < 0) {
|
if (button_id < 0) {
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
Button::Button(Widget* parent)
|
Button::Button(Widget* parent)
|
||||||
: Widget(parent)
|
: Widget(parent)
|
||||||
{
|
{
|
||||||
|
setFillWithBackgroundColor(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Button::~Button()
|
Button::~Button()
|
||||||
|
@ -26,11 +27,6 @@ void Button::paintEvent(PaintEvent&)
|
||||||
|
|
||||||
Painter painter(*this);
|
Painter painter(*this);
|
||||||
|
|
||||||
painter.set_pixel({ 0, 0 }, backgroundColor());
|
|
||||||
painter.set_pixel({ width() - 1, 0 }, backgroundColor());
|
|
||||||
painter.set_pixel({ 0, height() - 1 }, backgroundColor());
|
|
||||||
painter.set_pixel({ width() - 1, height() - 1 }, backgroundColor());
|
|
||||||
|
|
||||||
painter.draw_line({ 1, 0 }, { width() - 2, 0 }, Color::Black);
|
painter.draw_line({ 1, 0 }, { width() - 2, 0 }, Color::Black);
|
||||||
painter.draw_line({ 1, height() - 1 }, { width() - 2, height() - 1}, Color::Black);
|
painter.draw_line({ 1, height() - 1 }, { width() - 2, height() - 1}, Color::Black);
|
||||||
painter.draw_line({ 0, 1 }, { 0, height() - 2 }, Color::Black);
|
painter.draw_line({ 0, 1 }, { 0, height() - 2 }, Color::Black);
|
||||||
|
|
|
@ -21,7 +21,8 @@ void Label::setText(String&& text)
|
||||||
void Label::paintEvent(PaintEvent&)
|
void Label::paintEvent(PaintEvent&)
|
||||||
{
|
{
|
||||||
Painter painter(*this);
|
Painter painter(*this);
|
||||||
painter.fill_rect({ 0, 0, width(), height() }, backgroundColor());
|
if (fillWithBackgroundColor())
|
||||||
|
painter.fill_rect({ 0, 0, width(), height() }, backgroundColor());
|
||||||
if (!text().is_empty())
|
if (!text().is_empty())
|
||||||
painter.draw_text({ 4, 4, width(), height() }, text(), Painter::TextAlignment::TopLeft, foregroundColor());
|
painter.draw_text({ 4, 4, width(), height() }, text(), Painter::TextAlignment::TopLeft, foregroundColor());
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,9 @@ Painter::Painter(Widget& widget)
|
||||||
m_clip_rect = widget.relativeRect();
|
m_clip_rect = widget.relativeRect();
|
||||||
|
|
||||||
#ifdef DEBUG_WIDGET_UNDERDRAW
|
#ifdef DEBUG_WIDGET_UNDERDRAW
|
||||||
fill_rect(widget.rect(), Color::Red);
|
// If the widget is not opaque, let's not mess it up with debugging color.
|
||||||
|
if (widget.fillWithBackgroundColor())
|
||||||
|
fill_rect(widget.rect(), Color::Red);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,10 +90,10 @@ private:
|
||||||
Window* m_window { nullptr };
|
Window* m_window { nullptr };
|
||||||
|
|
||||||
Rect m_relativeRect;
|
Rect m_relativeRect;
|
||||||
Color m_backgroundColor;
|
Color m_backgroundColor { 0xffffff };
|
||||||
Color m_foregroundColor;
|
Color m_foregroundColor { 0x000000 };
|
||||||
RetainPtr<Font> m_font;
|
RetainPtr<Font> m_font;
|
||||||
|
|
||||||
bool m_hasPendingPaintEvent { false };
|
bool m_hasPendingPaintEvent { false };
|
||||||
bool m_fillWithBackgroundColor { false };
|
bool m_fillWithBackgroundColor { true };
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue