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 );
bool Clipper_get2pointsIn2d();
void ClipperModeQuick();
void Clipper_doClip();
#endif

View File

@ -5532,11 +5532,15 @@ void mouseUp( DeviceVector position ){
typedef MemberCaller1<Selector_, DeviceVector, &Selector_::mouseUp> 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;