fix gray box & remove multiple line text support for NewButton (#2426)

This commit is contained in:
sommermorgentraum 2024-12-16 01:22:19 +08:00 committed by GitHub
parent ee10081854
commit 42da7443b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 36 deletions

View File

@ -765,7 +765,7 @@ static void add_apps(NavigationView& nav, BtnGridView& grid, app_location_t loc)
void add_external_items(NavigationView& nav, app_location_t location, BtnGridView& grid, uint8_t error_tile_pos) {
auto externalItems = ExternalItemsMenuLoader::load_external_items(location, nav);
if (externalItems.empty()) {
grid.insert_item({"ExtApp\nError",
grid.insert_item({"ExtAppErr",
Theme::getInstance()->error_dark->foreground,
nullptr,
[&nav]() {

View File

@ -323,7 +323,7 @@ class InformationView : public View {
Rectangle backdrop{
{0, 0 * 16, 240, 16},
{33, 33, 33}};
Theme::getInstance()->bg_darker->background};
Text version{
{2, 0, 11 * 8, 16},

View File

@ -1327,11 +1327,10 @@ void NewButton::paint(Painter& painter) {
style.background);
int y = r.top();
if (bitmap_) {
int offset_y = vertical_center_ ? (r.height() / 2) - (bitmap_->size.height() / 2) : 6;
Point bmp_pos = {r.left() + (r.width() / 2) - (bitmap_->size.width() / 2), r.top() + offset_y};
y += bitmap_->size.height() + offset_y;
y += bitmap_->size.height() - offset_y;
painter.draw_bitmap(
bmp_pos,
@ -1341,38 +1340,11 @@ void NewButton::paint(Painter& painter) {
}
if (!text_.empty()) {
// multi line worker
std::vector<std::string> lines;
size_t start = 0;
size_t end = 0;
while ((end = text_.find('\n', start)) != std::string::npos) {
lines.push_back(text_.substr(start, end - start));
start = end + 1;
}
lines.push_back(text_.substr(start));
const int line_height = style.font.line_height();
const int total_text_height = lines.size() * line_height;
// satisfy the situation that bitmap is nullptr
if (bitmap_) {
if (vertical_center_) {
y = r.top() + (r.height() - total_text_height) / 2;
}
} else {
y = r.top() + (r.height() - total_text_height) / 2;
}
// draw worker
for (const auto& line : lines) {
const auto label_r = style.font.size_of(line);
painter.draw_string(
{r.left() + (r.width() - label_r.width()) / 2, y},
style,
line);
y += line_height;
}
const auto label_r = style.font.size_of(text_);
painter.draw_string(
{r.left() + (r.width() - label_r.width()) / 2, y + (r.height() - label_r.height()) / 2},
style,
text_);
}
}