Fix text tool

This commit is contained in:
hypercube
2025-08-08 00:52:55 +01:00
parent 60c001a890
commit bbea76eca1
@@ -393,12 +393,24 @@ impl TextToolData {
Fill::None Fill::None
}, },
}); });
responses.add(GraphOperationMessage::TransformSet {
layer: self.layer, responses.add(DeferMessage::AfterGraphRun {
transform: editing_text.transform, messages: vec![
transform_in: TransformIn::Viewport, GraphOperationMessage::TransformSet {
skip_rerender: true, layer: self.layer,
transform: editing_text.transform,
transform_in: TransformIn::Viewport,
skip_rerender: true,
}
.into(),
DeferMessage::AfterGraphRun {
messages: vec![OverlaysMessage::Draw.into()],
}
.into(),
NodeGraphMessage::RunDocumentGraph.into(),
],
}); });
self.editing_text = Some(editing_text); self.editing_text = Some(editing_text);
self.set_editing(true, font_cache, responses); self.set_editing(true, font_cache, responses);
@@ -475,9 +487,9 @@ impl Fsm for TextToolFsmState {
let ToolMessage::Text(event) = event else { return self }; let ToolMessage::Text(event) = event else { return self };
match (self, event) { match (self, event) {
(TextToolFsmState::Editing, TextToolMessage::Overlays(mut overlay_context)) => { (TextToolFsmState::Editing, TextToolMessage::Overlays(mut overlay_context)) => {
responses.add(FrontendMessage::DisplayEditableTextboxTransform { let t = document.metadata().transform_to_viewport(tool_data.layer);
transform: document.metadata().transform_to_viewport(tool_data.layer).to_cols_array(), warn!("Set transform {t}");
}); responses.add(FrontendMessage::DisplayEditableTextboxTransform { transform: t.to_cols_array() });
if let Some(editing_text) = tool_data.editing_text.as_mut() { if let Some(editing_text) = tool_data.editing_text.as_mut() {
let font_data = font_cache.get(&editing_text.font).map(|data| load_font(data)); let font_data = font_cache.get(&editing_text.font).map(|data| load_font(data));
let far = graphene_std::text::bounding_box(&tool_data.new_text, font_data, editing_text.typesetting, false); let far = graphene_std::text::bounding_box(&tool_data.new_text, font_data, editing_text.typesetting, false);