1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-31 05:40:03 -04:00

Split "disabling" and "graying out".

Split these two behaviours into different functions, as either behaviour is sometimes desirable.
This commit is contained in:
tye-exe
2025-05-25 09:43:35 +01:00
parent 5df8faf5cb
commit ef20e2c071
2 changed files with 15 additions and 6 deletions

View File

@@ -1019,7 +1019,7 @@ pub struct Visuals {
/// How to display numeric color values. /// How to display numeric color values.
pub numeric_color_space: NumericColorSpace, pub numeric_color_space: NumericColorSpace,
/// Opacity is multiplied by this amount when fading out widgets. /// How much to modify the alpha of a disabled widget.
pub disabled_alpha: f32, pub disabled_alpha: f32,
} }
@@ -1055,17 +1055,26 @@ impl Visuals {
self.window_stroke self.window_stroke
} }
/// When fading out things, we multiply the opacity by this. /// Disabled widgets have their alpha modified by this.
#[inline(always)] #[inline(always)]
pub fn disabled_alpha(&self) -> f32 { pub fn disabled_alpha(&self) -> f32 {
self.disabled_alpha self.disabled_alpha
} }
/// Returned a "grayed out" version of the given color. /// Returns a "disabled" version of the given color.
///
/// This function modifies the opcacity of the given color.
/// If this is undesirable use [`gray_out`](Self::gray_out).
#[inline(always)]
pub fn disable(&self, color: Color32) -> Color32 {
color.gamma_multiply(self.disabled_alpha())
}
/// Returns a "grayed out" version of the given color.
#[doc(alias = "grey_out")] #[doc(alias = "grey_out")]
#[inline(always)] #[inline(always)]
pub fn gray_out(&self, color: Color32) -> Color32 { pub fn gray_out(&self, color: Color32) -> Color32 {
color.gamma_multiply(self.disabled_alpha()) crate::ecolor::tint_color_towards(color, self.widgets.noninteractive.weak_bg_fill)
} }
} }

View File

@@ -2963,8 +2963,8 @@ impl Ui {
if is_anything_being_dragged && !can_accept_what_is_being_dragged { if is_anything_being_dragged && !can_accept_what_is_being_dragged {
// When dragging something else, show that it can't be dropped here: // When dragging something else, show that it can't be dropped here:
fill = self.visuals().gray_out(fill); fill = self.visuals().disable(fill);
stroke.color = self.visuals().gray_out(stroke.color); stroke.color = self.visuals().disable(stroke.color);
} }
frame.frame.fill = fill; frame.frame.fill = fill;