mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-23 18:02:05 -05:00
GButton: Align the button text according to text_alignment().
Added a Rect::align_within(other_rect, alignment) helper that seemed useful.
This commit is contained in:
parent
75b0e5cce5
commit
cca510162e
3 changed files with 27 additions and 4 deletions
|
@ -52,8 +52,8 @@ void GButton::paint_event(GPaintEvent& event)
|
||||||
Rect text_rect { 0, 0, font.width(text()), font.glyph_height() };
|
Rect text_rect { 0, 0, font.width(text()), font.glyph_height() };
|
||||||
if (text_rect.width() > content_rect.width())
|
if (text_rect.width() > content_rect.width())
|
||||||
text_rect.set_width(content_rect.width());
|
text_rect.set_width(content_rect.width());
|
||||||
text_rect.center_within(content_rect);
|
text_rect.align_within(content_rect, text_alignment());
|
||||||
paint_text(painter, text_rect, font, text_alignment());
|
paint_text(painter, text_rect, font, TextAlignment::Center);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GButton::click()
|
void GButton::click()
|
||||||
|
|
|
@ -76,3 +76,23 @@ Vector<Rect> Rect::shatter(const Rect& hammer) const
|
||||||
|
|
||||||
return pieces;
|
return pieces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Rect::align_within(const Rect& other, TextAlignment alignment)
|
||||||
|
{
|
||||||
|
switch (alignment) {
|
||||||
|
case TextAlignment::Center:
|
||||||
|
center_within(other);
|
||||||
|
return;
|
||||||
|
case TextAlignment::TopLeft:
|
||||||
|
set_location(other.location());
|
||||||
|
return;
|
||||||
|
case TextAlignment::CenterLeft:
|
||||||
|
set_x(other.x());
|
||||||
|
center_vertically_within(other);
|
||||||
|
return;
|
||||||
|
case TextAlignment::CenterRight:
|
||||||
|
set_x(other.x() + other.width() - width());
|
||||||
|
center_vertically_within(other);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Point.h"
|
|
||||||
#include "Size.h"
|
|
||||||
#include <AK/AKString.h>
|
#include <AK/AKString.h>
|
||||||
|
#include <SharedGraphics/Point.h>
|
||||||
|
#include <SharedGraphics/Size.h>
|
||||||
|
#include <SharedGraphics/TextAlignment.h>
|
||||||
|
|
||||||
struct WSAPI_Rect;
|
struct WSAPI_Rect;
|
||||||
|
|
||||||
|
@ -207,6 +208,8 @@ public:
|
||||||
Point bottom_left() const { return { left(), bottom() }; }
|
Point bottom_left() const { return { left(), bottom() }; }
|
||||||
Point bottom_right() const { return { right(), bottom() }; }
|
Point bottom_right() const { return { right(), bottom() }; }
|
||||||
|
|
||||||
|
void align_within(const Rect&, TextAlignment);
|
||||||
|
|
||||||
void center_within(const Rect& other)
|
void center_within(const Rect& other)
|
||||||
{
|
{
|
||||||
center_horizontally_within(other);
|
center_horizontally_within(other);
|
||||||
|
|
Loading…
Add table
Reference in a new issue