Skip to content

Commit f6c4b03

Browse files
committed
Preedit with underline and app's theme color
1 parent 9ef6daf commit f6c4b03

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

winit/src/program.rs

+27-15
Original file line numberDiff line numberDiff line change
@@ -1177,7 +1177,12 @@ fn update_input_method<P, C>(
11771177
let text = window.state.preedit();
11781178
if !text.is_empty() {
11791179
preedit.update(text.as_str(), &window.renderer);
1180-
preedit.fill(&mut window.renderer, caret_info.position);
1180+
preedit.fill(
1181+
&mut window.renderer,
1182+
window.state.text_color(),
1183+
window.state.background_color(),
1184+
caret_info.position,
1185+
);
11811186
}
11821187
}
11831188

@@ -1211,7 +1216,13 @@ impl<P: Program> Preedit<P> {
12111216
);
12121217
}
12131218

1214-
fn fill(&self, renderer: &mut P::Renderer, caret_position: Point) {
1219+
fn fill(
1220+
&self,
1221+
renderer: &mut P::Renderer,
1222+
fore_color: core::Color,
1223+
bg_color: core::Color,
1224+
caret_position: Point,
1225+
) {
12151226
use core::text::Paragraph as _;
12161227
use core::text::Renderer as _;
12171228
use core::Renderer as _;
@@ -1229,20 +1240,21 @@ impl<P: Program> Preedit<P> {
12291240
);
12301241
let bounds = core::Rectangle::new(top_left, content.min_bounds());
12311242
renderer.with_layer(bounds, |renderer| {
1232-
let quad = core::renderer::Quad {
1233-
bounds,
1234-
border: core::Border::default(),
1235-
shadow: core::Shadow::default(),
1236-
};
1237-
renderer
1238-
.fill_quad(quad, core::Background::Color(core::Color::WHITE));
1239-
1240-
renderer.fill_paragraph(
1241-
content,
1242-
top_left,
1243-
core::Color::BLACK,
1243+
renderer.fill_quad(core::renderer::Quad {
12441244
bounds,
1245-
);
1245+
..Default::default()
1246+
}, core::Background::Color(bg_color));
1247+
1248+
let underline = 2.;
1249+
renderer.fill_quad(core::renderer::Quad {
1250+
bounds: bounds.shrink(core::Padding {
1251+
top: bounds.height - underline,
1252+
..Default::default()
1253+
}),
1254+
..Default::default()
1255+
}, core::Background::Color(fore_color));
1256+
1257+
renderer.fill_paragraph(content, top_left, fore_color, bounds);
12461258
});
12471259
}
12481260
}

0 commit comments

Comments
 (0)