Merge pull request #112174 from kleonc/editor_property_layers_grid_allow_drag_toggling
Allow drag setting flags in layers property editor
This commit is contained in:
@ -1067,6 +1067,9 @@ void EditorPropertyLayersGrid::_on_hover_exit() {
|
||||
hovered_index = HOVERED_INDEX_NONE;
|
||||
queue_redraw();
|
||||
}
|
||||
if (dragging) {
|
||||
dragging = false;
|
||||
}
|
||||
}
|
||||
|
||||
void EditorPropertyLayersGrid::_update_flag(bool p_replace) {
|
||||
@ -1103,13 +1106,26 @@ void EditorPropertyLayersGrid::gui_input(const Ref<InputEvent> &p_ev) {
|
||||
const Ref<InputEventMouseMotion> mm = p_ev;
|
||||
if (mm.is_valid()) {
|
||||
_update_hovered(mm->get_position());
|
||||
if (dragging && hovered_index != HOVERED_INDEX_NONE && dragging_value_to_set != bool(value & (1u << hovered_index))) {
|
||||
value ^= 1u << hovered_index;
|
||||
emit_signal(SNAME("flag_changed"), value);
|
||||
queue_redraw();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const Ref<InputEventMouseButton> mb = p_ev;
|
||||
if (mb.is_valid() && mb->get_button_index() == MouseButton::LEFT && mb->is_pressed()) {
|
||||
_update_hovered(mb->get_position());
|
||||
_update_flag(mb->is_command_or_control_pressed());
|
||||
bool replace_mode = mb->is_command_or_control_pressed();
|
||||
_update_flag(replace_mode);
|
||||
if (!replace_mode && hovered_index != HOVERED_INDEX_NONE) {
|
||||
dragging = true;
|
||||
dragging_value_to_set = bool(value & (1u << hovered_index));
|
||||
}
|
||||
}
|
||||
if (mb.is_valid() && mb->get_button_index() == MouseButton::LEFT && !mb->is_pressed()) {
|
||||
dragging = false;
|
||||
}
|
||||
if (mb.is_valid() && mb->get_button_index() == MouseButton::RIGHT && mb->is_pressed()) {
|
||||
if (hovered_index != HOVERED_INDEX_NONE) {
|
||||
|
||||
@ -306,6 +306,8 @@ private:
|
||||
int expansion_rows = 0;
|
||||
const uint32_t HOVERED_INDEX_NONE = UINT32_MAX;
|
||||
uint32_t hovered_index = HOVERED_INDEX_NONE;
|
||||
bool dragging = false;
|
||||
bool dragging_value_to_set = false;
|
||||
bool read_only = false;
|
||||
int renamed_layer_index = -1;
|
||||
PopupMenu *layer_rename = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user