feat: Knopf für das Seitenverhältnis-Schloss der Auswahl (Issue #29)
Im Tablet-Betrieb gibt es keine Umschalttaste. Beim Auswahlwerkzeug steht unter den Stiftfarben jetzt ein Schloss: 🔒 skaliert gleichmäßig, 🔓 frei. Vorgabe ist gesperrt, sobald ein Bild ausgewählt ist, sonst frei. Das Umschalten gilt für die aktuelle Auswahl; eine neue Auswahl beginnt wieder mit der Vorgabe. Shift sperrt am Rechner zusätzlich. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
98b78d29e6
commit
1a98c9b8bb
4 files changed
+135
-3
No files matched your search
+10
-2
@@ -651,8 +651,8 @@ fn selection_press(
|
||||
_,
|
||||
) => {
|
||||
let initial_strokes = page.get_strokes(&selection_state.selected_ids);
|
||||
// Bilder nicht verzerren (Issue #29); Shift hält das Verhältnis auch bei Strichen
|
||||
let keep_aspect = shift || initial_strokes.iter().any(|s| s.is_image());
|
||||
// Schloss der Auswahl (Bilder: an, Issue #29); Shift sperrt zusätzlich
|
||||
let keep_aspect = shift || selection_state.keeps_aspect(page);
|
||||
DragMode::Scale {
|
||||
fixed_corner_page,
|
||||
start_pos_page,
|
||||
@@ -3101,6 +3101,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
// 3. Toolbar & Widgets rendern
|
||||
updater.update();
|
||||
ui_state.page_view = Some(page_view(&canvas, window.scale_factor() as f32));
|
||||
ui_state.selection_aspect_lock = (!selection_state.is_empty())
|
||||
.then(|| selection_state.keeps_aspect(notebook.current_page()));
|
||||
ui_state.restorable_page = last_deleted_page
|
||||
.as_ref()
|
||||
.filter(|(id, _, _)| *id == manifest.id)
|
||||
@@ -3201,6 +3203,12 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
update_window_title(&window, ¬ebook, &manifest, ui_state.active_tool, autosave.status());
|
||||
window.request_redraw();
|
||||
}
|
||||
UiAction::ToggleAspectLock => {
|
||||
if !selection_state.is_empty() {
|
||||
selection_state.toggle_aspect_lock(notebook.current_page());
|
||||
window.request_redraw();
|
||||
}
|
||||
}
|
||||
UiAction::RotateSelected => {
|
||||
if !selection_state.is_empty()
|
||||
&& selection_state.rotate_selected_90_deg(notebook.current_page_mut()) {
|
||||
|
||||
Reference in new issue
Block a user