mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-24 10:27:00 -06:00
M7: dismiss comment draft when switching tools
This commit is contained in:
@@ -7,7 +7,7 @@ use egui::{Event, Key, Modifiers, Pos2, pos2, vec2};
|
||||
use figcraft_engine::Session;
|
||||
use serde_json::{Value, json};
|
||||
|
||||
use crate::comments::{cluster, insert_mention, mention_matches, mention_query};
|
||||
use crate::comments::{cluster, insert_mention, mention_matches, mention_query, start_draft};
|
||||
use crate::present_tests::{Ui, id};
|
||||
|
||||
fn add(s: &mut Session, x: f64, y: f64, text: &str, author: &str) -> u64 {
|
||||
@@ -41,6 +41,18 @@ fn comments(u: &Ui) -> Value {
|
||||
u.app.inspect()["comments"].clone()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn switching_from_comment_to_move_closes_the_unposted_composer() {
|
||||
let mut u = Ui::new(Session::new());
|
||||
u.app.run("tool.set", json!({"tool": "comment"}));
|
||||
start_draft(&mut u.app, 100.0, 80.0);
|
||||
assert!(comments(&u)["draft"].is_array());
|
||||
|
||||
u.app.run("tool.set", json!({"tool": "move"}));
|
||||
u.frame(vec![]);
|
||||
assert!(comments(&u)["draft"].is_null());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mention_helpers() {
|
||||
// The `@query` before the cursor.
|
||||
|
||||
@@ -834,6 +834,9 @@ impl FigApp {
|
||||
/// Run a command, surfacing errors as a toast. Returns the result.
|
||||
pub fn run(&mut self, id: &str, params: Value) -> Option<Value> {
|
||||
let r = self.session.execute(id, ¶ms);
|
||||
if id == "tool.set" && r.is_ok() && self.session.tool.tool != figcraft_engine::tools::ToolId::Comment {
|
||||
self.ui.comments.draft = None;
|
||||
}
|
||||
self.handle_ui_requests();
|
||||
r.map_err(|e| self.failed(id, &e)).ok()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user