Press escape to deselect, stop editing elements, and go back to edit tool
This commit is contained in:
parent
762016be4c
commit
b58e11c703
9 changed files with 22 additions and 21 deletions
|
|
@ -344,8 +344,6 @@ void DrawingProgram::update() {
|
|||
switch_to_tool(DrawingProgramToolType::EYEDROPPER);
|
||||
else if(world.main.input.key(InputManager::KEY_DRAW_TOOL_SCREENSHOT).pressed)
|
||||
switch_to_tool(DrawingProgramToolType::SCREENSHOT);
|
||||
else if(world.main.input.key(InputManager::KEY_DRAW_TOOL_EDIT).pressed)
|
||||
switch_to_tool(DrawingProgramToolType::EDIT);
|
||||
|
||||
selection.update();
|
||||
drawTool->tool_update();
|
||||
|
|
@ -366,13 +364,17 @@ void DrawingProgram::update() {
|
|||
compCache.test_rebuild(components.client_list());
|
||||
}
|
||||
|
||||
bool DrawingProgram::is_selection_tool(DrawingProgramToolType typeToCheck) {
|
||||
return typeToCheck == DrawingProgramToolType::RECTSELECT || typeToCheck == DrawingProgramToolType::LASSOSELECT || typeToCheck == DrawingProgramToolType::EDIT;
|
||||
}
|
||||
|
||||
void DrawingProgram::switch_to_tool_ptr(std::unique_ptr<DrawingProgramToolBase> newTool) {
|
||||
drawTool->switch_tool(newTool->get_type());
|
||||
drawTool = std::move(newTool);
|
||||
}
|
||||
|
||||
void DrawingProgram::switch_to_tool(DrawingProgramToolType newToolType) {
|
||||
if(newToolType != drawTool->get_type()) {
|
||||
void DrawingProgram::switch_to_tool(DrawingProgramToolType newToolType, bool force) {
|
||||
if(newToolType != drawTool->get_type() || force) {
|
||||
drawTool->switch_tool(newToolType);
|
||||
drawTool = DrawingProgramToolBase::allocate_tool_type(*this, newToolType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class DrawingProgram {
|
|||
|
||||
Vector4f* get_foreground_color_ptr();
|
||||
|
||||
void switch_to_tool(DrawingProgramToolType newToolType);
|
||||
void switch_to_tool(DrawingProgramToolType newToolType, bool force = false);
|
||||
void switch_to_tool_ptr(std::unique_ptr<DrawingProgramToolBase> newTool);
|
||||
|
||||
void clear_draw_cache();
|
||||
|
|
@ -95,6 +95,8 @@ class DrawingProgram {
|
|||
bool temporaryPan = false;
|
||||
DrawingProgramToolType toolTypeAfterTempPan;
|
||||
|
||||
bool is_selection_tool(DrawingProgramToolType typeToCheck);
|
||||
|
||||
struct GlobalControls {
|
||||
float relativeWidth = 15.0f;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "DrawingProgram.hpp"
|
||||
#include "../World.hpp"
|
||||
#include "../MainProgram.hpp"
|
||||
#include "DrawingProgramToolBase.hpp"
|
||||
#include "Helpers/FixedPoint.hpp"
|
||||
#include <Helpers/MathExtras.hpp>
|
||||
#include <Helpers/SCollision.hpp>
|
||||
|
|
@ -368,13 +369,13 @@ void DrawingProgramSelection::update() {
|
|||
break;
|
||||
}
|
||||
|
||||
if(drawP.world.main.input.key(InputManager::KEY_DRAW_UNSELECT).pressed)
|
||||
if(drawP.world.main.input.key(InputManager::KEY_GENERIC_ESCAPE).pressed)
|
||||
deselect_all();
|
||||
else if(drawP.world.main.input.key(InputManager::KEY_DRAW_DELETE).pressed)
|
||||
delete_all();
|
||||
else if(drawP.world.main.input.key(InputManager::KEY_COPY).pressed && selectionTransformCoords == CoordSpaceHelperTransform())
|
||||
else if(drawP.world.main.input.key(InputManager::KEY_COPY).pressed && !is_being_transformed())
|
||||
selection_to_clipboard();
|
||||
else if(drawP.world.main.input.key(InputManager::KEY_CUT).pressed && selectionTransformCoords == CoordSpaceHelperTransform()) {
|
||||
else if(drawP.world.main.input.key(InputManager::KEY_CUT).pressed && !is_being_transformed()) {
|
||||
selection_to_clipboard();
|
||||
delete_all();
|
||||
}
|
||||
|
|
@ -385,6 +386,8 @@ void DrawingProgramSelection::update() {
|
|||
}
|
||||
else if(drawP.world.main.input.key(InputManager::KEY_PASTE).pressed && !drawP.prevent_undo_or_redo())
|
||||
paste_clipboard();
|
||||
else if(drawP.world.main.input.key(InputManager::KEY_GENERIC_ESCAPE).pressed)
|
||||
drawP.switch_to_tool(DrawingProgramToolType::EDIT, true);
|
||||
}
|
||||
|
||||
bool DrawingProgramSelection::is_being_transformed() {
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ void EditTool::switch_tool(DrawingProgramToolType newTool) {
|
|||
controls.pointDragging = nullptr;
|
||||
controls.isEditing = false;
|
||||
|
||||
if(newTool != DrawingProgramToolType::RECTSELECT && newTool != DrawingProgramToolType::LASSOSELECT && newTool != DrawingProgramToolType::EDIT)
|
||||
if(!drawP.is_selection_tool(newTool))
|
||||
drawP.selection.deselect_all();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ void LassoSelectTool::gui_toolbox() {
|
|||
}
|
||||
|
||||
void LassoSelectTool::switch_tool(DrawingProgramToolType newTool) {
|
||||
if(newTool != DrawingProgramToolType::RECTSELECT && newTool != DrawingProgramToolType::LASSOSELECT && newTool != DrawingProgramToolType::EDIT)
|
||||
if(!drawP.is_selection_tool(newTool))
|
||||
drawP.selection.deselect_all();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ void RectSelectTool::gui_toolbox() {
|
|||
}
|
||||
|
||||
void RectSelectTool::switch_tool(DrawingProgramToolType newTool) {
|
||||
if(newTool != DrawingProgramToolType::RECTSELECT && newTool != DrawingProgramToolType::LASSOSELECT && newTool != DrawingProgramToolType::EDIT)
|
||||
if(!drawP.is_selection_tool(newTool))
|
||||
drawP.selection.deselect_all();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ InputManager::InputManager() {
|
|||
defaultKeyAssignments[{0, SDLK_W}] = KEY_CAMERA_ROTATE_COUNTERCLOCKWISE;
|
||||
defaultKeyAssignments[{0, SDLK_Q}] = KEY_CAMERA_ROTATE_CLOCKWISE;
|
||||
defaultKeyAssignments[{0, SDLK_DELETE}] = KEY_DRAW_DELETE;
|
||||
defaultKeyAssignments[{0, SDLK_ESCAPE}] = KEY_DRAW_UNSELECT;
|
||||
defaultKeyAssignments[{CTRL_MOD, SDLK_Z}] = KEY_UNDO;
|
||||
defaultKeyAssignments[{CTRL_MOD, SDLK_R}] = KEY_REDO;
|
||||
defaultKeyAssignments[{0, SDLK_TAB}] = KEY_NOGUI;
|
||||
|
|
@ -40,7 +39,6 @@ InputManager::InputManager() {
|
|||
defaultKeyAssignments[{0, SDLK_C}] = KEY_DRAW_TOOL_ELLIPSE;
|
||||
defaultKeyAssignments[{0, SDLK_X}] = KEY_DRAW_TOOL_RECTSELECT;
|
||||
defaultKeyAssignments[{0, SDLK_I}] = KEY_DRAW_TOOL_EYEDROPPER;
|
||||
defaultKeyAssignments[{0, SDLK_S}] = KEY_DRAW_TOOL_EDIT;
|
||||
defaultKeyAssignments[{0, SDLK_P}] = KEY_DRAW_TOOL_SCREENSHOT;
|
||||
defaultKeyAssignments[{0, SDLK_F1}] = KEY_OPEN_CHAT;
|
||||
defaultKeyAssignments[{0, SDLK_F3}] = KEY_SHOW_METRICS;
|
||||
|
|
@ -259,7 +257,7 @@ void InputManager::backend_key_down_update(const SDL_KeyboardEvent& e) {
|
|||
set_key_down(e, KEY_TEXT_ENTER);
|
||||
break;
|
||||
case SDLK_ESCAPE:
|
||||
set_key_down(e, KEY_TEXT_ESCAPE);
|
||||
set_key_down(e, KEY_GENERIC_ESCAPE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -326,7 +324,7 @@ void InputManager::backend_key_up_update(const SDL_KeyboardEvent& e) {
|
|||
set_key_up(e, KEY_TEXT_ENTER);
|
||||
break;
|
||||
case SDLK_ESCAPE:
|
||||
set_key_up(e, KEY_TEXT_ESCAPE);
|
||||
set_key_up(e, KEY_GENERIC_ESCAPE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -113,7 +113,6 @@ struct InputManager {
|
|||
KEY_CAMERA_ROTATE_CLOCKWISE = 0,
|
||||
KEY_CAMERA_ROTATE_COUNTERCLOCKWISE,
|
||||
KEY_DRAW_DELETE,
|
||||
KEY_DRAW_UNSELECT,
|
||||
KEY_UNDO,
|
||||
KEY_REDO,
|
||||
KEY_NOGUI,
|
||||
|
|
@ -129,7 +128,6 @@ struct InputManager {
|
|||
KEY_DRAW_TOOL_RECTANGLE,
|
||||
KEY_DRAW_TOOL_ELLIPSE,
|
||||
KEY_DRAW_TOOL_RECTSELECT,
|
||||
KEY_DRAW_TOOL_EDIT,
|
||||
KEY_DRAW_TOOL_EYEDROPPER,
|
||||
KEY_DRAW_TOOL_SCREENSHOT,
|
||||
KEY_SHOW_METRICS,
|
||||
|
|
@ -154,7 +152,7 @@ struct InputManager {
|
|||
KEY_TEXT_ENTER,
|
||||
KEY_TEXT_CTRL,
|
||||
KEY_TEXT_SELECTALL,
|
||||
KEY_TEXT_ESCAPE,
|
||||
KEY_GENERIC_ESCAPE,
|
||||
KEY_GENERIC_LSHIFT,
|
||||
KEY_GENERIC_LALT,
|
||||
KEY_GENERIC_LCTRL,
|
||||
|
|
@ -196,7 +194,6 @@ NLOHMANN_JSON_SERIALIZE_ENUM(InputManager::KeyCodeEnum, {
|
|||
{InputManager::KEY_CAMERA_ROTATE_CLOCKWISE, "Rotate Canvas CW"},
|
||||
{InputManager::KEY_CAMERA_ROTATE_COUNTERCLOCKWISE, "Rotate Canvas CCW"},
|
||||
{InputManager::KEY_DRAW_DELETE, "Delete Selection"},
|
||||
{InputManager::KEY_DRAW_UNSELECT, "Unselect Elements"},
|
||||
{InputManager::KEY_UNDO, "Undo"},
|
||||
{InputManager::KEY_REDO, "Redo"},
|
||||
{InputManager::KEY_NOGUI, "Toggle GUI"},
|
||||
|
|
@ -213,7 +210,6 @@ NLOHMANN_JSON_SERIALIZE_ENUM(InputManager::KeyCodeEnum, {
|
|||
{InputManager::KEY_DRAW_TOOL_ELLIPSE, "Ellipse Tool"},
|
||||
{InputManager::KEY_DRAW_TOOL_RECTSELECT, "Rect Select Tool"},
|
||||
{InputManager::KEY_DRAW_TOOL_EYEDROPPER, "Color Select Tool"},
|
||||
{InputManager::KEY_DRAW_TOOL_EDIT, "Edit Tool"},
|
||||
{InputManager::KEY_DRAW_TOOL_SCREENSHOT, "Screenshot Tool"},
|
||||
{InputManager::KEY_SHOW_METRICS, "Show Metrics"},
|
||||
{InputManager::KEY_OPEN_CHAT, "Open Chat"},
|
||||
|
|
|
|||
|
|
@ -784,7 +784,7 @@ void Toolbar::chat_box() {
|
|||
t.selection.selected = true;
|
||||
chatBoxState = CHATBOXSTATE_OPEN;
|
||||
}
|
||||
if(main.input.key(InputManager::KEY_TEXT_ESCAPE).pressed)
|
||||
if(main.input.key(InputManager::KEY_GENERIC_ESCAPE).pressed)
|
||||
t.selection.selected = false;
|
||||
if(main.input.key(InputManager::KEY_TEXT_ENTER).pressed) {
|
||||
main.world->send_chat_message(chatMessageInput);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue