Return from Draw submenus with Escape and place split tools last

This commit is contained in:
ramox81 committed 2026-09-11 09:27:59 +03:00
1 parent ac8215c1b7
commit 75cc49d629
3 files changed
+29 -11

No files matched your search

+3
View File
@@ -890,6 +890,9 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task<Message> {
}
pub(super) fn on_command_escape(&mut self) -> Task<Message> {
if self.ribbon.escape_extension() {
return Task::none();
}
// Esc drops an unconsumed one-shot snap override and closes
// its menu (#337). Falls through — Esc keeps its usual effect.
self.snap_override_popup = None;
+11 -11
View File
@@ -15,7 +15,7 @@ use crate::modules::IconKind;
use crate::t;
use crate::ui::{icons, wrap_bar::PosReport};
const PANEL_ID: &str = "draw_extension";
pub(super) const PANEL_ID: &str = "draw_extension";
const TITLE_ID: &str = "draw_extension_title";
const SCALE: f32 = 0.7;
const CELL: f32 = 36.0 * SCALE;
@@ -54,16 +54,6 @@ const TOOLS: &[Tool] = &[
icon: include_bytes!("../../../assets/icons/ray.svg"),
options: &[],
},
Tool {
command: "MULTIPOINT",
label: "Multiple Points",
icon: include_bytes!("../../../assets/icons/multipoint.svg"),
options: &[
("POINT", "Single Point"),
("MULTIPOINT", "Multiple Points"),
("DDPTYPE", "Point Style"),
],
},
Tool {
command: "DIVIDE",
label: "Divide",
@@ -106,6 +96,16 @@ const TOOLS: &[Tool] = &[
icon: include_bytes!("../../../assets/icons/donut.svg"),
options: &[],
},
Tool {
command: "MULTIPOINT",
label: "Multiple Points",
icon: include_bytes!("../../../assets/icons/multipoint.svg"),
options: &[
("POINT", "Single Point"),
("MULTIPOINT", "Multiple Points"),
("DDPTYPE", "Point Style"),
],
},
Tool {
command: "REVCLOUD",
label: "Revision Cloud",
+15
View File
@@ -351,6 +351,21 @@ impl Ribbon {
self.layer_filter.clear();
}
pub fn escape_extension(&mut self) -> bool {
let Some(id) = self.open_dropdown.as_deref() else {
return false;
};
if !draw_panel::owns_dropdown(id) {
return false;
}
if id == draw_panel::PANEL_ID {
self.close_dropdown();
} else {
self.open_dropdown = Some(draw_panel::PANEL_ID.to_string());
}
true
}
/// Toggle the flyout of a collapsed ribbon panel (identified by its title).
pub fn toggle_collapsed_panel(&mut self, id: &str) {
if self.collapsed_open.as_deref() == Some(id) {