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 "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;
}

View File

@@ -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;
};

View File

@@ -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;

4
Tool.h
View File

@@ -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);