mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-12-23 10:11:54 +00:00
Fix the Brush tool being accessible while disabled in preferences
This commit is contained in:
parent
3000519a10
commit
0a5e65bc9d
5 changed files with 40 additions and 8 deletions
|
|
@ -2,6 +2,7 @@ use crate::messages::debug::utility_types::MessageLoggingVerbosity;
|
|||
use crate::messages::defer::DeferMessageContext;
|
||||
use crate::messages::dialog::DialogMessageContext;
|
||||
use crate::messages::layout::layout_message_handler::LayoutMessageContext;
|
||||
use crate::messages::preferences::preferences_message_handler::PreferencesMessageContext;
|
||||
use crate::messages::prelude::*;
|
||||
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, ());
|
||||
}
|
||||
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) => {
|
||||
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()
|
||||
&& !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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue