mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-08 11:58:27 +00:00
Track most recent mouse button in fj-viewer
This commit is contained in:
parent
c5692f37a2
commit
743fa8aedc
@ -4,8 +4,8 @@ use tracing::warn;
|
|||||||
use crate::{
|
use crate::{
|
||||||
camera::{Camera, FocusPoint},
|
camera::{Camera, FocusPoint},
|
||||||
graphics::{DrawConfig, Renderer},
|
graphics::{DrawConfig, Renderer},
|
||||||
InputEvent, NormalizedScreenPosition, RendererInitError, Screen,
|
InputEvent, MouseButton, NormalizedScreenPosition, RendererInitError,
|
||||||
ScreenSize,
|
Screen, ScreenSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The Fornjot model viewer
|
/// The Fornjot model viewer
|
||||||
@ -13,6 +13,8 @@ pub struct Viewer {
|
|||||||
current_screen_size: ScreenSize,
|
current_screen_size: ScreenSize,
|
||||||
new_screen_size: Option<ScreenSize>,
|
new_screen_size: Option<ScreenSize>,
|
||||||
|
|
||||||
|
most_recent_mouse_button: Option<MouseButton>,
|
||||||
|
|
||||||
camera: Camera,
|
camera: Camera,
|
||||||
cursor: Option<NormalizedScreenPosition>,
|
cursor: Option<NormalizedScreenPosition>,
|
||||||
draw_config: DrawConfig,
|
draw_config: DrawConfig,
|
||||||
@ -29,6 +31,7 @@ impl Viewer {
|
|||||||
Ok(Self {
|
Ok(Self {
|
||||||
current_screen_size: screen.size(),
|
current_screen_size: screen.size(),
|
||||||
new_screen_size: None,
|
new_screen_size: None,
|
||||||
|
most_recent_mouse_button: None,
|
||||||
camera: Camera::default(),
|
camera: Camera::default(),
|
||||||
cursor: None,
|
cursor: None,
|
||||||
draw_config: DrawConfig::default(),
|
draw_config: DrawConfig::default(),
|
||||||
@ -98,6 +101,18 @@ impl Viewer {
|
|||||||
self.cursor = Some(cursor_new);
|
self.cursor = Some(cursor_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// # Handle a mouse button being pressed
|
||||||
|
pub fn on_mouse_button_pressed(&mut self, button: MouseButton) {
|
||||||
|
self.most_recent_mouse_button = Some(button);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// # Handle a mouse button being pressed
|
||||||
|
pub fn on_mouse_button_released(&mut self, button: MouseButton) {
|
||||||
|
if self.most_recent_mouse_button == Some(button) {
|
||||||
|
self.most_recent_mouse_button = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Handle the screen being resized
|
/// Handle the screen being resized
|
||||||
pub fn on_screen_resize(&mut self, new_size: ScreenSize) {
|
pub fn on_screen_resize(&mut self, new_size: ScreenSize) {
|
||||||
self.current_screen_size = new_size;
|
self.current_screen_size = new_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user