New selection method, fixed crashing

This commit is contained in:
andreja6
2020-03-13 18:50:48 -07:00
parent f08799d49c
commit bd8209958d
4 changed files with 33 additions and 7 deletions

View File

@@ -1,7 +1,10 @@
#include "ArrowTool.h" #include "ArrowTool.h"
#include "Application.h"
ArrowTool::ArrowTool(void) ArrowTool::ArrowTool(void)
{ {
lctrlDown = false;
rctrlDown = false;
} }
ArrowTool::~ArrowTool(void) ArrowTool::~ArrowTool(void)
@@ -10,10 +13,14 @@ ArrowTool::~ArrowTool(void)
void ArrowTool::onButton1MouseDown(Mouse mouse) void ArrowTool::onButton1MouseDown(Mouse mouse)
{ {
if(!lctrlDown && !rctrlDown)
g_selectedInstances.clear(); g_selectedInstances.clear();
PartInstance * target = mouse.getTarget(); 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); 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) void ArrowTool::onMouseMoved(Mouse mouse)
{ {
@@ -26,3 +33,17 @@ void ArrowTool::onSelect(Mouse mouse)
{ {
this->setCursor(GetFileInPath("/content/images/ArrowCursor.png")); 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;
}

View File

@@ -9,5 +9,10 @@ public:
~ArrowTool(void); //OnDeselect? ~ArrowTool(void); //OnDeselect?
virtual void onButton1MouseDown(Mouse); virtual void onButton1MouseDown(Mouse);
virtual void onMouseMoved(Mouse 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;
}; };

View File

@@ -20,8 +20,8 @@ void Tool::onMouseMoved(Mouse mouse){}
void Tool::onSelect(Mouse mouse){} void Tool::onSelect(Mouse mouse){}
void Tool::onDeselect(Mouse mouse){} void Tool::onDeselect(Mouse mouse){}
void Tool::onMouseScroll(Mouse mouse){} void Tool::onMouseScroll(Mouse mouse){}
void Tool::onKeyDown(char key){} void Tool::onKeyDown(int key){}
void Tool::onKeyUp(char key){} void Tool::onKeyUp(int key){}
void Tool::setCursor(std::string str) void Tool::setCursor(std::string str)
{ {
cursorString = str; cursorString = str;

4
Tool.h
View File

@@ -24,8 +24,8 @@ public:
virtual void onSelect(Mouse);//yes virtual void onSelect(Mouse);//yes
virtual void onDeselect(Mouse);//yes virtual void onDeselect(Mouse);//yes
virtual void onMouseScroll(Mouse);//Kinda virtual void onMouseScroll(Mouse);//Kinda
virtual void onKeyDown(char);//yes virtual void onKeyDown(int);//yes
virtual void onKeyUp(char);//yes virtual void onKeyUp(int);//yes
virtual int getCursorId();//yes virtual int getCursorId();//yes
protected: protected:
virtual void setCursor(std::string); virtual void setCursor(std::string);