Fix SLA supports partialy
This commit is contained in:
parent
74cf6649f3
commit
46044a210f
1 changed files with 35 additions and 5 deletions
|
@ -1123,20 +1123,50 @@ bool GLGizmoSlaSupports::on_mouse(const wxMouseEvent &mouse_event){
|
|||
Selection &selection = m_parent.get_selection();
|
||||
static bool pending_right_up = false;
|
||||
|
||||
if (mouse_event.RightDown() &&
|
||||
selection.get_object_idx() != -1 &&
|
||||
// when control is down we allow scene pan and rotation even when clicking
|
||||
// over some object
|
||||
bool control_down = mouse_event.CmdDown();
|
||||
bool grabber_contains_mouse = (get_hover_id() != -1);
|
||||
int selected_object_idx = selection.get_object_idx();
|
||||
if (mouse_event.LeftDown() && (!control_down || grabber_contains_mouse)) {
|
||||
if (gizmo_event(SLAGizmoEventType::LeftDown, mouse_pos,
|
||||
mouse_event.ShiftDown(), mouse_event.AltDown(), false))
|
||||
return true;
|
||||
} else if (mouse_event.Dragging()) {
|
||||
if (m_parent.get_move_volume_id() != -1) {
|
||||
// don't allow dragging objects with the Sla gizmo on
|
||||
return true;
|
||||
} else if (!control_down &&
|
||||
gizmo_event(SLAGizmoEventType::Dragging, mouse_pos,
|
||||
mouse_event.ShiftDown(), mouse_event.AltDown(), false)) {
|
||||
// the gizmo got the event and took some action, no need to do
|
||||
// anything more here
|
||||
m_parent.set_as_dirty();
|
||||
return true;
|
||||
} else if (control_down && (mouse_event.LeftIsDown() || mouse_event.RightIsDown())){
|
||||
// CTRL has been pressed while already dragging -> stop current action
|
||||
if (mouse_event.LeftIsDown())
|
||||
gizmo_event(SLAGizmoEventType::LeftUp, mouse_pos, mouse_event.ShiftDown(), mouse_event.AltDown(), true);
|
||||
else if (mouse_event.RightIsDown())
|
||||
gizmo_event(SLAGizmoEventType::RightUp, mouse_pos, mouse_event.ShiftDown(), mouse_event.AltDown(), true);
|
||||
}
|
||||
} else if (mouse_event.LeftUp() && !m_parent.is_mouse_dragging()) {
|
||||
// in case SLA/FDM gizmo is selected, we just pass the LeftUp event
|
||||
// and stop processing - neither object moving or selecting is
|
||||
// suppressed in that case
|
||||
gizmo_event(SLAGizmoEventType::LeftUp, mouse_pos, mouse_event.ShiftDown(), mouse_event.AltDown(), control_down);
|
||||
return true;
|
||||
}else if (mouse_event.RightDown() && selection.get_object_idx() != -1 &&
|
||||
gizmo_event(SLAGizmoEventType::RightDown, mouse_pos, false, false, false)) {
|
||||
// we need to set the following right up as processed to avoid showing
|
||||
// the context menu if the user release the mouse over the object
|
||||
pending_right_up = true;
|
||||
// event was taken care of by the SlaSupports gizmo
|
||||
return true;
|
||||
}
|
||||
if (pending_right_up && mouse_event.RightUp()) {
|
||||
} else if (pending_right_up && mouse_event.RightUp()) {
|
||||
pending_right_up = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue