reimplement: * m1x2 on clipper point = do clip

This commit is contained in:
Garux 2018-05-11 18:01:10 +03:00
parent a42709f80a
commit 05ea23c623
2 changed files with 16 additions and 1 deletions

View File

@ -48,5 +48,6 @@ void Clipper_Destroy();
void Clipper_modeChanged( bool isClipper ); void Clipper_modeChanged( bool isClipper );
bool Clipper_get2pointsIn2d(); bool Clipper_get2pointsIn2d();
void ClipperModeQuick(); void ClipperModeQuick();
void Clipper_doClip();
#endif #endif

View File

@ -5532,11 +5532,15 @@ void mouseUp( DeviceVector position ){
typedef MemberCaller1<Selector_, DeviceVector, &Selector_::mouseUp> MouseUpCaller; typedef MemberCaller1<Selector_, DeviceVector, &Selector_::mouseUp> MouseUpCaller;
}; };
#include "timer.h"
class Manipulator_ class Manipulator_
{ {
const DeviceVector& m_epsilon; const DeviceVector& m_epsilon;
const ModifierFlags& m_state; const ModifierFlags& m_state;
Timer m_timer;
bool m_timerDoubleClicked;
public: public:
const View* m_view; const View* m_view;
@ -5546,14 +5550,22 @@ bool m_mouseMovedWhilePressed;
Manipulator_( const DeviceVector& epsilon, const ModifierFlags& state ) : Manipulator_( const DeviceVector& epsilon, const ModifierFlags& state ) :
m_epsilon( epsilon ), m_epsilon( epsilon ),
m_state( state ), m_state( state ),
m_timerDoubleClicked( false ),
m_moving_transformOrigin( false ), m_moving_transformOrigin( false ),
m_mouseMovedWhilePressed( false ) { m_mouseMovedWhilePressed( false ) {
} }
bool mouseDown( DeviceVector position ){ bool mouseDown( DeviceVector position ){
m_timerDoubleClicked = m_timer.elapsed_msec() < 200;
m_timer.start();
return getSelectionSystem().SelectManipulator( *m_view, &position[0], &m_epsilon[0] ); 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 ){ void mouseMoved( DeviceVector position ){
if( m_mouseMovedWhilePressed ) if( m_mouseMovedWhilePressed )
getSelectionSystem().MoveSelected( *m_view, &position[0], bitfield_enabled( m_state, c_modifierShift ), 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 ){ && getSelectionSystem().ManipulatorMode() != SelectionSystem::eClip ){
m_selector.testSelect_simpleM1( device( position ) ); m_selector.testSelect_simpleM1( device( position ) );
} }
m_manipulator.tryClipperDoubleClick();
m_manipulator.m_moving_transformOrigin = false; m_manipulator.m_moving_transformOrigin = false;
m_selector.m_mouseMoved = false; m_selector.m_mouseMoved = false;
m_selector.m_mouseMovedWhilePressed = false; m_selector.m_mouseMovedWhilePressed = false;