gecko/layout/base/nsDisplayItemTypes.h
Chris Lord 37292f8877 Bug 772079 - Fix ThebesLayerInvalidRegion being destroyed too soon. r=roc
A comment in ApplyThebesLayerInvalidation says that it preserves the content
of ThebesLayerInvalidRegion, in case there are multiple container layers for
the same frame. SetHasContainerLayer, however, immediately clears said property.

This was causing invalidations to be lost since Bug 758620 on fixed-position
elements, as they were being separated out onto their own layers but were still
merged in the root scroll layer. This is tracked in Bug 769541.

This fixes the problem by storing the new invalid region in DisplayItemDataEntry
and clearing/setting the ThebesLayerInvalidRegion property in the
UpdateDisplayItemData callback from FrameLayerBuilder::WillEndTransaction.
2012-07-14 08:49:05 +01:00

118 lines
2.7 KiB
C

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* vim: set ts=2 sw=2 et tw=78:
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/**
* It's useful to be able to dynamically check the type of certain items.
* Every subclass of nsDisplayItem must have a new type added here for the purposes
* of easy comparison and matching of items in different display lists.
*
* This is #included inside nsDisplayItem.
*/
enum Type {
TYPE_ALT_FEEDBACK = 1,
TYPE_BACKGROUND,
TYPE_BORDER,
TYPE_BOX_SHADOW_OUTER,
TYPE_BOX_SHADOW_INNER,
TYPE_BULLET,
TYPE_BUTTON_BORDER_BACKGROUND,
TYPE_BUTTON_BOX_SHADOW_OUTER,
TYPE_BUTTON_FOREGROUND,
TYPE_CANVAS,
TYPE_CANVAS_BACKGROUND,
TYPE_CANVAS_FOCUS,
TYPE_CARET,
TYPE_CHECKED_CHECKBOX,
TYPE_CHECKED_RADIOBUTTON,
TYPE_CLIP,
TYPE_CLIP_ROUNDED_RECT,
TYPE_COLUMN_RULE,
TYPE_COMBOBOX_FOCUS,
TYPE_EVENT_RECEIVER,
TYPE_FIELDSET_BORDER_BACKGROUND,
TYPE_FIXED_POSITION,
TYPE_FORCEPAINTONSCROLL,
TYPE_FRAMESET_BORDER,
TYPE_FRAMESET_BLANK,
TYPE_HEADER_FOOTER,
TYPE_IMAGE,
TYPE_LIST_FOCUS,
TYPE_OPACITY,
TYPE_OPTION_EVENT_GRABBER,
TYPE_OUTLINE,
TYPE_OWN_LAYER,
TYPE_PAGE_CONTENT,
TYPE_PAGE_SEQUENCE,
TYPE_PLUGIN,
TYPE_PLUGIN_READBACK,
TYPE_PRINT_PLUGIN,
TYPE_REMOTE,
TYPE_REMOTE_SHADOW,
TYPE_SCROLL_LAYER,
TYPE_SCROLL_INFO_LAYER,
TYPE_SELECTION_OVERLAY,
TYPE_SOLID_COLOR,
TYPE_SVG_EFFECTS,
TYPE_SVG_OUTER_SVG,
TYPE_TABLE_CELL_BACKGROUND,
TYPE_TABLE_CELL_SELECTION,
TYPE_TABLE_ROW_BACKGROUND,
TYPE_TABLE_ROW_GROUP_BACKGROUND,
TYPE_TABLE_BORDER_BACKGROUND,
TYPE_TEXT,
TYPE_TEXT_DECORATION,
TYPE_TEXT_OVERFLOW,
TYPE_TEXT_SHADOW,
TYPE_TRANSFORM,
TYPE_VIDEO,
TYPE_WRAP_LIST,
TYPE_ZOOM,
TYPE_EXCLUDE_GLASS_FRAME,
#if defined(MOZ_REFLOW_PERF_DSP) && defined(MOZ_REFLOW_PERF)
TYPE_REFLOW_COUNT,
#endif
#ifdef MOZ_XUL
TYPE_XUL_EVENT_REDIRECTOR,
TYPE_XUL_GROUP_BACKGROUND,
TYPE_XUL_IMAGE,
TYPE_XUL_TEXT_BOX,
TYPE_XUL_TREE_BODY,
TYPE_XUL_TREE_COL_SPLITTER_TARGET,
#ifdef DEBUG_LAYOUT
TYPE_XUL_DEBUG,
#endif
#endif
TYPE_MATHML_BAR,
TYPE_MATHML_CHAR_BACKGROUND,
TYPE_MATHML_CHAR_FOREGROUND,
TYPE_MATHML_ERROR,
TYPE_MATHML_MENCLOSE_NOTATION,
TYPE_MATHML_SELECTION_RECT,
TYPE_MATHML_SLASH,
#ifdef DEBUG
TYPE_MATHML_BOUNDING_METRICS,
TYPE_MATHML_CHAR_DEBUG,
#endif
#ifdef DEBUG
TYPE_DEBUG_BORDER,
TYPE_DEBUG_IMAGE_MAP,
TYPE_DEBUG_PLACEHOLDER,
TYPE_EVENT_TARGET_BORDER,
#endif
TYPE_MAX
};
enum {
// Number of bits needed to represent all types
TYPE_BITS = 8
};