mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-01 03:18:11 +08:00
Fix the Brush tool being accessible while disabled in preferences
This commit is contained in:
@@ -2,6 +2,7 @@ use crate::messages::debug::utility_types::MessageLoggingVerbosity;
|
|||||||
use crate::messages::defer::DeferMessageContext;
|
use crate::messages::defer::DeferMessageContext;
|
||||||
use crate::messages::dialog::DialogMessageContext;
|
use crate::messages::dialog::DialogMessageContext;
|
||||||
use crate::messages::layout::layout_message_handler::LayoutMessageContext;
|
use crate::messages::layout::layout_message_handler::LayoutMessageContext;
|
||||||
|
use crate::messages::preferences::preferences_message_handler::PreferencesMessageContext;
|
||||||
use crate::messages::prelude::*;
|
use crate::messages::prelude::*;
|
||||||
use crate::messages::tool::common_functionality::utility_functions::make_path_editable_is_allowed;
|
use crate::messages::tool::common_functionality::utility_functions::make_path_editable_is_allowed;
|
||||||
|
|
||||||
@@ -277,7 +278,11 @@ impl Dispatcher {
|
|||||||
menu_bar_message_handler.process_message(message, &mut queue, ());
|
menu_bar_message_handler.process_message(message, &mut queue, ());
|
||||||
}
|
}
|
||||||
Message::Preferences(message) => {
|
Message::Preferences(message) => {
|
||||||
self.message_handlers.preferences_message_handler.process_message(message, &mut queue, ());
|
let context = PreferencesMessageContext {
|
||||||
|
tool_message_handler: &self.message_handlers.tool_message_handler,
|
||||||
|
};
|
||||||
|
|
||||||
|
self.message_handlers.preferences_message_handler.process_message(message, &mut queue, context);
|
||||||
}
|
}
|
||||||
Message::Tool(message) => {
|
Message::Tool(message) => {
|
||||||
let Some(document_id) = self.message_handlers.portfolio_message_handler.active_document_id() else {
|
let Some(document_id) = self.message_handlers.portfolio_message_handler.active_document_id() else {
|
||||||
@@ -332,7 +337,7 @@ impl Dispatcher {
|
|||||||
if let Some(document) = self.message_handlers.portfolio_message_handler.active_document()
|
if let Some(document) = self.message_handlers.portfolio_message_handler.active_document()
|
||||||
&& !document.graph_view_overlay_open
|
&& !document.graph_view_overlay_open
|
||||||
{
|
{
|
||||||
list.extend(self.message_handlers.tool_message_handler.actions());
|
list.extend(self.message_handlers.tool_message_handler.actions_with_preferences(&self.message_handlers.preferences_message_handler));
|
||||||
}
|
}
|
||||||
list.extend(self.message_handlers.portfolio_message_handler.actions());
|
list.extend(self.message_handlers.portfolio_message_handler.actions());
|
||||||
list
|
list
|
||||||
|
|||||||
@@ -283,7 +283,9 @@ impl PreferencesDialogMessageHandler {
|
|||||||
let brush_tool_description = "
|
let brush_tool_description = "
|
||||||
Enable the Brush tool to support basic raster-based layer painting.\n\
|
Enable the Brush tool to support basic raster-based layer painting.\n\
|
||||||
\n\
|
\n\
|
||||||
This legacy tool has performance and quality limitations and is slated for replacement in future versions of Graphite that will focus on raster graphics editing.
|
This legacy experimental tool has performance and quality limitations and is slated for replacement in future versions of Graphite that will focus on raster graphics editing.\n\
|
||||||
|
\n\
|
||||||
|
Content created with the Brush tool may not be compatible with future versions of Graphite.
|
||||||
"
|
"
|
||||||
.trim();
|
.trim();
|
||||||
let brush_tool = vec![
|
let brush_tool = vec![
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
mod preferences_message;
|
mod preferences_message;
|
||||||
mod preferences_message_handler;
|
pub mod preferences_message_handler;
|
||||||
pub mod utility_types;
|
pub mod utility_types;
|
||||||
|
|
||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
|
|||||||
@@ -3,8 +3,14 @@ use crate::messages::input_mapper::key_mapping::MappingVariant;
|
|||||||
use crate::messages::portfolio::document::utility_types::wires::GraphWireStyle;
|
use crate::messages::portfolio::document::utility_types::wires::GraphWireStyle;
|
||||||
use crate::messages::preferences::SelectionMode;
|
use crate::messages::preferences::SelectionMode;
|
||||||
use crate::messages::prelude::*;
|
use crate::messages::prelude::*;
|
||||||
|
use crate::messages::tool::utility_types::ToolType;
|
||||||
use graph_craft::wasm_application_io::EditorPreferences;
|
use graph_craft::wasm_application_io::EditorPreferences;
|
||||||
|
|
||||||
|
#[derive(ExtractField)]
|
||||||
|
pub struct PreferencesMessageContext<'a> {
|
||||||
|
pub tool_message_handler: &'a ToolMessageHandler,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, specta::Type, ExtractField)]
|
#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, specta::Type, ExtractField)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub struct PreferencesMessageHandler {
|
pub struct PreferencesMessageHandler {
|
||||||
@@ -50,8 +56,10 @@ impl Default for PreferencesMessageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[message_handler_data]
|
#[message_handler_data]
|
||||||
impl MessageHandler<PreferencesMessage, ()> for PreferencesMessageHandler {
|
impl MessageHandler<PreferencesMessage, PreferencesMessageContext<'_>> for PreferencesMessageHandler {
|
||||||
fn process_message(&mut self, message: PreferencesMessage, responses: &mut VecDeque<Message>, _: ()) {
|
fn process_message(&mut self, message: PreferencesMessage, responses: &mut VecDeque<Message>, context: PreferencesMessageContext) {
|
||||||
|
let PreferencesMessageContext { tool_message_handler } = context;
|
||||||
|
|
||||||
match message {
|
match message {
|
||||||
// Management messages
|
// Management messages
|
||||||
PreferencesMessage::Load { preferences } => {
|
PreferencesMessage::Load { preferences } => {
|
||||||
@@ -84,6 +92,11 @@ impl MessageHandler<PreferencesMessage, ()> for PreferencesMessageHandler {
|
|||||||
}
|
}
|
||||||
PreferencesMessage::BrushTool { enabled } => {
|
PreferencesMessage::BrushTool { enabled } => {
|
||||||
self.brush_tool = enabled;
|
self.brush_tool = enabled;
|
||||||
|
|
||||||
|
if !enabled && tool_message_handler.tool_state.tool_data.active_tool_type == ToolType::Brush {
|
||||||
|
responses.add(ToolMessage::ActivateToolSelect);
|
||||||
|
}
|
||||||
|
|
||||||
responses.add(ToolMessage::RefreshToolShelf);
|
responses.add(ToolMessage::RefreshToolShelf);
|
||||||
}
|
}
|
||||||
PreferencesMessage::ModifyLayout { zoom_with_scroll } => {
|
PreferencesMessage::ModifyLayout { zoom_with_scroll } => {
|
||||||
|
|||||||
@@ -384,8 +384,6 @@ impl MessageHandler<ToolMessage, ToolMessageContext<'_>> for ToolMessageHandler
|
|||||||
ActivateToolShape,
|
ActivateToolShape,
|
||||||
ActivateToolText,
|
ActivateToolText,
|
||||||
|
|
||||||
ActivateToolBrush,
|
|
||||||
|
|
||||||
ToggleSelectVsPath,
|
ToggleSelectVsPath,
|
||||||
|
|
||||||
SelectRandomWorkingColor,
|
SelectRandomWorkingColor,
|
||||||
@@ -400,3 +398,17 @@ impl MessageHandler<ToolMessage, ToolMessageContext<'_>> for ToolMessageHandler
|
|||||||
list
|
list
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ToolMessageHandler {
|
||||||
|
pub fn actions_with_preferences(&self, preferences: &PreferencesMessageHandler) -> ActionList {
|
||||||
|
let mut list = self.actions();
|
||||||
|
|
||||||
|
if preferences.brush_tool {
|
||||||
|
list.extend(actions!(ToolMessageDiscriminant;
|
||||||
|
ActivateToolBrush,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user