1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-03 16:55:53 +00:00

Merge pull request #112173 from kleonc/editor_property_layer_grid_fix_last_bit_tooltip

Fix layers property editor last bit value in tooltip
This commit is contained in:
Thaddeus Crews
2025-11-12 17:26:19 -06:00
2 changed files with 20 additions and 29 deletions

View File

@@ -930,7 +930,7 @@ void EditorPropertyFlags::setup(const Vector<String> &p_options) {
if (text_split.size() != 1) {
current_val = text_split[1].to_int();
} else {
current_val = 1 << i;
current_val = 1u << i;
}
flag_values.push_back(current_val);
@@ -961,9 +961,7 @@ EditorPropertyFlags::EditorPropertyFlags() {
void EditorPropertyLayersGrid::_rename_pressed(int p_menu) {
// Show rename popup for active layer.
if (renamed_layer_index == INT32_MAX) {
return;
}
ERR_FAIL_INDEX(renamed_layer_index, names.size());
String name = names[renamed_layer_index];
rename_dialog->set_title(vformat(TTR("Renaming layer %d:"), renamed_layer_index + 1));
rename_dialog_text->set_text(name);
@@ -982,7 +980,7 @@ void EditorPropertyLayersGrid::_rename_operation_confirm() {
return;
}
names.set(renamed_layer_index, new_name);
tooltips.set(renamed_layer_index, new_name + "\n" + vformat(TTR("Bit %d, value %d"), renamed_layer_index, 1 << renamed_layer_index));
tooltips.set(renamed_layer_index, new_name + "\n" + vformat(TTR("Bit %d, value %d"), renamed_layer_index, 1u << renamed_layer_index));
emit_signal(SNAME("rename_confirmed"), renamed_layer_index, new_name);
}
@@ -1054,8 +1052,8 @@ void EditorPropertyLayersGrid::_update_hovered(const Vector2 &p_position) {
}
// Remove highlight when no square is hovered.
if (hovered_index != INT32_MAX) {
hovered_index = INT32_MAX;
if (hovered_index != HOVERED_INDEX_NONE) {
hovered_index = HOVERED_INDEX_NONE;
queue_redraw();
}
}
@@ -1065,32 +1063,28 @@ void EditorPropertyLayersGrid::_on_hover_exit() {
expand_hovered = false;
queue_redraw();
}
if (hovered_index != INT32_MAX) {
hovered_index = INT32_MAX;
if (hovered_index != HOVERED_INDEX_NONE) {
hovered_index = HOVERED_INDEX_NONE;
queue_redraw();
}
}
void EditorPropertyLayersGrid::_update_flag(bool p_replace) {
if (hovered_index != INT32_MAX) {
if (hovered_index != HOVERED_INDEX_NONE) {
// Toggle the flag.
// We base our choice on the hovered flag, so that it always matches the hovered flag.
if (p_replace) {
// Replace all flags with the hovered flag ("solo mode"),
// instead of toggling the hovered flags while preserving other flags' state.
if (value == uint32_t(1 << hovered_index)) {
if (value == 1u << hovered_index) {
// If the flag is already enabled, enable all other items and disable the current flag.
// This allows for quicker toggling.
value = INT32_MAX - (1 << hovered_index);
value = ~value;
} else {
value = 1 << hovered_index;
value = 1u << hovered_index;
}
} else {
if (value & (1 << hovered_index)) {
value &= ~(1 << hovered_index);
} else {
value |= (1 << hovered_index);
}
value ^= 1u << hovered_index;
}
emit_signal(SNAME("flag_changed"), value);
@@ -1118,7 +1112,7 @@ void EditorPropertyLayersGrid::gui_input(const Ref<InputEvent> &p_ev) {
_update_flag(mb->is_command_or_control_pressed());
}
if (mb.is_valid() && mb->get_button_index() == MouseButton::RIGHT && mb->is_pressed()) {
if (hovered_index != INT32_MAX) {
if (hovered_index != HOVERED_INDEX_NONE) {
renamed_layer_index = hovered_index;
layer_rename->set_position(get_screen_position() + mb->get_position());
layer_rename->reset_size();
@@ -1171,7 +1165,7 @@ void EditorPropertyLayersGrid::_notification(int p_what) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < layer_group_size; j++) {
const bool on = value & (1 << layer_index);
const bool on = value & (1u << layer_index);
Rect2 rect2 = Rect2(ofs, Size2(bsize, bsize));
color.a = on ? 0.6 : 0.2;
@@ -1361,7 +1355,7 @@ void EditorPropertyLayers::setup(LayerType p_layer_type) {
}
names.push_back(name);
tooltips.push_back(name + "\n" + vformat(TTR("Bit %d, value %d"), i, 1 << i));
tooltips.push_back(name + "\n" + vformat(TTR("Bit %d, value %d"), i, 1u << i));
}
grid->names = names;
@@ -1396,7 +1390,7 @@ void EditorPropertyLayers::_button_pressed() {
}
layers->add_check_item(name, i);
int idx = layers->get_item_index(i);
layers->set_item_checked(idx, grid->value & (1 << i));
layers->set_item_checked(idx, grid->value & (1u << i));
}
if (layers->get_item_count() == 0) {
@@ -1418,13 +1412,9 @@ void EditorPropertyLayers::_menu_pressed(int p_menu) {
ProjectSettingsEditor::get_singleton()->popup_project_settings(true);
ProjectSettingsEditor::get_singleton()->set_general_page(basename);
} else {
if (grid->value & (1 << p_menu)) {
grid->value &= ~(1 << p_menu);
} else {
grid->value |= (1 << p_menu);
}
grid->value ^= 1u << p_menu;
grid->queue_redraw();
layers->set_item_checked(layers->get_item_index(p_menu), grid->value & (1 << p_menu));
layers->set_item_checked(layers->get_item_index(p_menu), grid->value & (1u << p_menu));
_grid_changed(grid->value);
}
}