Skip to content

Commit 76dbf62

Browse files
committed
Merge branch 'tushar/ui-refresh'
# Conflicts: # src/app.rs # src/theme.rs
2 parents 62444eb + a68e1e5 commit 76dbf62

2 files changed

Lines changed: 64 additions & 5 deletions

File tree

src/app.rs

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,13 @@ struct State {
156156
rect_instance_vbuf: wgpu::Buffer,
157157
rect_instance_count: u32,
158158

159+
// Overlay layer (modals, tooltips) — drawn on top of the base
160+
// text layer so the panel fill fully occludes the text behind it.
161+
overlay_text_vbuf: wgpu::Buffer,
162+
overlay_text_vcount: u32,
163+
overlay_rect_instance_vbuf: wgpu::Buffer,
164+
overlay_rect_instance_count: u32,
165+
159166
layout_dirty: bool,
160167
geometry_dirty: bool,
161168
}
@@ -418,11 +425,21 @@ impl State {
418425
"empty_text",
419426
std::mem::size_of::<TextVertex>() as u64,
420427
);
428+
let empty_overlay_text_vbuf = create_empty_buffer(
429+
&device,
430+
"empty_overlay_text",
431+
std::mem::size_of::<TextVertex>() as u64,
432+
);
421433
let empty_rect_inst_vbuf = create_empty_buffer(
422434
&device,
423435
"empty_rect_instances",
424436
std::mem::size_of::<StyledRectInstance>() as u64,
425437
);
438+
let empty_overlay_rect_inst_vbuf = create_empty_buffer(
439+
&device,
440+
"empty_overlay_rect_instances",
441+
std::mem::size_of::<StyledRectInstance>() as u64,
442+
);
426443

427444
let rect_unit_verts = [
428445
QuadVertex { unit: [0.0, 0.0] },
@@ -498,6 +515,10 @@ impl State {
498515
rect_unit_vbuf,
499516
rect_instance_vbuf: empty_rect_inst_vbuf,
500517
rect_instance_count: 0,
518+
overlay_text_vbuf: empty_overlay_text_vbuf,
519+
overlay_text_vcount: 0,
520+
overlay_rect_instance_vbuf: empty_overlay_rect_inst_vbuf,
521+
overlay_rect_instance_count: 0,
501522
layout_dirty: true,
502523
geometry_dirty: true,
503524
};
@@ -863,6 +884,11 @@ impl State {
863884
self.update_commit_prompt();
864885
Ok(true)
865886
}
887+
Key::Named(NamedKey::Space) => {
888+
self.current_commit_target().push(' ');
889+
self.update_commit_prompt();
890+
Ok(true)
891+
}
866892
Key::Character(ch) => {
867893
let mut changed = false;
868894
for c in ch.chars() {
@@ -3340,10 +3366,18 @@ impl State {
33403366
}
33413367
}
33423368

3343-
// ── Bottom chrome + modals (rendered AFTER panes so they overlay)
3369+
// ── Bottom chrome (rendered AFTER panes so it overlays) ─
33443370
self.build_status_geometry(&mut text_vertices, &mut rect_instances)?;
3345-
self.build_modal_overlay_geometry(&mut text_vertices, &mut rect_instances)?;
3346-
self.build_tooltip_geometry(&mut text_vertices, &mut rect_instances)?;
3371+
3372+
// ── Overlay layer: modals + tooltips ────────────────────
3373+
// Rendered as a separate pass *after* the base text so the
3374+
// panel/tooltip fill fully occludes the UI text behind it —
3375+
// otherwise the base text batch (drawn after the base rects)
3376+
// would bleed through the overlay's translucent-looking fill.
3377+
let mut overlay_text = Vec::<TextVertex>::new();
3378+
let mut overlay_rects = Vec::<StyledRectInstance>::new();
3379+
self.build_modal_overlay_geometry(&mut overlay_text, &mut overlay_rects)?;
3380+
self.build_tooltip_geometry(&mut overlay_text, &mut overlay_rects)?;
33473381

33483382
self.text_vbuf = create_vertex_buffer(&self.device, "text_vertices", &text_vertices);
33493383
self.text_vcount = text_vertices.len() as u32;
@@ -3352,6 +3386,14 @@ impl State {
33523386
create_vertex_buffer(&self.device, "styled_rect_instances", &rect_instances);
33533387
self.rect_instance_count = rect_instances.len() as u32;
33543388

3389+
self.overlay_text_vbuf =
3390+
create_vertex_buffer(&self.device, "overlay_text_vertices", &overlay_text);
3391+
self.overlay_text_vcount = overlay_text.len() as u32;
3392+
3393+
self.overlay_rect_instance_vbuf =
3394+
create_vertex_buffer(&self.device, "overlay_rect_instances", &overlay_rects);
3395+
self.overlay_rect_instance_count = overlay_rects.len() as u32;
3396+
33553397
self.geometry_dirty = false;
33563398
Ok(())
33573399
}
@@ -3737,6 +3779,23 @@ impl State {
37373779
pass.set_vertex_buffer(0, self.text_vbuf.slice(..));
37383780
pass.draw(0..self.text_vcount, 0..1);
37393781
}
3782+
3783+
// ── Overlay layer (modals, tooltips) on top of base text ─
3784+
if self.overlay_rect_instance_count > 0 {
3785+
pass.set_pipeline(&self.rect_pipeline);
3786+
pass.set_bind_group(0, &self.uniform_bg, &[]);
3787+
pass.set_vertex_buffer(0, self.rect_unit_vbuf.slice(..));
3788+
pass.set_vertex_buffer(1, self.overlay_rect_instance_vbuf.slice(..));
3789+
pass.draw(0..6, 0..self.overlay_rect_instance_count);
3790+
}
3791+
3792+
if self.overlay_text_vcount > 0 {
3793+
pass.set_pipeline(&self.text_pipeline);
3794+
pass.set_bind_group(0, &self.text_bg, &[]);
3795+
pass.set_bind_group(1, &self.uniform_bg, &[]);
3796+
pass.set_vertex_buffer(0, self.overlay_text_vbuf.slice(..));
3797+
pass.draw(0..self.overlay_text_vcount, 0..1);
3798+
}
37403799
}
37413800

37423801
self.queue.submit([encoder.finish()]);

src/theme.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,8 +612,8 @@ fn derive_palette(y: &ThemeYaml) -> Palette {
612612
modal_danger_bg_bottom: rgba(md_bot, 1.0),
613613
modal_danger_border: rgba(md_border, 0.60),
614614

615-
tooltip_bg_top: rgba(lerp3(bg, [0.0, 0.0, 0.0], 0.88), 0.98),
616-
tooltip_bg_bottom: rgba(lerp3(bg, [0.0, 0.0, 0.0], 0.92), 0.98),
615+
tooltip_bg_top: rgba(lerp3(bg, [0.0, 0.0, 0.0], 0.88), 1.0),
616+
tooltip_bg_bottom: rgba(lerp3(bg, [0.0, 0.0, 0.0], 0.92), 1.0),
617617
tooltip_border: rgba([1.0, 1.0, 1.0], 0.12),
618618
tooltip_text: rgba([0.96, 0.97, 0.99], 1.0),
619619

0 commit comments

Comments
 (0)