From b17432b1c4fa74967dc8f536c36683dedd7a31df Mon Sep 17 00:00:00 2001 From: 0HyperCube <78500760+0HyperCube@users.noreply.github.com> Date: Sun, 16 Jan 2022 19:46:41 +0000 Subject: [PATCH] Add cursors and hints to global viewport navigation (#487) * Add global nav cursors * Update hints on global navigation Co-authored-by: Keavon Chambers --- .../src/document/movement_message_handler.rs | 34 +++++++++++++++++++ .../viewport_tools/tool_message_handler.rs | 5 ++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/editor/src/document/movement_message_handler.rs b/editor/src/document/movement_message_handler.rs index 071dc5a5..97c81d05 100644 --- a/editor/src/document/movement_message_handler.rs +++ b/editor/src/document/movement_message_handler.rs @@ -1,7 +1,10 @@ use crate::consts::{VIEWPORT_ROTATE_SNAP_INTERVAL, VIEWPORT_SCROLL_RATE, VIEWPORT_ZOOM_LEVELS, VIEWPORT_ZOOM_MOUSE_RATE, VIEWPORT_ZOOM_SCALE_MAX, VIEWPORT_ZOOM_SCALE_MIN, VIEWPORT_ZOOM_WHEEL_RATE}; +use crate::frontend::utility_types::MouseCursorIcon; +use crate::input::keyboard::Key; use crate::input::mouse::{ViewportBounds, ViewportPosition}; use crate::input::InputPreprocessorMessageHandler; use crate::message_prelude::*; +use crate::misc::{HintData, HintGroup, HintInfo, KeysGroup}; use graphene::document::Document; use graphene::Operation as DocumentOperation; @@ -221,6 +224,19 @@ impl MessageHandler { + responses.push_back(FrontendMessage::UpdateMouseCursor { cursor: MouseCursorIcon::Default }.into()); + responses.push_back( + FrontendMessage::UpdateInputHints { + hint_data: HintData(vec![HintGroup(vec![HintInfo { + key_groups: vec![KeysGroup(vec![Key::KeyControl])], + mouse: None, + label: String::from("Snap 15°"), + plus: false, + }])]), + } + .into(), + ); + self.tilting = true; self.mouse_position = ipp.mouse.position; } @@ -241,6 +257,8 @@ impl MessageHandler { + responses.push_back(FrontendMessage::UpdateMouseCursor { cursor: MouseCursorIcon::Grabbing }.into()); + responses.push_back(FrontendMessage::UpdateInputHints { hint_data: HintData(Vec::new()) }.into()); + self.panning = true; self.mouse_position = ipp.mouse.position; } @@ -284,6 +305,19 @@ impl MessageHandler { + responses.push_back(FrontendMessage::UpdateMouseCursor { cursor: MouseCursorIcon::ZoomIn }.into()); + responses.push_back( + FrontendMessage::UpdateInputHints { + hint_data: HintData(vec![HintGroup(vec![HintInfo { + key_groups: vec![KeysGroup(vec![Key::KeyControl])], + mouse: None, + label: String::from("Snap Increments"), + plus: false, + }])]), + } + .into(), + ); + self.zooming = true; self.mouse_position = ipp.mouse.position; } diff --git a/editor/src/viewport_tools/tool_message_handler.rs b/editor/src/viewport_tools/tool_message_handler.rs index 7936c239..edaef974 100644 --- a/editor/src/viewport_tools/tool_message_handler.rs +++ b/editor/src/viewport_tools/tool_message_handler.rs @@ -102,7 +102,10 @@ impl MessageHandler { - let tool_type = message_to_tool_type(&tool_message); + let tool_type = match &tool_message { + UpdateCursor | UpdateHints => self.tool_state.tool_data.active_tool_type, + tool_message => message_to_tool_type(tool_message), + }; let document_data = &self.tool_state.document_tool_data; let tool_data = &mut self.tool_state.tool_data;