ctrl=face selector m2=cycle

This commit is contained in:
Garux 2017-08-02 09:01:50 +03:00
parent 91f0982380
commit 4616fea08c
3 changed files with 23 additions and 13 deletions

View File

@ -800,7 +800,7 @@ void Camera_setAngles( CamWnd& camwnd, const Vector3& angles ){
// CamWnd class // CamWnd class
gboolean enable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){ gboolean enable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){
if ( event->type == GDK_BUTTON_PRESS && event->button == 3 ) { if ( event->type == GDK_BUTTON_PRESS && event->button == 3 && modifiers_for_state( event->state ) == c_modifierNone ) {
camwnd->EnableFreeMove(); camwnd->EnableFreeMove();
return TRUE; return TRUE;
} }
@ -808,7 +808,7 @@ gboolean enable_freelook_button_press( GtkWidget* widget, GdkEventButton* event,
} }
gboolean disable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){ gboolean disable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){
if ( event->type == GDK_BUTTON_PRESS && event->button == 3 ) { if ( event->type == GDK_BUTTON_PRESS && event->button == 3 && modifiers_for_state( event->state ) == c_modifierNone ) {
camwnd->DisableFreeMove(); camwnd->DisableFreeMove();
return TRUE; return TRUE;
} }

View File

@ -2780,11 +2780,12 @@ void SelectPoint( const View& view, const float device_point[2], const float dev
deselectAll(); deselectAll();
} }
} }
/*
//nothingSelected() doesn't consider faces, selected in non-component mode, m
if ( modifier == eCycle && nothingSelected() ){ if ( modifier == eCycle && nothingSelected() ){
modifier = eReplace; modifier = eReplace;
} }
*/
#if defined ( DEBUG_SELECTION ) #if defined ( DEBUG_SELECTION )
g_render_clipped.destroy(); g_render_clipped.destroy();
#endif #endif
@ -3494,11 +3495,13 @@ const ModifierFlags c_modifier_copy_texture = c_modifierNone;
class Selector_ class Selector_
{ {
RadiantSelectionSystem::EModifier modifier_for_state( ModifierFlags state ){ RadiantSelectionSystem::EModifier modifier_for_state( ModifierFlags state ){
if ( state == c_modifier_toggle || state == c_modifier_toggle_face ) { if ( ( state == c_modifier_toggle || state == c_modifier_toggle_face || state == c_modifier_face ) ) {
return RadiantSelectionSystem::eToggle; if( m_mouse2 ){
} return RadiantSelectionSystem::eReplace;
if ( state == c_modifier_replace || state == c_modifier_replace_face ) { }
return RadiantSelectionSystem::eReplace; else{
return RadiantSelectionSystem::eToggle;
}
} }
return RadiantSelectionSystem::eManipulator; return RadiantSelectionSystem::eManipulator;
} }
@ -3520,10 +3523,11 @@ DeviceVector m_start;
DeviceVector m_current; DeviceVector m_current;
DeviceVector m_epsilon; DeviceVector m_epsilon;
ModifierFlags m_state; ModifierFlags m_state;
bool m_mouse2;
const View* m_view; const View* m_view;
RectangleCallback m_window_update; RectangleCallback m_window_update;
Selector_() : m_start( 0.0f, 0.0f ), m_current( 0.0f, 0.0f ), m_state( c_modifierNone ){ Selector_() : m_start( 0.0f, 0.0f ), m_current( 0.0f, 0.0f ), m_state( c_modifierNone ), m_mouse2( false ){
} }
void draw_area(){ void draw_area(){
@ -3666,7 +3670,7 @@ void onSizeChanged( int width, int height ){
m_selector.m_epsilon = m_manipulator.m_epsilon = epsilon; m_selector.m_epsilon = m_manipulator.m_epsilon = epsilon;
} }
void onMouseDown( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){ void onMouseDown( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){
if ( button == c_button_select ) { if ( button == c_button_select || ( button == c_button_select2 && modifiers != c_modifierNone ) ) {
m_mouse_down = true; m_mouse_down = true;
DeviceVector devicePosition( window_to_normalised_device( position, m_width, m_height ) ); DeviceVector devicePosition( window_to_normalised_device( position, m_width, m_height ) );
@ -3677,6 +3681,12 @@ void onMouseDown( const WindowVector& position, ButtonIdentifier button, Modifie
else else
{ {
m_selector.mouseDown( devicePosition ); m_selector.mouseDown( devicePosition );
if ( button == c_button_select ) {
m_selector.m_mouse2 = false;
}
else{
m_selector.m_mouse2 = true;
}
g_mouseMovedCallback.insert( MouseEventCallback( Selector_::MouseMovedCaller( m_selector ) ) ); g_mouseMovedCallback.insert( MouseEventCallback( Selector_::MouseMovedCaller( m_selector ) ) );
g_mouseUpCallback.insert( MouseEventCallback( Selector_::MouseUpCaller( m_selector ) ) ); g_mouseUpCallback.insert( MouseEventCallback( Selector_::MouseUpCaller( m_selector ) ) );
} }
@ -3702,7 +3712,7 @@ void onMouseMotion( const WindowVector& position, ModifierFlags modifiers ){
} }
} }
void onMouseUp( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){ void onMouseUp( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){
if ( button == c_button_select && !g_mouseUpCallback.empty() ) { if ( ( button == c_button_select || button == c_button_select2 ) && !g_mouseUpCallback.empty() ) {
m_mouse_down = false; m_mouse_down = false;
g_mouseUpCallback.get() ( window_to_normalised_device( position, m_width, m_height ) ); g_mouseUpCallback.get() ( window_to_normalised_device( position, m_width, m_height ) );

View File

@ -1216,7 +1216,7 @@ void XYWnd::Move_End(){
} }
unsigned int Zoom_buttons(){ unsigned int Zoom_buttons(){
return RAD_RBUTTON | RAD_SHIFT; return RAD_RBUTTON | RAD_ALT;
} }
int g_dragZoom = 0; int g_dragZoom = 0;