Allow easier setting of background color for TextEdit (#5203)
* Closes <https://github.com/emilk/egui/issues/5183> * [x] I have followed the instructions in the PR template
This commit is contained in:
parent
1406e8717c
commit
0f2b427ff4
|
|
@ -59,7 +59,7 @@ use super::{TextEditOutput, TextEditState};
|
|||
/// See [`TextEdit::show`].
|
||||
///
|
||||
/// ## Other
|
||||
/// The background color of a [`crate::TextEdit`] is [`crate::Visuals::extreme_bg_color`].
|
||||
/// The background color of a [`crate::TextEdit`] is [`crate::Visuals::extreme_bg_color`] or can be set with [`crate::TextEdit::background_color`].
|
||||
#[must_use = "You should put this widget in a ui with `ui.add(widget);`"]
|
||||
pub struct TextEdit<'t> {
|
||||
text: &'t mut dyn TextBuffer,
|
||||
|
|
@ -84,6 +84,7 @@ pub struct TextEdit<'t> {
|
|||
clip_text: bool,
|
||||
char_limit: usize,
|
||||
return_key: Option<KeyboardShortcut>,
|
||||
background_color: Option<Color32>,
|
||||
}
|
||||
|
||||
impl<'t> WidgetWithState for TextEdit<'t> {
|
||||
|
|
@ -142,6 +143,7 @@ impl<'t> TextEdit<'t> {
|
|||
clip_text: false,
|
||||
char_limit: usize::MAX,
|
||||
return_key: Some(KeyboardShortcut::new(Modifiers::NONE, Key::Enter)),
|
||||
background_color: None,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -201,6 +203,14 @@ impl<'t> TextEdit<'t> {
|
|||
self
|
||||
}
|
||||
|
||||
/// Set the background color of the [`TextEdit`]. The default is [`crate::Visuals::extreme_bg_color`].
|
||||
// TODO(bircni): remove this once #3284 is implemented
|
||||
#[inline]
|
||||
pub fn background_color(mut self, color: Color32) -> Self {
|
||||
self.background_color = Some(color);
|
||||
self
|
||||
}
|
||||
|
||||
/// Set a specific style for the hint text.
|
||||
#[inline]
|
||||
pub fn hint_text_font(mut self, hint_text_font: impl Into<FontSelection>) -> Self {
|
||||
|
|
@ -409,7 +419,9 @@ impl<'t> TextEdit<'t> {
|
|||
let is_mutable = self.text.is_mutable();
|
||||
let frame = self.frame;
|
||||
let where_to_put_background = ui.painter().add(Shape::Noop);
|
||||
|
||||
let background_color = self
|
||||
.background_color
|
||||
.unwrap_or(ui.visuals().extreme_bg_color);
|
||||
let margin = self.margin;
|
||||
let mut output = self.show_content(ui);
|
||||
|
||||
|
|
@ -427,14 +439,14 @@ impl<'t> TextEdit<'t> {
|
|||
epaint::RectShape::new(
|
||||
frame_rect,
|
||||
visuals.rounding,
|
||||
ui.visuals().extreme_bg_color,
|
||||
background_color,
|
||||
ui.visuals().selection.stroke,
|
||||
)
|
||||
} else {
|
||||
epaint::RectShape::new(
|
||||
frame_rect,
|
||||
visuals.rounding,
|
||||
ui.visuals().extreme_bg_color,
|
||||
background_color,
|
||||
visuals.bg_stroke, // TODO(emilk): we want to show something here, or a text-edit field doesn't "pop".
|
||||
)
|
||||
}
|
||||
|
|
@ -477,6 +489,7 @@ impl<'t> TextEdit<'t> {
|
|||
clip_text,
|
||||
char_limit,
|
||||
return_key,
|
||||
background_color: _,
|
||||
} = self;
|
||||
|
||||
let text_color = text_color
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
Example showing some UI controls like `Label`, `TextEdit`, `Slider`, `Button`.
|
||||
|
||||
```sh
|
||||
cargo run -p hello_world
|
||||
cargo run -p hello_world_simple
|
||||
```
|
||||
|
||||

|
||||
|
|
|
|||
Loading…
Reference in New Issue