Skip to content

Commit 244bccb

Browse files
author
Tom
committed
More visual / UI fixes
1 parent 4640512 commit 244bccb

File tree

5 files changed

+28
-17
lines changed

5 files changed

+28
-17
lines changed

detailer/src/lib.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ impl<'a> Widget<'a> {
180180
changed: &mut bool,
181181
k: &ConstraintKey,
182182
d: &mut f32,
183-
ref_pt: &mut (f32, f32),
183+
_ref_pt: &mut (f32, f32),
184184
) {
185185
ui.horizontal(|ui| {
186186
let r = ui.available_size();
@@ -194,10 +194,6 @@ impl<'a> Widget<'a> {
194194
.rect;
195195
ui.add_space(r.x / 2. - text_rect.width() - ui.spacing().item_spacing.x);
196196

197-
ui.add_sized(
198-
[50., text_height],
199-
egui::Label::new(format!("{:?}", ref_pt)).wrap(false),
200-
);
201197
*changed |= ui
202198
.add_sized([50., text_height * 1.4], egui::DragValue::new(d))
203199
.changed();

drawing/src/constraints.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ struct DimensionLengthOverlay<'a> {
136136
}
137137

138138
impl<'a> DimensionLengthOverlay<'a> {
139-
const LINE_STOP_OFFSET: f32 = 5.5;
139+
const LINE_STOP_OFFSET: f32 = 8.5;
140140

141141
pub fn draw(&self, painter: &egui::Painter, params: &crate::PaintParams) {
142142
let vp = &params.vp;
@@ -194,9 +194,9 @@ impl<'a> DimensionLengthOverlay<'a> {
194194
p2: text_pos,
195195
};
196196
if let Some(end) = arrow_line_1
197-
.intersection_rect(&text_bounds.expand2((12., 2.).into()).translate(text_offset))
197+
.intersection_rect(&text_bounds.expand2((10., 2.).into()).translate(text_offset))
198198
{
199-
if sa.distance_sq(end) > 1950. {
199+
if arrow_line_1.p1.distance_sq(end) > 750. {
200200
painter.arrow(
201201
end,
202202
egui::Vec2::angled((sa - sb).angle()) * 20.,
@@ -210,9 +210,9 @@ impl<'a> DimensionLengthOverlay<'a> {
210210
p2: sb + v,
211211
};
212212
if let Some(end) = arrow_line_2
213-
.intersection_rect(&text_bounds.expand2((12., 2.).into()).translate(text_offset))
213+
.intersection_rect(&text_bounds.expand2((10., 2.).into()).translate(text_offset))
214214
{
215-
if sb.distance_sq(end) > 1950. {
215+
if arrow_line_2.p2.distance_sq(end) > 750. {
216216
painter.arrow(
217217
end,
218218
egui::Vec2::angled((sb - sa).angle()) * 20.,

drawing/src/data/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ impl Data {
117117
self.solve_and_apply();
118118
}
119119

120+
/// NOTE: Only supports LineLength constraints atm, and consumes a SCREEN coordinate.
120121
pub fn move_constraint(&mut self, k: ConstraintKey, pos: egui::Pos2) {
121122
if let Some(Constraint::LineLength(_, fk, _, _)) = self.constraints.get(k) {
122123
let (a, b) = match self.features.get(*fk) {
@@ -140,7 +141,7 @@ impl Data {
140141

141142
if let Some(Constraint::LineLength(_, fk, _, (ref_x, ref_y))) = self.constraint_mut(k) {
142143
let c = a.lerp(b, 0.5);
143-
let mut v = c.to_vec2() - pos.to_vec2();
144+
let v = c.to_vec2() - pos.to_vec2();
144145
let reference = egui::Vec2::angled((a - b).angle() - v.angle()) * v.length();
145146
*ref_x = -reference.x;
146147
*ref_y = reference.y;

drawing/src/lib.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,12 @@ impl<'a> Widget<'a> {
199199
None
200200
};
201201

202+
// All clicks get keyboard focus.
203+
// println!("focus-w: {:?}", response.ctx.memory(|mem| mem.focus()));
204+
if response.clicked() && !response.lost_focus() {
205+
ui.memory_mut(|mem| mem.request_focus(response.id));
206+
}
207+
202208
// Handle: clicks altering selection
203209
if hp.is_some() && response.clicked_by(egui::PointerButton::Primary) {
204210
let shift_held = ui.input(|i| i.modifiers.shift);
@@ -216,7 +222,7 @@ impl<'a> Widget<'a> {
216222
}
217223
}
218224

219-
// Handle: escape clears collection
225+
// Handle: escape clears collection - cant use focus check here?
220226
if hp.is_some()
221227
&& self.drawing.selected_map.len() > 0
222228
&& ui.input(|i| i.key_pressed(egui::Key::Escape))
@@ -225,12 +231,13 @@ impl<'a> Widget<'a> {
225231
}
226232

227233
// Handle: Ctrl-A selects all
228-
if hp.is_some() && ui.input(|i| i.key_pressed(egui::Key::A) && i.modifiers.ctrl) {
234+
if response.has_focus() && ui.input(|i| i.key_pressed(egui::Key::A) && i.modifiers.ctrl) {
229235
self.drawing.select_all();
230236
}
231237

232238
// Handle: delete selection
233-
if hp.is_some()
239+
if response.has_focus()
240+
&& hp.is_some()
234241
&& self.drawing.selected_map.len() > 0
235242
&& ui.input(|i| i.key_pressed(egui::Key::Delete))
236243
{
@@ -363,7 +370,11 @@ impl<'a> Widget<'a> {
363370
use egui::Sense;
364371
let (rect, response) = ui.allocate_exact_size(
365372
ui.available_size(),
366-
Sense::click_and_drag().union(Sense::hover()),
373+
Sense {
374+
click: true,
375+
drag: true,
376+
focusable: true,
377+
},
367378
);
368379
ui.set_clip_rect(rect);
369380

@@ -375,7 +386,10 @@ impl<'a> Widget<'a> {
375386
if !has_init {
376387
self.drawing.vp.x = -rect.width() / 2.;
377388
self.drawing.vp.y = -rect.height() / 2.;
378-
ui.memory_mut(|mem| mem.data.insert_temp(state_id, true));
389+
ui.memory_mut(|mem| {
390+
mem.data.insert_temp(state_id, true);
391+
mem.request_focus(response.id); // request focus initially
392+
});
379393
}
380394

381395
// Find hover feature, if any

drawing/src/tools.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ impl Toolbar {
388388
}
389389

390390
// Hotkeys for switching tools
391-
if hp.is_some() && !response.dragged() {
391+
if response.has_focus() && !response.dragged() {
392392
let (l, p, s, d) = ui.input(|i| {
393393
(
394394
i.key_pressed(egui::Key::L),

0 commit comments

Comments
 (0)