Skip to content

Commit

Permalink
Add configuration to invert zoom direction
Browse files Browse the repository at this point in the history
  • Loading branch information
hannobraun committed Oct 11, 2022
1 parent da81720 commit e4c8fcb
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 2 deletions.
1 change: 1 addition & 0 deletions crates/fj-app/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ use serde::Deserialize;
pub struct Config {
pub default_path: Option<PathBuf>,
pub default_model: Option<PathBuf>,
pub invert_zoom: Option<bool>,
}

impl Config {
Expand Down
6 changes: 4 additions & 2 deletions crates/fj-app/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,13 @@ fn main() -> anyhow::Result<()> {
return Ok(());
}

let invert_zoom = config.invert_zoom.unwrap_or(false);

if let Some(model) = model {
let watcher = model.load_and_watch(parameters)?;
run(Some(watcher), shape_processor, status)?;
run(Some(watcher), shape_processor, status, invert_zoom)?;
} else {
run(None, shape_processor, status)?;
run(None, shape_processor, status, invert_zoom)?;
}

Ok(())
Expand Down
5 changes: 5 additions & 0 deletions crates/fj-window/src/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ pub fn run(
watcher: Option<Watcher>,
shape_processor: ShapeProcessor,
mut status: StatusReport,
invert_zoom: bool,
) -> Result<(), Error> {
let event_loop = EventLoop::new();
let window = Window::new(&event_loop)?;
Expand Down Expand Up @@ -214,6 +215,7 @@ pub fn run(
&window,
&held_mouse_button,
&mut previous_cursor,
invert_zoom,
);
if let (Some(input_event), Some(fp)) = (input_event, focus_point) {
input_handler.handle_event(input_event, fp, &mut camera);
Expand All @@ -226,6 +228,7 @@ fn input_event(
window: &Window,
held_mouse_button: &Option<MouseButton>,
previous_cursor: &mut Option<NormalizedPosition>,
invert_zoom: bool,
) -> Option<input::Event> {
match event {
Event::WindowEvent {
Expand Down Expand Up @@ -274,6 +277,8 @@ fn input_event(
}) => y * ZOOM_FACTOR_PIXEL,
};

let delta = if invert_zoom { -delta } else { delta };

Some(input::Event::Zoom(delta))
}
_ => None,
Expand Down
4 changes: 4 additions & 0 deletions fj.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ default_path = "models"
# The default models that is loaded, if none is specified. If this is a relative
# path, it should be relative to `default_path`.
default_model = "test"

# Indicate whether to invert the zoom direction. Can be used to override the
# OS-level setting.
invert_zoom = false

0 comments on commit e4c8fcb

Please sign in to comment.