From 05ea23c623ae7764c67d791441b24b083a9ba71a Mon Sep 17 00:00:00 2001 From: Garux Date: Fri, 11 May 2018 18:01:10 +0300 Subject: [PATCH] reimplement: * m1x2 on clipper point = do clip --- radiant/clippertool.h | 1 + radiant/selection.cpp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/radiant/clippertool.h b/radiant/clippertool.h index c98a1ad8..44027c08 100644 --- a/radiant/clippertool.h +++ b/radiant/clippertool.h @@ -48,5 +48,6 @@ void Clipper_Destroy(); void Clipper_modeChanged( bool isClipper ); bool Clipper_get2pointsIn2d(); void ClipperModeQuick(); +void Clipper_doClip(); #endif diff --git a/radiant/selection.cpp b/radiant/selection.cpp index c1b4640d..d8ca7e66 100644 --- a/radiant/selection.cpp +++ b/radiant/selection.cpp @@ -5532,11 +5532,15 @@ void mouseUp( DeviceVector position ){ typedef MemberCaller1 MouseUpCaller; }; - +#include "timer.h" class Manipulator_ { const DeviceVector& m_epsilon; const ModifierFlags& m_state; + +Timer m_timer; +bool m_timerDoubleClicked; + public: const View* m_view; @@ -5546,14 +5550,22 @@ bool m_mouseMovedWhilePressed; Manipulator_( const DeviceVector& epsilon, const ModifierFlags& state ) : m_epsilon( epsilon ), m_state( state ), + m_timerDoubleClicked( false ), m_moving_transformOrigin( false ), m_mouseMovedWhilePressed( false ) { } bool mouseDown( DeviceVector position ){ + m_timerDoubleClicked = m_timer.elapsed_msec() < 200; + m_timer.start(); return getSelectionSystem().SelectManipulator( *m_view, &position[0], &m_epsilon[0] ); } +void tryClipperDoubleClick() const { + if( m_timerDoubleClicked && getSelectionSystem().ManipulatorMode() == SelectionSystem::eClip ) + Clipper_doClip(); +} + void mouseMoved( DeviceVector position ){ if( m_mouseMovedWhilePressed ) getSelectionSystem().MoveSelected( *m_view, &position[0], bitfield_enabled( m_state, c_modifierShift ), @@ -5682,6 +5694,8 @@ void onMouseUp( const WindowVector& position, ButtonIdentifier button, ModifierF && getSelectionSystem().ManipulatorMode() != SelectionSystem::eClip ){ m_selector.testSelect_simpleM1( device( position ) ); } + m_manipulator.tryClipperDoubleClick(); + m_manipulator.m_moving_transformOrigin = false; m_selector.m_mouseMoved = false; m_selector.m_mouseMovedWhilePressed = false;