|
|
@@ -93,7 +93,8 @@ fn handle_event(event: &Event, map: &mut MapViewGl, input_state: &mut InputState
|
|
93
|
93
|
// filter strange wheel events with huge values.
|
|
94
|
94
|
// (maybe this is just a personal touchpad driver issue)
|
|
95
|
95
|
if dx.abs() < 16.0 && dy.abs() < 16.0 {
|
|
96
|
|
- (dx, dy * 10.0)
|
|
|
96
|
+ //TODO find a sensible line height value (servo (the glutin port) uses 38)
|
|
|
97
|
+ (dx, dy * 38.0)
|
|
97
|
98
|
} else {
|
|
98
|
99
|
(0.0, 0.0)
|
|
99
|
100
|
}
|
|
|
@@ -103,16 +104,21 @@ fn handle_event(event: &Event, map: &mut MapViewGl, input_state: &mut InputState
|
|
103
|
104
|
if let Some(p) = position {
|
|
104
|
105
|
input_state.mouse_position = p;
|
|
105
|
106
|
}
|
|
106
|
|
- //TODO option to move or zoom on mouse wheel event
|
|
107
|
|
- //map.move_pixel(-dx as f64, -dy as f64);
|
|
108
|
|
-
|
|
109
|
|
- map.zoom_at(
|
|
110
|
|
- ScreenCoord::new(
|
|
111
|
|
- f64::from(input_state.mouse_position.0),
|
|
112
|
|
- f64::from(input_state.mouse_position.1),
|
|
113
|
|
- ),
|
|
114
|
|
- f64::from(dy) * 0.0125,
|
|
115
|
|
- );
|
|
|
107
|
+
|
|
|
108
|
+ //TODO add option for default mouse wheel behavior (scroll or zoom?)
|
|
|
109
|
+ //TODO add option to reverse scroll/zoom direction
|
|
|
110
|
+
|
|
|
111
|
+ if input_state.ctrl_pressed() {
|
|
|
112
|
+ map.move_pixel(f64::from(-dx), f64::from(-dy));
|
|
|
113
|
+ } else {
|
|
|
114
|
+ map.zoom_at(
|
|
|
115
|
+ ScreenCoord::new(
|
|
|
116
|
+ f64::from(input_state.mouse_position.0),
|
|
|
117
|
+ f64::from(input_state.mouse_position.1),
|
|
|
118
|
+ ),
|
|
|
119
|
+ f64::from(dy) * (1.0 / 320.0),
|
|
|
120
|
+ );
|
|
|
121
|
+ }
|
|
116
|
122
|
Action::Redraw
|
|
117
|
123
|
},
|
|
118
|
124
|
Event::KeyboardInput(glutin::ElementState::Pressed, _, Some(keycode)) => {
|