Use base colors iff program style's background color is not opaque for IME preedit

This commit is contained in:
KENZ 2026-03-21 01:50:59 +09:00 • committed by Ashley Wulber
parent 594ed5cfbe
commit 84f3210819

View file

@ -11,7 +11,7 @@ use crate::core::input_method;
use crate::core::mouse; use crate::core::mouse;
use crate::core::renderer; use crate::core::renderer;
use crate::core::text; use crate::core::text;
use crate::core::theme; use crate::core::theme::{self, Base};
use crate::core::time::Instant; use crate::core::time::Instant;
use crate::core::{ use crate::core::{
Color, Element, InputMethod, Padding, Point, Rectangle, Size, Text, Vector, Color, Element, InputMethod, Padding, Point, Rectangle, Size, Text, Vector,
@ -266,10 +266,16 @@ where
let mut overlay = let mut overlay =
self.preedit.take().unwrap_or_else(Preedit::new); self.preedit.take().unwrap_or_else(Preedit::new);
let mut background_color =
self.state.background_color();
if background_color.a < 1.0 {
let style = self.state.theme().base();
background_color = style.background_color;
}
overlay.update( overlay.update(
cursor, cursor,
&preedit, &preedit,
self.state.background_color(), background_color,
&self.renderer, &self.renderer,
); );
@ -300,10 +306,17 @@ where
pub fn draw_preedit(&mut self) { pub fn draw_preedit(&mut self) {
if let Some(preedit) = &self.preedit { if let Some(preedit) = &self.preedit {
let mut text_color = self.state.text_color();
let mut background_color = self.state.background_color();
if background_color.a < 1.0 {
let style = self.state.theme().base();
text_color = style.text_color;
background_color = style.background_color;
}
preedit.draw( preedit.draw(
&mut self.renderer, &mut self.renderer,
self.state.text_color(), text_color,
self.state.background_color(), background_color,
&Rectangle::new( &Rectangle::new(
Point::ORIGIN, Point::ORIGIN,
self.state.viewport().logical_size(), self.state.viewport().logical_size(),