You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Optimize StringName usage
* Added a new macro SNAME() that constructs and caches a local stringname. * Subsequent usages use the cached version. * Since these use a global static variable, a second refcounter of static usages need to be kept for cleanup time. * Replaced all theme usages by this new macro. * Replace all signal emission usages by this new macro. * Replace all call_deferred usages by this new macro. This is part of ongoing work to optimize GUI and the editor.
This commit is contained in:
@@ -32,8 +32,8 @@
|
||||
#include "core/string/translation.h"
|
||||
|
||||
void LinkButton::_shape() {
|
||||
Ref<Font> font = get_theme_font("font");
|
||||
int font_size = get_theme_font_size("font_size");
|
||||
Ref<Font> font = get_theme_font(SNAME("font"));
|
||||
int font_size = get_theme_font_size(SNAME("font_size"));
|
||||
|
||||
text_buf->clear();
|
||||
if (text_direction == Control::TEXT_DIRECTION_INHERITED) {
|
||||
@@ -158,41 +158,41 @@ void LinkButton::_notification(int p_what) {
|
||||
|
||||
switch (get_draw_mode()) {
|
||||
case DRAW_NORMAL: {
|
||||
color = get_theme_color("font_color");
|
||||
color = get_theme_color(SNAME("font_color"));
|
||||
do_underline = underline_mode == UNDERLINE_MODE_ALWAYS;
|
||||
} break;
|
||||
case DRAW_HOVER_PRESSED:
|
||||
case DRAW_PRESSED: {
|
||||
if (has_theme_color("font_pressed_color")) {
|
||||
color = get_theme_color("font_pressed_color");
|
||||
if (has_theme_color(SNAME("font_pressed_color"))) {
|
||||
color = get_theme_color(SNAME("font_pressed_color"));
|
||||
} else {
|
||||
color = get_theme_color("font_color");
|
||||
color = get_theme_color(SNAME("font_color"));
|
||||
}
|
||||
|
||||
do_underline = underline_mode != UNDERLINE_MODE_NEVER;
|
||||
|
||||
} break;
|
||||
case DRAW_HOVER: {
|
||||
color = get_theme_color("font_hover_color");
|
||||
color = get_theme_color(SNAME("font_hover_color"));
|
||||
do_underline = underline_mode != UNDERLINE_MODE_NEVER;
|
||||
|
||||
} break;
|
||||
case DRAW_DISABLED: {
|
||||
color = get_theme_color("font_disabled_color");
|
||||
color = get_theme_color(SNAME("font_disabled_color"));
|
||||
do_underline = underline_mode == UNDERLINE_MODE_ALWAYS;
|
||||
|
||||
} break;
|
||||
}
|
||||
|
||||
if (has_focus()) {
|
||||
Ref<StyleBox> style = get_theme_stylebox("focus");
|
||||
Ref<StyleBox> style = get_theme_stylebox(SNAME("focus"));
|
||||
style->draw(ci, Rect2(Point2(), size));
|
||||
}
|
||||
|
||||
int width = text_buf->get_line_width();
|
||||
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
Color font_outline_color = get_theme_color(SNAME("font_outline_color"));
|
||||
int outline_size = get_theme_constant(SNAME("outline_size"));
|
||||
if (is_layout_rtl()) {
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
text_buf->draw_outline(get_canvas_item(), Vector2(size.width - width, 0), outline_size, font_outline_color);
|
||||
@@ -206,7 +206,7 @@ void LinkButton::_notification(int p_what) {
|
||||
}
|
||||
|
||||
if (do_underline) {
|
||||
int underline_spacing = get_theme_constant("underline_spacing") + text_buf->get_line_underline_position();
|
||||
int underline_spacing = get_theme_constant(SNAME("underline_spacing")) + text_buf->get_line_underline_position();
|
||||
int y = text_buf->get_line_ascent() + underline_spacing;
|
||||
|
||||
if (is_layout_rtl()) {
|
||||
|
||||
Reference in New Issue
Block a user