Skip to content

Commit 76cc2e2

Browse files
authored
Add scrolling with mouse to editor (#2028)
* Add scrolling with mouse to editor * Fix compilation
1 parent 72d76ef commit 76cc2e2

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/editor/overlay_widget.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,10 @@ EditorOverlayWidget::EditorOverlayWidget(Editor& editor) :
6060
m_hovered_corner(0, 0),
6161
m_sector_pos(0, 0),
6262
m_mouse_pos(0, 0),
63+
m_previous_mouse_pos(0, 0),
6364
m_dragging(false),
6465
m_dragging_right(false),
66+
m_scrolling(false),
6567
m_drag_start(0, 0),
6668
m_dragged_object(nullptr),
6769
m_hovered_object(nullptr),
@@ -859,6 +861,13 @@ EditorOverlayWidget::process_right_click()
859861
}
860862
}
861863

864+
void
865+
EditorOverlayWidget::process_middle_click()
866+
{
867+
m_previous_mouse_pos = m_mouse_pos;
868+
m_scrolling = true;
869+
}
870+
862871
Rectf
863872
EditorOverlayWidget::tile_drag_rect() const
864873
{
@@ -926,6 +935,8 @@ EditorOverlayWidget::on_mouse_button_up(const SDL_MouseButtonEvent& button)
926935
}
927936
}
928937
}
938+
else if (button.button == SDL_BUTTON_MIDDLE)
939+
m_scrolling = false;
929940

930941
m_dragging = false;
931942

@@ -947,6 +958,10 @@ EditorOverlayWidget::on_mouse_button_down(const SDL_MouseButtonEvent& button)
947958
process_right_click();
948959
return true;
949960

961+
case SDL_BUTTON_MIDDLE:
962+
process_middle_click();
963+
return true;
964+
950965
default:
951966
return false;
952967
}
@@ -994,6 +1009,12 @@ EditorOverlayWidget::on_mouse_motion(const SDL_MouseMotionEvent& motion)
9941009
}
9951010
return true;
9961011
}
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+
}
9971018
else
9981019
{
9991020
return false;

src/editor/overlay_widget.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ class EditorOverlayWidget final : public Widget
102102

103103
void process_left_click();
104104
void process_right_click();
105+
void process_middle_click();
105106

106107
// sp is sector pos, tp is pos on tilemap.
107108
Vector tp_to_sp(const Vector& tp, int tile_size = 32) const;
@@ -121,9 +122,11 @@ class EditorOverlayWidget final : public Widget
121122
Vector m_hovered_corner;
122123
Vector m_sector_pos;
123124
Vector m_mouse_pos;
125+
Vector m_previous_mouse_pos;
124126

125127
bool m_dragging;
126128
bool m_dragging_right;
129+
bool m_scrolling;
127130
Vector m_drag_start;
128131
TypedUID<MovingObject> m_dragged_object;
129132

0 commit comments

Comments
 (0)