]> git.xonotic.org Git - xonotic/netradiant.git/commitdiff
Merge commit '4616fea08c641887b841bffa3a974dae63b4c7e7' into garux-merge
authorThomas Debesse <dev@illwieckz.net>
Mon, 25 May 2020 18:20:41 +0000 (20:20 +0200)
committerThomas Debesse <dev@illwieckz.net>
Mon, 25 May 2020 18:20:41 +0000 (20:20 +0200)
radiant/camwindow.cpp
radiant/selection.cpp
radiant/xywindow.cpp

index 6fab7dc994da67aaa830d367751316f651e2ecd9..804d6461a71c16a759e8fe004e420cfad688982b 100644 (file)
@@ -794,7 +794,7 @@ void Camera_setAngles( CamWnd& camwnd, const Vector3& angles ){
 // CamWnd class
 
 gboolean enable_freelook_button_press( ui::Widget 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();
                return TRUE;
        }
@@ -802,7 +802,7 @@ gboolean enable_freelook_button_press( ui::Widget widget, GdkEventButton* event,
 }
 
 gboolean disable_freelook_button_press( ui::Widget 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();
                return TRUE;
        }
index c71dc6334b4cac52eca38c2b76358057fb713408..9801d193b86ba99e32e384b474e1fd61470b3579 100644 (file)
@@ -2784,11 +2784,12 @@ void SelectPoint( const View& view, const float device_point[2], const float dev
                        deselectAll();
                }
        }
-
+/*
+//nothingSelected() doesn't consider faces, selected in non-component mode, m
        if ( modifier == eCycle && nothingSelected() ){
                modifier = eReplace;
        }
-
+*/
   #if defined ( DEBUG_SELECTION )
        g_render_clipped.destroy();
   #endif
@@ -3498,11 +3499,13 @@ const ModifierFlags c_modifier_copy_texture = c_modifierNone;
 class Selector_
 {
 RadiantSelectionSystem::EModifier modifier_for_state( ModifierFlags state ){
-       if ( state == c_modifier_toggle || state == c_modifier_toggle_face ) {
-               return RadiantSelectionSystem::eToggle;
-       }
-       if ( state == c_modifier_replace || state == c_modifier_replace_face ) {
-               return RadiantSelectionSystem::eReplace;
+       if ( ( state == c_modifier_toggle || state == c_modifier_toggle_face || state == c_modifier_face ) ) {
+               if( m_mouse2 ){
+                       return RadiantSelectionSystem::eReplace;
+               }
+               else{
+                       return RadiantSelectionSystem::eToggle;
+               }
        }
        return RadiantSelectionSystem::eManipulator;
 }
@@ -3524,10 +3527,11 @@ DeviceVector m_start;
 DeviceVector m_current;
 DeviceVector m_epsilon;
 ModifierFlags m_state;
+bool m_mouse2;
 const View* m_view;
 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(){
@@ -3670,7 +3674,7 @@ void onSizeChanged( int width, int height ){
        m_selector.m_epsilon = m_manipulator.m_epsilon = epsilon;
 }
 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;
 
                DeviceVector devicePosition( window_to_normalised_device( position, m_width, m_height ) );
@@ -3681,6 +3685,12 @@ void onMouseDown( const WindowVector& position, ButtonIdentifier button, Modifie
                else
                {
                        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_mouseUpCallback.insert( MouseEventCallback( Selector_::MouseUpCaller( m_selector ) ) );
                }
@@ -3706,7 +3716,7 @@ void onMouseMotion( const WindowVector& position, 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;
 
                g_mouseUpCallback.get() ( window_to_normalised_device( position, m_width, m_height ) );
index 3883a7a5ac1b0423751977450a9cd8801664dd66..daf0a3c94f71163457ed02226287bd651395461a 100644 (file)
@@ -1221,7 +1221,7 @@ void XYWnd::Move_End(){
 }
 
 unsigned int Zoom_buttons(){
-       return RAD_RBUTTON | RAD_SHIFT;
+       return RAD_RBUTTON | RAD_ALT;
 }
 
 int g_dragZoom = 0;