From de5a7b3764488e86140af6fe7a1eb48bdb932986 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Tue, 8 Aug 2023 14:57:42 +0800 Subject: [PATCH] Fix Button text when overrun is not trim nothing (cherry picked from commit 7f70ac56a09e721f6ecaa491491d6457177caaab) --- scene/gui/button.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp index dc3cdf04c90..1952d36ead7 100644 --- a/scene/gui/button.cpp +++ b/scene/gui/button.cpp @@ -119,6 +119,7 @@ void Button::_notification(int p_what) { Ref style = theme_cache.normal; bool rtl = is_layout_rtl(); + const bool is_clipped = clip_text || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING; switch (get_draw_mode()) { case DRAW_NORMAL: { @@ -284,7 +285,7 @@ void Button::_notification(int p_what) { Size2 _size = get_size() - style->get_offset() * 2; int icon_text_separation = text.is_empty() ? 0 : theme_cache.h_separation; _size.width -= icon_text_separation + icon_ofs_region; - if (!clip_text && icon_align_rtl_checked != HORIZONTAL_ALIGNMENT_CENTER) { + if (!is_clipped && icon_align_rtl_checked != HORIZONTAL_ALIGNMENT_CENTER) { _size.width -= text_buf->get_size().width; } if (vertical_icon_alignment != VERTICAL_ALIGNMENT_CENTER) { @@ -336,9 +337,9 @@ void Button::_notification(int p_what) { text_clip -= _internal_margin[SIDE_RIGHT] + theme_cache.h_separation; } - text_buf->set_width((clip_text || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) ? text_clip : -1); + text_buf->set_width(is_clipped ? text_clip : -1); - int text_width = MAX(1, (clip_text || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) ? MIN(text_clip, text_buf->get_size().x) : text_buf->get_size().x); + int text_width = MAX(1, is_clipped ? MIN(text_clip, text_buf->get_size().x) : text_buf->get_size().x); Point2 text_ofs = (size - style->get_minimum_size() - icon_ofs - text_buf->get_size() - Point2(_internal_margin[SIDE_RIGHT] - _internal_margin[SIDE_LEFT], 0)) / 2.0;