Skip to content

Commit c31b92b

Browse files
committed
Fix layers property editor last bit value in tooltip
1 parent e47fb8b commit c31b92b

File tree

2 files changed

+20
-29
lines changed

2 files changed

+20
-29
lines changed

editor/inspector/editor_properties.cpp

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,7 @@ void EditorPropertyFlags::setup(const Vector<String> &p_options) {
930930
if (text_split.size() != 1) {
931931
current_val = text_split[1].to_int();
932932
} else {
933-
current_val = 1 << i;
933+
current_val = 1u << i;
934934
}
935935
flag_values.push_back(current_val);
936936

@@ -961,9 +961,7 @@ EditorPropertyFlags::EditorPropertyFlags() {
961961

962962
void EditorPropertyLayersGrid::_rename_pressed(int p_menu) {
963963
// Show rename popup for active layer.
964-
if (renamed_layer_index == INT32_MAX) {
965-
return;
966-
}
964+
ERR_FAIL_INDEX(renamed_layer_index, names.size());
967965
String name = names[renamed_layer_index];
968966
rename_dialog->set_title(vformat(TTR("Renaming layer %d:"), renamed_layer_index + 1));
969967
rename_dialog_text->set_text(name);
@@ -982,7 +980,7 @@ void EditorPropertyLayersGrid::_rename_operation_confirm() {
982980
return;
983981
}
984982
names.set(renamed_layer_index, new_name);
985-
tooltips.set(renamed_layer_index, new_name + "\n" + vformat(TTR("Bit %d, value %d"), renamed_layer_index, 1 << renamed_layer_index));
983+
tooltips.set(renamed_layer_index, new_name + "\n" + vformat(TTR("Bit %d, value %d"), renamed_layer_index, 1u << renamed_layer_index));
986984
emit_signal(SNAME("rename_confirmed"), renamed_layer_index, new_name);
987985
}
988986

@@ -1054,8 +1052,8 @@ void EditorPropertyLayersGrid::_update_hovered(const Vector2 &p_position) {
10541052
}
10551053

10561054
// Remove highlight when no square is hovered.
1057-
if (hovered_index != INT32_MAX) {
1058-
hovered_index = INT32_MAX;
1055+
if (hovered_index != HOVERED_INDEX_NONE) {
1056+
hovered_index = HOVERED_INDEX_NONE;
10591057
queue_redraw();
10601058
}
10611059
}
@@ -1065,32 +1063,28 @@ void EditorPropertyLayersGrid::_on_hover_exit() {
10651063
expand_hovered = false;
10661064
queue_redraw();
10671065
}
1068-
if (hovered_index != INT32_MAX) {
1069-
hovered_index = INT32_MAX;
1066+
if (hovered_index != HOVERED_INDEX_NONE) {
1067+
hovered_index = HOVERED_INDEX_NONE;
10701068
queue_redraw();
10711069
}
10721070
}
10731071

10741072
void EditorPropertyLayersGrid::_update_flag(bool p_replace) {
1075-
if (hovered_index != INT32_MAX) {
1073+
if (hovered_index != HOVERED_INDEX_NONE) {
10761074
// Toggle the flag.
10771075
// We base our choice on the hovered flag, so that it always matches the hovered flag.
10781076
if (p_replace) {
10791077
// Replace all flags with the hovered flag ("solo mode"),
10801078
// instead of toggling the hovered flags while preserving other flags' state.
1081-
if (value == uint32_t(1 << hovered_index)) {
1079+
if (value == 1u << hovered_index) {
10821080
// If the flag is already enabled, enable all other items and disable the current flag.
10831081
// This allows for quicker toggling.
1084-
value = INT32_MAX - (1 << hovered_index);
1082+
value = ~value;
10851083
} else {
1086-
value = 1 << hovered_index;
1084+
value = 1u << hovered_index;
10871085
}
10881086
} else {
1089-
if (value & (1 << hovered_index)) {
1090-
value &= ~(1 << hovered_index);
1091-
} else {
1092-
value |= (1 << hovered_index);
1093-
}
1087+
value ^= 1u << hovered_index;
10941088
}
10951089

10961090
emit_signal(SNAME("flag_changed"), value);
@@ -1118,7 +1112,7 @@ void EditorPropertyLayersGrid::gui_input(const Ref<InputEvent> &p_ev) {
11181112
_update_flag(mb->is_command_or_control_pressed());
11191113
}
11201114
if (mb.is_valid() && mb->get_button_index() == MouseButton::RIGHT && mb->is_pressed()) {
1121-
if (hovered_index != INT32_MAX) {
1115+
if (hovered_index != HOVERED_INDEX_NONE) {
11221116
renamed_layer_index = hovered_index;
11231117
layer_rename->set_position(get_screen_position() + mb->get_position());
11241118
layer_rename->reset_size();
@@ -1171,7 +1165,7 @@ void EditorPropertyLayersGrid::_notification(int p_what) {
11711165

11721166
for (int i = 0; i < 2; i++) {
11731167
for (int j = 0; j < layer_group_size; j++) {
1174-
const bool on = value & (1 << layer_index);
1168+
const bool on = value & (1u << layer_index);
11751169
Rect2 rect2 = Rect2(ofs, Size2(bsize, bsize));
11761170

11771171
color.a = on ? 0.6 : 0.2;
@@ -1361,7 +1355,7 @@ void EditorPropertyLayers::setup(LayerType p_layer_type) {
13611355
}
13621356

13631357
names.push_back(name);
1364-
tooltips.push_back(name + "\n" + vformat(TTR("Bit %d, value %d"), i, 1 << i));
1358+
tooltips.push_back(name + "\n" + vformat(TTR("Bit %d, value %d"), i, 1u << i));
13651359
}
13661360

13671361
grid->names = names;
@@ -1396,7 +1390,7 @@ void EditorPropertyLayers::_button_pressed() {
13961390
}
13971391
layers->add_check_item(name, i);
13981392
int idx = layers->get_item_index(i);
1399-
layers->set_item_checked(idx, grid->value & (1 << i));
1393+
layers->set_item_checked(idx, grid->value & (1u << i));
14001394
}
14011395

14021396
if (layers->get_item_count() == 0) {
@@ -1418,13 +1412,9 @@ void EditorPropertyLayers::_menu_pressed(int p_menu) {
14181412
ProjectSettingsEditor::get_singleton()->popup_project_settings(true);
14191413
ProjectSettingsEditor::get_singleton()->set_general_page(basename);
14201414
} else {
1421-
if (grid->value & (1 << p_menu)) {
1422-
grid->value &= ~(1 << p_menu);
1423-
} else {
1424-
grid->value |= (1 << p_menu);
1425-
}
1415+
grid->value ^= 1u << p_menu;
14261416
grid->queue_redraw();
1427-
layers->set_item_checked(layers->get_item_index(p_menu), grid->value & (1 << p_menu));
1417+
layers->set_item_checked(layers->get_item_index(p_menu), grid->value & (1u << p_menu));
14281418
_grid_changed(grid->value);
14291419
}
14301420
}

editor/inspector/editor_properties.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,8 @@ class EditorPropertyLayersGrid : public Control {
304304
bool expand_hovered = false;
305305
bool expanded = false;
306306
int expansion_rows = 0;
307-
uint32_t hovered_index = INT32_MAX; // Nothing is hovered.
307+
const uint32_t HOVERED_INDEX_NONE = UINT32_MAX;
308+
uint32_t hovered_index = HOVERED_INDEX_NONE;
308309
bool read_only = false;
309310
int renamed_layer_index = -1;
310311
PopupMenu *layer_rename = nullptr;

0 commit comments

Comments
 (0)