|
@@ -562,6 +562,16 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ Ref<InputEventKey> k = p_event;
|
|
|
|
+ if (k.is_valid() && k->is_pressed() && !k->is_echo()) {
|
|
|
|
+ for (BaseButton *b : viewport_shortcut_buttons) {
|
|
|
|
+ if (b->get_shortcut().is_valid() && b->get_shortcut()->matches_event(p_event)) {
|
|
|
|
+ b->set_pressed(b->get_button_group().is_valid() || !b->is_pressed());
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
Ref<InputEventMouseMotion> mm = p_event;
|
|
Ref<InputEventMouseMotion> mm = p_event;
|
|
if (mm.is_valid()) {
|
|
if (mm.is_valid()) {
|
|
has_mouse = true;
|
|
has_mouse = true;
|
|
@@ -2075,6 +2085,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|
select_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/selection_tool", TTR("Selection"), Key::S));
|
|
select_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/selection_tool", TTR("Selection"), Key::S));
|
|
select_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
select_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(select_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(select_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(select_tool_button);
|
|
|
|
|
|
paint_tool_button = memnew(Button);
|
|
paint_tool_button = memnew(Button);
|
|
paint_tool_button->set_flat(true);
|
|
paint_tool_button->set_flat(true);
|
|
@@ -2084,6 +2095,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|
paint_tool_button->set_tooltip_text(TTR("Shift: Draw line.") + "\n" + TTR("Shift+Ctrl: Draw rectangle."));
|
|
paint_tool_button->set_tooltip_text(TTR("Shift: Draw line.") + "\n" + TTR("Shift+Ctrl: Draw rectangle."));
|
|
paint_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
paint_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(paint_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(paint_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(paint_tool_button);
|
|
|
|
|
|
line_tool_button = memnew(Button);
|
|
line_tool_button = memnew(Button);
|
|
line_tool_button->set_flat(true);
|
|
line_tool_button->set_flat(true);
|
|
@@ -2093,6 +2105,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|
line_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/line_tool", TTR("Line", "Tool"), Key::L));
|
|
line_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/line_tool", TTR("Line", "Tool"), Key::L));
|
|
line_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
line_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(line_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(line_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(line_tool_button);
|
|
|
|
|
|
rect_tool_button = memnew(Button);
|
|
rect_tool_button = memnew(Button);
|
|
rect_tool_button->set_flat(true);
|
|
rect_tool_button->set_flat(true);
|
|
@@ -2101,6 +2114,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|
rect_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/rect_tool", TTR("Rect"), Key::R));
|
|
rect_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/rect_tool", TTR("Rect"), Key::R));
|
|
rect_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
rect_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(rect_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(rect_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(rect_tool_button);
|
|
|
|
|
|
bucket_tool_button = memnew(Button);
|
|
bucket_tool_button = memnew(Button);
|
|
bucket_tool_button->set_flat(true);
|
|
bucket_tool_button->set_flat(true);
|
|
@@ -2110,6 +2124,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|
bucket_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
bucket_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(bucket_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(bucket_tool_button);
|
|
toolbar->add_child(tilemap_tiles_tools_buttons);
|
|
toolbar->add_child(tilemap_tiles_tools_buttons);
|
|
|
|
+ viewport_shortcut_buttons.push_back(bucket_tool_button);
|
|
|
|
|
|
// -- TileMap tool settings --
|
|
// -- TileMap tool settings --
|
|
tools_settings = memnew(HBoxContainer);
|
|
tools_settings = memnew(HBoxContainer);
|
|
@@ -2126,6 +2141,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|
picker_button->set_tooltip_text(TTR("Alternatively hold Ctrl with other tools to pick tile."));
|
|
picker_button->set_tooltip_text(TTR("Alternatively hold Ctrl with other tools to pick tile."));
|
|
picker_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
picker_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
tools_settings->add_child(picker_button);
|
|
tools_settings->add_child(picker_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(picker_button);
|
|
|
|
|
|
// Erase button.
|
|
// Erase button.
|
|
erase_button = memnew(Button);
|
|
erase_button = memnew(Button);
|
|
@@ -2135,6 +2151,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|
erase_button->set_tooltip_text(TTR("Alternatively use RMB to erase tiles."));
|
|
erase_button->set_tooltip_text(TTR("Alternatively use RMB to erase tiles."));
|
|
erase_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
erase_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
tools_settings->add_child(erase_button);
|
|
tools_settings->add_child(erase_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(erase_button);
|
|
|
|
|
|
// Separator 2.
|
|
// Separator 2.
|
|
tools_settings_vsep_2 = memnew(VSeparator);
|
|
tools_settings_vsep_2 = memnew(VSeparator);
|
|
@@ -2860,6 +2877,16 @@ bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent>
|
|
|
|
|
|
_update_selection();
|
|
_update_selection();
|
|
|
|
|
|
|
|
+ Ref<InputEventKey> k = p_event;
|
|
|
|
+ if (k.is_valid() && k->is_pressed() && !k->is_echo()) {
|
|
|
|
+ for (BaseButton *b : viewport_shortcut_buttons) {
|
|
|
|
+ if (b->get_shortcut().is_valid() && b->get_shortcut()->matches_event(p_event)) {
|
|
|
|
+ b->set_pressed(b->get_button_group().is_valid() || !b->is_pressed());
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
Ref<InputEventMouseMotion> mm = p_event;
|
|
Ref<InputEventMouseMotion> mm = p_event;
|
|
if (mm.is_valid()) {
|
|
if (mm.is_valid()) {
|
|
has_mouse = true;
|
|
has_mouse = true;
|
|
@@ -3388,6 +3415,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
|
|
paint_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/paint_tool", TTR("Paint"), Key::D));
|
|
paint_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/paint_tool", TTR("Paint"), Key::D));
|
|
paint_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
paint_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(paint_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(paint_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(paint_tool_button);
|
|
|
|
|
|
line_tool_button = memnew(Button);
|
|
line_tool_button = memnew(Button);
|
|
line_tool_button->set_flat(true);
|
|
line_tool_button->set_flat(true);
|
|
@@ -3396,6 +3424,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
|
|
line_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/line_tool", TTR("Line"), Key::L));
|
|
line_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/line_tool", TTR("Line"), Key::L));
|
|
line_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
line_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(line_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(line_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(line_tool_button);
|
|
|
|
|
|
rect_tool_button = memnew(Button);
|
|
rect_tool_button = memnew(Button);
|
|
rect_tool_button->set_flat(true);
|
|
rect_tool_button->set_flat(true);
|
|
@@ -3404,6 +3433,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
|
|
rect_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/rect_tool", TTR("Rect"), Key::R));
|
|
rect_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/rect_tool", TTR("Rect"), Key::R));
|
|
rect_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
rect_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(rect_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(rect_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(rect_tool_button);
|
|
|
|
|
|
bucket_tool_button = memnew(Button);
|
|
bucket_tool_button = memnew(Button);
|
|
bucket_tool_button->set_flat(true);
|
|
bucket_tool_button->set_flat(true);
|
|
@@ -3412,6 +3442,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
|
|
bucket_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/bucket_tool", TTR("Bucket"), Key::B));
|
|
bucket_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/bucket_tool", TTR("Bucket"), Key::B));
|
|
bucket_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
bucket_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_toolbar));
|
|
tilemap_tiles_tools_buttons->add_child(bucket_tool_button);
|
|
tilemap_tiles_tools_buttons->add_child(bucket_tool_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(bucket_tool_button);
|
|
|
|
|
|
toolbar->add_child(tilemap_tiles_tools_buttons);
|
|
toolbar->add_child(tilemap_tiles_tools_buttons);
|
|
|
|
|
|
@@ -3429,6 +3460,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
|
|
picker_button->set_shortcut(ED_SHORTCUT("tiles_editor/picker", TTR("Picker"), Key::P));
|
|
picker_button->set_shortcut(ED_SHORTCUT("tiles_editor/picker", TTR("Picker"), Key::P));
|
|
picker_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
picker_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
tools_settings->add_child(picker_button);
|
|
tools_settings->add_child(picker_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(picker_button);
|
|
|
|
|
|
// Erase button.
|
|
// Erase button.
|
|
erase_button = memnew(Button);
|
|
erase_button = memnew(Button);
|
|
@@ -3437,6 +3469,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
|
|
erase_button->set_shortcut(ED_SHORTCUT("tiles_editor/eraser", TTR("Eraser"), Key::E));
|
|
erase_button->set_shortcut(ED_SHORTCUT("tiles_editor/eraser", TTR("Eraser"), Key::E));
|
|
erase_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
erase_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
|
|
tools_settings->add_child(erase_button);
|
|
tools_settings->add_child(erase_button);
|
|
|
|
+ viewport_shortcut_buttons.push_back(erase_button);
|
|
|
|
|
|
// Separator 2.
|
|
// Separator 2.
|
|
tools_settings_vsep_2 = memnew(VSeparator);
|
|
tools_settings_vsep_2 = memnew(VSeparator);
|