File tree Expand file tree Collapse file tree 2 files changed +24
-0
lines changed Expand file tree Collapse file tree 2 files changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -60,8 +60,10 @@ EditorOverlayWidget::EditorOverlayWidget(Editor& editor) :
60
60
m_hovered_corner(0 , 0 ),
61
61
m_sector_pos(0 , 0 ),
62
62
m_mouse_pos(0 , 0 ),
63
+ m_previous_mouse_pos(0 , 0 ),
63
64
m_dragging(false ),
64
65
m_dragging_right(false ),
66
+ m_scrolling(false ),
65
67
m_drag_start(0 , 0 ),
66
68
m_dragged_object(nullptr ),
67
69
m_hovered_object(nullptr ),
@@ -859,6 +861,13 @@ EditorOverlayWidget::process_right_click()
859
861
}
860
862
}
861
863
864
+ void
865
+ EditorOverlayWidget::process_middle_click ()
866
+ {
867
+ m_previous_mouse_pos = m_mouse_pos;
868
+ m_scrolling = true ;
869
+ }
870
+
862
871
Rectf
863
872
EditorOverlayWidget::tile_drag_rect () const
864
873
{
@@ -926,6 +935,8 @@ EditorOverlayWidget::on_mouse_button_up(const SDL_MouseButtonEvent& button)
926
935
}
927
936
}
928
937
}
938
+ else if (button.button == SDL_BUTTON_MIDDLE)
939
+ m_scrolling = false ;
929
940
930
941
m_dragging = false ;
931
942
@@ -947,6 +958,10 @@ EditorOverlayWidget::on_mouse_button_down(const SDL_MouseButtonEvent& button)
947
958
process_right_click ();
948
959
return true ;
949
960
961
+ case SDL_BUTTON_MIDDLE:
962
+ process_middle_click ();
963
+ return true ;
964
+
950
965
default :
951
966
return false ;
952
967
}
@@ -994,6 +1009,12 @@ EditorOverlayWidget::on_mouse_motion(const SDL_MouseMotionEvent& motion)
994
1009
}
995
1010
return true ;
996
1011
}
1012
+ else if (m_scrolling)
1013
+ {
1014
+ m_editor.scroll (m_previous_mouse_pos - m_mouse_pos);
1015
+ m_previous_mouse_pos = m_mouse_pos;
1016
+ return true ;
1017
+ }
997
1018
else
998
1019
{
999
1020
return false ;
Original file line number Diff line number Diff line change @@ -102,6 +102,7 @@ class EditorOverlayWidget final : public Widget
102
102
103
103
void process_left_click ();
104
104
void process_right_click ();
105
+ void process_middle_click ();
105
106
106
107
// sp is sector pos, tp is pos on tilemap.
107
108
Vector tp_to_sp (const Vector& tp, int tile_size = 32 ) const ;
@@ -121,9 +122,11 @@ class EditorOverlayWidget final : public Widget
121
122
Vector m_hovered_corner;
122
123
Vector m_sector_pos;
123
124
Vector m_mouse_pos;
125
+ Vector m_previous_mouse_pos;
124
126
125
127
bool m_dragging;
126
128
bool m_dragging_right;
129
+ bool m_scrolling;
127
130
Vector m_drag_start;
128
131
TypedUID<MovingObject> m_dragged_object;
129
132
You can’t perform that action at this time.
0 commit comments