From bd8209958dfc2aa2677d7a9adff126c61685b77c Mon Sep 17 00:00:00 2001 From: andreja6 Date: Fri, 13 Mar 2020 18:50:48 -0700 Subject: [PATCH] New selection method, fixed crashing --- ArrowTool.cpp | 25 +++++++++++++++++++++++-- ArrowTool.h | 7 ++++++- Tool.cpp | 4 ++-- Tool.h | 4 ++-- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/ArrowTool.cpp b/ArrowTool.cpp index 784d57f..e89c63d 100644 --- a/ArrowTool.cpp +++ b/ArrowTool.cpp @@ -1,7 +1,10 @@ #include "ArrowTool.h" +#include "Application.h" ArrowTool::ArrowTool(void) { + lctrlDown = false; + rctrlDown = false; } ArrowTool::~ArrowTool(void) @@ -10,10 +13,14 @@ ArrowTool::~ArrowTool(void) void ArrowTool::onButton1MouseDown(Mouse mouse) { - g_selectedInstances.clear(); + if(!lctrlDown && !rctrlDown) + g_selectedInstances.clear(); PartInstance * target = mouse.getTarget(); - if(target != NULL) + if(target != NULL && std::find(g_selectedInstances.begin(), g_selectedInstances.end(), target) == g_selectedInstances.end()) g_selectedInstances.push_back(target); + if(g_selectedInstances.size() == 0) + g_selectedInstances.push_back(g_dataModel); + g_usableApp->_propWindow->UpdateSelected(g_selectedInstances[0]); } void ArrowTool::onMouseMoved(Mouse mouse) { @@ -25,4 +32,18 @@ void ArrowTool::onMouseMoved(Mouse mouse) void ArrowTool::onSelect(Mouse mouse) { this->setCursor(GetFileInPath("/content/images/ArrowCursor.png")); +} + +void ArrowTool::onKeyDown(int key) +{ + if(key == VK_CONTROL) + { + lctrlDown = true; + } +} + +void ArrowTool::onKeyUp(int key) +{ + if(key == VK_CONTROL) + lctrlDown = false; } \ No newline at end of file diff --git a/ArrowTool.h b/ArrowTool.h index 7f24e0b..5eb928c 100644 --- a/ArrowTool.h +++ b/ArrowTool.h @@ -9,5 +9,10 @@ public: ~ArrowTool(void); //OnDeselect? virtual void onButton1MouseDown(Mouse); virtual void onMouseMoved(Mouse mouse); - virtual void onSelect(Mouse mouse); //Why is this not being called + virtual void onSelect(Mouse mouse); + virtual void onKeyDown(int key); + virtual void onKeyUp(int key); +private: + bool lctrlDown; + bool rctrlDown; }; diff --git a/Tool.cpp b/Tool.cpp index 529f3af..25f8f93 100644 --- a/Tool.cpp +++ b/Tool.cpp @@ -20,8 +20,8 @@ void Tool::onMouseMoved(Mouse mouse){} void Tool::onSelect(Mouse mouse){} void Tool::onDeselect(Mouse mouse){} void Tool::onMouseScroll(Mouse mouse){} -void Tool::onKeyDown(char key){} -void Tool::onKeyUp(char key){} +void Tool::onKeyDown(int key){} +void Tool::onKeyUp(int key){} void Tool::setCursor(std::string str) { cursorString = str; diff --git a/Tool.h b/Tool.h index dc81f7d..292db3f 100644 --- a/Tool.h +++ b/Tool.h @@ -24,8 +24,8 @@ public: virtual void onSelect(Mouse);//yes virtual void onDeselect(Mouse);//yes virtual void onMouseScroll(Mouse);//Kinda - virtual void onKeyDown(char);//yes - virtual void onKeyUp(char);//yes + virtual void onKeyDown(int);//yes + virtual void onKeyUp(int);//yes virtual int getCursorId();//yes protected: virtual void setCursor(std::string);