mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-25 15:08:11 +08:00
Fix the Brush tool being accessible while disabled in preferences
This commit is contained in:
@@ -283,7 +283,9 @@ impl PreferencesDialogMessageHandler {
|
||||
let brush_tool_description = "
|
||||
Enable the Brush tool to support basic raster-based layer painting.\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();
|
||||
let brush_tool = vec![
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
mod preferences_message;
|
||||
mod preferences_message_handler;
|
||||
pub mod preferences_message_handler;
|
||||
pub mod utility_types;
|
||||
|
||||
#[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::preferences::SelectionMode;
|
||||
use crate::messages::prelude::*;
|
||||
use crate::messages::tool::utility_types::ToolType;
|
||||
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)]
|
||||
#[serde(default)]
|
||||
pub struct PreferencesMessageHandler {
|
||||
@@ -50,8 +56,10 @@ impl Default for PreferencesMessageHandler {
|
||||
}
|
||||
|
||||
#[message_handler_data]
|
||||
impl MessageHandler<PreferencesMessage, ()> for PreferencesMessageHandler {
|
||||
fn process_message(&mut self, message: PreferencesMessage, responses: &mut VecDeque<Message>, _: ()) {
|
||||
impl MessageHandler<PreferencesMessage, PreferencesMessageContext<'_>> for PreferencesMessageHandler {
|
||||
fn process_message(&mut self, message: PreferencesMessage, responses: &mut VecDeque<Message>, context: PreferencesMessageContext) {
|
||||
let PreferencesMessageContext { tool_message_handler } = context;
|
||||
|
||||
match message {
|
||||
// Management messages
|
||||
PreferencesMessage::Load { preferences } => {
|
||||
@@ -84,6 +92,11 @@ impl MessageHandler<PreferencesMessage, ()> for PreferencesMessageHandler {
|
||||
}
|
||||
PreferencesMessage::BrushTool { 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);
|
||||
}
|
||||
PreferencesMessage::ModifyLayout { zoom_with_scroll } => {
|
||||
|
||||
@@ -384,8 +384,6 @@ impl MessageHandler<ToolMessage, ToolMessageContext<'_>> for ToolMessageHandler
|
||||
ActivateToolShape,
|
||||
ActivateToolText,
|
||||
|
||||
ActivateToolBrush,
|
||||
|
||||
ToggleSelectVsPath,
|
||||
|
||||
SelectRandomWorkingColor,
|
||||
@@ -400,3 +398,17 @@ impl MessageHandler<ToolMessage, ToolMessageContext<'_>> for ToolMessageHandler
|
||||
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