mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 23:38:38 +09:00
[GTK3] Consider textview root node background in addition to text node for -moz-field
This is necessary for GTK versions > 3.18 because windows no longer clear their backgrounds since https://git.gnome.org/browse/gtk+/commit/?id=580ea227a6bb19ad6c6d4766b3a36dbad24583f3 and Ambiance for 3.20 has a transparent background for the "text" window.
This commit is contained in:
parent
3951327f27
commit
5ba7568c8d
1 changed files with 28 additions and 2 deletions
|
|
@ -62,6 +62,22 @@ nsLookAndFeel::~nsLookAndFeel()
|
|||
}
|
||||
|
||||
#if MOZ_WIDGET_GTK != 2
|
||||
// Modifies color |*aDest| as if a pattern of color |aSource| was painted with
|
||||
// CAIRO_OPERATOR_OVER to a surface with color |*aDest|.
|
||||
static void
|
||||
ApplyColorOver(const GdkRGBA& aSource, GdkRGBA* aDest) {
|
||||
gdouble sourceCoef = aSource.alpha;
|
||||
gdouble destCoef = aDest->alpha * (1.0 - sourceCoef);
|
||||
gdouble resultAlpha = sourceCoef + destCoef;
|
||||
if (resultAlpha != 0.0) { // don't divide by zero
|
||||
destCoef /= resultAlpha;
|
||||
sourceCoef /= resultAlpha;
|
||||
aDest->red = sourceCoef * aSource.red + destCoef * aDest->red;
|
||||
aDest->green = sourceCoef * aSource.green + destCoef * aDest->green;
|
||||
aDest->blue = sourceCoef * aSource.blue + destCoef * aDest->blue;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
GetLightAndDarkness(const GdkRGBA& aColor,
|
||||
double* aLightness, double* aDarkness)
|
||||
|
|
@ -1291,9 +1307,19 @@ nsLookAndFeel::Init()
|
|||
}
|
||||
#else
|
||||
// Text colors
|
||||
GdkRGBA bgColor;
|
||||
// If the text window background is translucent, then the background of
|
||||
// the textview root node is visible.
|
||||
style = ClaimStyleContext(MOZ_GTK_TEXT_VIEW);
|
||||
gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL,
|
||||
&bgColor);
|
||||
ReleaseStyleContext(style);
|
||||
|
||||
style = ClaimStyleContext(MOZ_GTK_TEXT_VIEW_TEXT);
|
||||
gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color);
|
||||
sMozFieldBackground = GDK_RGBA_TO_NS_RGBA(color);
|
||||
gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL,
|
||||
&color);
|
||||
ApplyColorOver(color, &bgColor);
|
||||
sMozFieldBackground = GDK_RGBA_TO_NS_RGBA(bgColor);
|
||||
gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color);
|
||||
sMozFieldText = GDK_RGBA_TO_NS_RGBA(color);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue