Clipboard introduced, but not incorporated yet. Some defines for convenience and better readability.
This commit is contained in:
+17
-11
@@ -19,18 +19,21 @@ namespace VISEQ::BASE {
|
||||
bool picked_up = false;
|
||||
|
||||
virtual bool pickedUp() {
|
||||
if(clicked() && held() && (state->istate == APP::InteractionState::HOVER_NODE || state->istate == APP::InteractionState::DRAG_NODE)) {
|
||||
if(clicked() && held() && (STATE == IState::HOVER_NODE || STATE == IState::DRAG_NODE)) {
|
||||
picked_up = true;
|
||||
drag_offset = position - state->screen_mouse;
|
||||
drag_offset = position - SCREEN_MOUSE;
|
||||
}
|
||||
return picked_up;
|
||||
}
|
||||
|
||||
virtual void drag() {
|
||||
if(state->keys_down.ctrl){
|
||||
position = state->mod_mouse;
|
||||
if(KEYS_PRESSED.ctrl){
|
||||
selection_offset = position - state->hover_position;
|
||||
}
|
||||
if(KEYS_DOWN.ctrl){
|
||||
position = MOD_MOUSE + selection_offset;
|
||||
} else {
|
||||
position = state->mod_mouse + drag_offset;
|
||||
position = MOD_MOUSE + drag_offset;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,20 +42,23 @@ namespace VISEQ::BASE {
|
||||
}
|
||||
|
||||
virtual void select() override {
|
||||
selected = (state->keys_down.shift && selected) || CheckCollisionPointRec(position, state->selection);
|
||||
if(STATE == IState::DRAW_SELECTION) in_selection_rect = CheckCollisionPointRec(position, state->selection);
|
||||
if(MOUSE_LEFT.released) selected = (KEYS_DOWN.shift && selected) || in_selection_rect;
|
||||
}
|
||||
|
||||
virtual void update() override {
|
||||
if((held() && !picked_up) || (clicked() && !state->keys_down.shift)) select();
|
||||
if(entered()) state->istate = APP::InteractionState::HOVER_NODE;
|
||||
if(exited()) state->istate = APP::InteractionState::HOVER_CANVAS;
|
||||
if(STATE != IState::HOVER_NODE) select();
|
||||
if(entered()){
|
||||
STATE = IState::HOVER_NODE;
|
||||
}
|
||||
if(exited()) STATE = IState::HOVER_CANVAS;
|
||||
if(pickedUp()){
|
||||
drag();
|
||||
state->istate = APP::InteractionState::DRAG_NODE;
|
||||
STATE = IState::DRAG_NODE;
|
||||
}
|
||||
if(released() && picked_up){
|
||||
putDown();
|
||||
state->istate = APP::InteractionState::HOVER_CANVAS;
|
||||
STATE = IState::HOVER_CANVAS;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user