Fix 12 medium-severity bugs across all crates

- Escape backslashes in Nautilus preset names preventing Python injection
- Fix tiled watermarks starting at (spacing,spacing) instead of (0,0)
- Fix text watermark width overestimation (1.0x to 0.6x multiplier)
- Fix output_dpi forcing re-encoding for metadata-only presets
- Fix AVIF/WebP compression detection comparing against wrong preset values
- Add shared batch_updating guard for Ctrl+A/Ctrl+Shift+A select actions
- Fix overwrite conflict check ignoring preserve_directory_structure
- Add changes_filename()/changes_extension() for smarter overwrite checks
- Fix watch folder hardcoding "Blog Photos" preset
- Fix undo dropping history for partially-trashed batches
- Fix skipped files inflating size statistics
- Make CLI watch config writes atomic
This commit is contained in:
2026-03-07 23:35:32 +02:00
parent 1a174d40a7
commit 7e5d19ab03
8 changed files with 77 additions and 30 deletions

View File

@@ -550,8 +550,8 @@ fn build_loaded_state(state: &AppState) -> gtk::Box {
.spacing(0)
.build();
// Guard flag to prevent O(n^2) update cascade during batch checkbox operations
let batch_updating: Rc<std::cell::Cell<bool>> = Rc::new(std::cell::Cell::new(false));
// Use the shared batch_updating flag from AppState
let batch_updating = state.batch_updating.clone();
// Toolbar
let toolbar = gtk::Box::builder()