mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1055585 - Add nsDisplayClearBackground. r=roc
This commit is contained in:
parent
c1e7e1d0f7
commit
000d7be674
@ -19,6 +19,7 @@ DECLARE_DISPLAY_ITEM_TYPE(CANVAS_FOCUS)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(CARET)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(CHECKED_CHECKBOX)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(CHECKED_RADIOBUTTON)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(CLEAR_BACKGROUND)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(COLUMN_RULE)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(COMBOBOX_FOCUS)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(EVENT_RECEIVER)
|
||||
|
@ -2651,6 +2651,29 @@ nsDisplayBackgroundColor::WriteDebugInfo(nsACString& aTo)
|
||||
}
|
||||
#endif
|
||||
|
||||
already_AddRefed<Layer>
|
||||
nsDisplayClearBackground::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aParameters)
|
||||
{
|
||||
nsRefPtr<ColorLayer> layer = static_cast<ColorLayer*>
|
||||
(aManager->GetLayerBuilder()->GetLeafLayerFor(aBuilder, this));
|
||||
if (!layer) {
|
||||
layer = aManager->CreateColorLayer();
|
||||
if (!layer)
|
||||
return nullptr;
|
||||
}
|
||||
layer->SetColor(NS_RGBA(0, 0, 0, 0));
|
||||
layer->SetMixBlendMode(gfx::CompositionOp::OP_SOURCE);
|
||||
|
||||
bool snap;
|
||||
nsRect bounds = GetBounds(aBuilder, &snap);
|
||||
int32_t appUnitsPerDevPixel = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
layer->SetBounds(bounds.ToNearestPixels(appUnitsPerDevPixel)); // XXX Do we need to respect the parent layer's scale here?
|
||||
|
||||
return layer.forget();
|
||||
}
|
||||
|
||||
nsRect
|
||||
nsDisplayOutline::GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) {
|
||||
*aSnap = false;
|
||||
|
@ -2297,6 +2297,45 @@ protected:
|
||||
gfxRGBA mColor;
|
||||
};
|
||||
|
||||
class nsDisplayClearBackground : public nsDisplayItem
|
||||
{
|
||||
public:
|
||||
nsDisplayClearBackground(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame)
|
||||
: nsDisplayItem(aBuilder, aFrame)
|
||||
{ }
|
||||
|
||||
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) MOZ_OVERRIDE
|
||||
{
|
||||
*aSnap = true;
|
||||
return nsRect(ToReferenceFrame(), Frame()->GetSize());
|
||||
}
|
||||
|
||||
virtual nsRegion GetOpaqueRegion(nsDisplayListBuilder* aBuilder,
|
||||
bool* aSnap) MOZ_OVERRIDE {
|
||||
*aSnap = false;
|
||||
return GetBounds(aBuilder, aSnap);
|
||||
}
|
||||
|
||||
virtual bool IsUniform(nsDisplayListBuilder* aBuilder, nscolor* aColor) MOZ_OVERRIDE
|
||||
{
|
||||
*aColor = NS_RGBA(0, 0, 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aParameters) MOZ_OVERRIDE
|
||||
{
|
||||
return mozilla::LAYER_ACTIVE_FORCE;
|
||||
}
|
||||
|
||||
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aContainerParameters) MOZ_OVERRIDE;
|
||||
|
||||
NS_DISPLAY_DECL_NAME("ClearBackground", TYPE_CLEAR_BACKGROUND)
|
||||
};
|
||||
|
||||
/**
|
||||
* The standard display item to paint the outer CSS box-shadows of a frame.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user