diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index a26ae73893..23433eba01 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -341,143 +341,172 @@
* 0.8);
* }
* ]|
- *
- * The various ways to express colors in GTK+ CSS are:
- *
- *
- *
- *
- * Syntax
- * Explanation
- * Examples
- *
- *
- *
- *
- * rgb(@r, @g, @b)
- * An opaque color; @r, @g, @b can be either integers between
- * 0 and 255 or percentages
- * rgb(128, 10, 54)
- * rgb(20%, 30%, 0%)
- *
- *
- * rgba(@r, @g, @b, @a)
- * A translucent color; @r, @g, @b are as in the previous row,
- * @a is a floating point number between 0 and 1
- * rgba(255, 255, 0, 0.5)
- *
- *
- * #@xxyyzz
- * An opaque color; @xx, @yy, @zz are hexadecimal numbers
- * specifying @r, @g, @b variants with between 1 and 4
- * hexadecimal digits per component are allowed
- * #ff12ab
- * #f0c
- *
- *
- * @name
- * Reference to a color that has been defined with
- * @define-color
- *
- * @bg_color
- *
- *
- * mix(@color1, @color2, @f)
- * A linear combination of @color1 and @color2. @f is a
- * floating point number between 0 and 1.
- * mix(#ff1e0a, @bg_color, 0.8)
- *
- *
- * shade(@color, @f)
- * A lighter or darker variant of @color. @f is a
- * floating point number.
- *
- * shade(@fg_color, 0.5)
- *
- *
- * lighter(@color)
- * A lighter variant of @color
- *
- *
- * darker(@color)
- * A darker variant of @color
- *
- *
- * alpha(@color, @f)
- * Modifies passed color’s alpha by a factor @f. @f is a
- * floating point number. @f < 1.0 results in a more transparent
- * color while @f > 1.0 results in a more opaque color.
- *
- * alhpa(blue, 0.5)
- *
- *
- *
- *
+ *
+ * # Specifying Colors
+ * There are various ways to express colors in GTK+ CSS.
+ *
+ * ## rgb(r, g, b)
+ *
+ * An opaque color.
+ *
+ * - `r`, `g`, `b` can be either integers between 0 and 255, or percentages.
+ *
+ * |[
+ * color: rgb(128, 10, 54);
+ * background-color: rgb(20%, 30%, 0%);
+ * ]|
+ *
+ * ## rgba(r, g, b, a)
+ *
+ * A translucent color.
+ *
+ * - `r`, `g`, `b` can be either integers between 0 and 255, or percentages.
+ * - `a` is a floating point number between 0 and 1.
+ *
+ * |[
+ * color: rgb(128, 10, 54, 0.5);
+ * ]|
+ *
+ * ## #xxyyzz
+ *
+ * An opaque color.
+ *
+ * - `xx`, `yy`, `zz` are hexadecimal numbers specifying `r`, `g`, `b`
+ * variants with between 1 and 4 hexadecimal digits per component.
+ *
+ * |[
+ * color: #f0c;
+ * background-color: #ff00cc;
+ * border-color: #ffff0000cccc;
+ * ]|
+ *
+ * ## @name
+ *
+ * Reference to a color that has been defined with @define-color
+ *
+ * |[
+ * color: @bg_color;
+ * ]|
+ *
+ * ## mix(color1, color2, factor)
+ *
+ * A linear combination of `color1` and `color2`.
+ *
+ * - `factor` is a floating point number between 0 and 1.
+ *
+ * |[
+ * color: mix(#ff1e0a, @bg_color, 0.8);
+ * ]|
+ *
+ * ## shade(color, factor)
+ *
+ * A lighter or darker variant of `color`.
+ *
+ * - `factor` is a floating point number.
+ *
+ * |[
+ * color: shade(@fg_color, 0.5);
+ * ]|
+ *
+ * ## lighter(color)
+ *
+ * A lighter variant of `color`.
+ *
+ * |[
+ * color: lighter(@fg_color);
+ * ]|
+ *
+ * ## darker(color)
+ *
+ * A darker variant of `color`.
+ *
+ * |[
+ * color: darker(@bg_color);
+ * ]|
+ *
+ * ## alpha(color, factor)
+ *
+ * Modifies passed color’s alpha by a factor.
+ *
+ * - `factor` is a floating point number. `factor` < 1.0 results in a more
+ * transparent color while `factor` > 1.0 results in a more opaque color.
+ *
+ * |[
+ * color: alpha(@fg_color, 0.5);
+ * ]|
+ *
*
* # Gradients
*
- * Linear or radial Gradients can be used as background images.
+ * Linear or radial gradients can be used as background images.
+ *
+ * ## Linear Gradients
+ *
+ * A linear gradient along the line from (`start_x`, `start_y`) to
+ * (`end_x`, `end_y`) is specified using the following syntax:
+ *
+ * > `-gtk-gradient (linear, start_x start_y, end_x end_y, color-stop (position, color), ...)`
+ *
+ * - `start_x` and `end_x` can be either a floating point number between
+ * 0 and 1, or one of the special values: “left”, “right”, or “center”.
+ * - `start_y` and `end_y` can be either a floating point number between 0 and 1, or one
+ * of the special values: “top”, “bottom” or “center”.
+ * - `position` is a floating point number between 0 and 1.
+ * - `color` is a color expression (see above).
*
- * A linear gradient along the line from (@start_x, @start_y) to
- * (@end_x, @end_y) is specified using the syntax
- * -gtk-gradient (linear,
- * @start_x @start_y, @end_x @end_y,
- * color-stop (@position, @color),
- * ...)
- * where @start_x and @end_x can be either a floating point number between
- * 0 and 1 or one of the special values “left”, “right” or “center”, @start_y
- * and @end_y can be either a floating point number between 0 and 1 or one
- * of the special values “top”, “bottom” or “center”, @position is a floating
- * point number between 0 and 1 and @color is a color expression (see above).
* The color-stop can be repeated multiple times to add more than one color
- * stop. “from (@color)” and “to (@color)” can be used as abbreviations for
+ * stop. “from (color)” and “to (color)” can be used as abbreviations for
* color stops with position 0 and 1, respectively.
*
- * An example for a linear gradient:
+ * ## Example: Linear Gradient
* ![](gradient1.png)
- * This gradient was specified with
- * -gtk-gradient (linear,
+ * |[
+ * -gtk-gradient (linear,
* left top, right bottom,
- * from(@yellow), to(@blue))
+ * from(@yellow), to(@blue));
+ * ]|
*
- * Another example for a linear gradient:
+ * ## Example: Linear Gradient 2
* ![](gradient2.png)
- * This gradient was specified with
- * -gtk-gradient (linear,
+ * |[
+ * -gtk-gradient (linear,
* 0 0, 0 1,
- * color-stop(0, @yellow),
- * color-stop(0.2, @blue),
- * color-stop(1, #0f0))
+ * color-stop(0, @yellow),
+ * color-stop(0.2, @blue),
+ * color-stop(1, #0f0))
+ * ]|
*
- * A radial gradient along the two circles defined by (@start_x, @start_y,
- * @start_radius) and (@end_x, @end_y, @end_radius) is specified using the
- * syntax
- * -gtk-gradient (radial,
- * @start_x @start_y, @start_radius,
- * @end_x @end_y, @end_radius,
- * color-stop (@position, @color),
- * ...)
- * where @start_radius and @end_radius are floating point numbers and
- * the other parameters are as before.
+ * ## Radial Gradients
*
- * An example of a radial gradient:
+ * A radial gradient along the two circles defined by (`start_x`,
+ * `start_y`, `start_radius`) and (`end_x`, `end_y`, `end_radius`) is
+ * specified using the following syntax:
+ *
+ * > `-gtk-gradient (radial, start_x start_y, start_radius, end_x end_y, end_radius, color-stop (position, color), ...)`
+ *
+ * where `start_radius` and `end_radius` are floating point numbers
+ * and the other parameters are as before.
+ *
+ * ## Example: Radial Gradient
* ![](gradient3.png)
- * This gradient was specified with
- * -gtk-gradient (radial,
+ * |[
+ * -gtk-gradient (radial,
* center center, 0,
* center center, 1,
- * from(@yellow), to(@green))
+ * from(@yellow), to(@green))
+ * ]|
*
- * Another example of a radial gradient:
+ * ## Example: Radial Gradient 2
* ![](gradient4.png)
- * This gradient was specified with
- * -gtk-gradient (radial,
+ * |[
+ * -gtk-gradient (radial,
* 0.4 0.4, 0.1,
* 0.6 0.6, 0.7,
- * color-stop (0, #f00),
- * color-stop (0.1, #a0f),
- * color-stop (0.2, @yellow),
- * color-stop (1, @green))
+ * color-stop (0, #f00),
+ * color-stop (0.1, #a0f),
+ * color-stop (0.2, @yellow),
+ * color-stop (1, @green))
+ * ]|
*
* # Text shadow
*
@@ -485,19 +514,22 @@
* text-shadow syntax, as defined in the
* [CSS3 Specification](http://www.w3.org/TR/css3-text/#text-shadow).
*
- * A text shadow is specified using the syntax
- * text-shadow: @horizontal_offset @vertical_offset [ @blur_radius ] @color
- * The offset of the shadow is specified with the @horizontal_offset and @vertical_offset
- * parameters. The optional blur radius is parsed, but it is currently not rendered by
- * the GTK+ theming engine.
+ * A text shadow is specified using the following syntax:
*
- * To set a shadow on an icon, use the icon-shadow property instead,
+ * > `text-shadow: horizontal_offset vertical_offset [ blur_radius ] color`
+ *
+ * - The offset of the shadow is specified with the
+ * `horizontal_offset` and `vertical_offset` parameters.
+ * - The optional blur radius is parsed, but it is currently not
+ * rendered by the GTK+ theming engine.
+ *
+ * To set a shadow on an icon, use the `icon-shadow` property instead,
* with the same syntax.
*
* To set multiple shadows on an element, you can specify a comma-separated list
- * of shadow elements in the text-shadow or icon-shadow property. Shadows are
- * always rendered front-back, i.e. the first shadow specified is on top of the
- * others. Shadows can thus overlay each other, but they can never overlay the
+ * of shadow elements in the `text-shadow` or `icon-shadow` property. Shadows are
+ * always rendered front to back (i.e. the first shadow specified is on top of the
+ * others). Shadows can thus overlay each other, but they can never overlay the
* text or icon itself, which is always rendered on top of the shadow layer.
*
* # Box shadow
@@ -506,19 +538,22 @@
* as defined in the
* [CSS3 Specification](http://www.w3.org/TR/css3-background/#the-box-shadow).
*
- * A box shadow is specified using the syntax
- * box-shadow: [ @inset ] @horizontal_offset @vertical_offset [ @blur_radius ] [ @spread ] @color
- * A positive offset will draw a shadow that is offset to the right (down) of the box,
- * a negative offset to the left (top). The optional spread parameter defines an additional
- * distance to expand the shadow shape in all directions, by the specified radius.
- * The optional blur radius parameter is parsed, but it is currently not rendered by
+ * A box shadow is specified using the following syntax:
+ *
+ * > `box-shadow: [ inset ] horizontal_offset vertical_offset [ blur_radius ] [ spread ] color`
+ *
+ * - A positive offset will draw a shadow that is offset to the right (down) of the box,
+ * - A negative offset to the left (top).
+ * - The optional spread parameter defines an additional distance to
+ * expand the shadow shape in all directions, by the specified radius.
+ * - The optional blur radius parameter is parsed, but it is currently not rendered by
* the GTK+ theming engine.
- * The inset parameter defines whether the drop shadow should be rendered inside or outside
+ * - The inset parameter defines whether the drop shadow should be rendered inside or outside
* the box canvas.
*
* To set multiple box-shadows on an element, you can specify a comma-separated list
- * of shadow elements in the box-shadow property. Shadows are always rendered
- * front-back, i.e. the first shadow specified is on top of the others, so they may
+ * of shadow elements in the `box-shadow` property. Shadows are always rendered
+ * front to back (i.e. the first shadow specified is on top of the others) so they may
* overlap other boxes or other shadows.
*
* # Border images
@@ -529,76 +564,119 @@
*
* ![](slices.png)
*
- * The parameters of the slicing process are controlled by
- * four separate properties. Note that you can use the
- * border-image shorthand property
- * to set values for the three properties at the same time.
+ * The parameters of the slicing process are controlled by four
+ * separate properties.
*
- * border-image-source: url(@path)
- * (or border-image-source: -gtk-gradient(...)):
- * Specifies the source of the border image, and it can either
- * be an URL or a gradient (see above).
+ * - Image Source
+ * - Image Slice
+ * - Image Width
+ * - Image Repeat
*
- * border-image-slice: @top @right @bottom @left
- * The sizes specified by the @top, @right, @bottom and @left parameters
- * are the offsets, in pixels, from the relevant edge where the image
+ * Note that you can use the `border-image` shorthand property to set
+ * values for the properties at the same time.
+ *
+ * ## Image Source
+ *
+ * The border image source can be specified either as a
+ * URL or a gradient:
+ * |[
+ * border-image-source: url(path);
+ * ]|
+ * or
+ * |[
+ * border-image-source: -gtk-gradient(...);
+ * ]|
+ *
+ * ## Image Slice
+ *
+ * |[
+ * border-image-slice: top right bottom left;
+ * ]|
+ *
+ * The sizes specified by the `top`, `right`, `bottom`, and `left` parameters
+ * are the offsets (in pixels) from the relevant edge where the image
* should be “cut off” to build the slices used for the rendering
* of the border.
*
- * border-image-width: @top @right @bottom @left
+ * ## Image Width
+ *
+ * |[
+ * border-image-width: top right bottom left;
+ * ]|
+ *
* The sizes specified by the @top, @right, @bottom and @left parameters
* are inward distances from the border box edge, used to specify the
* rendered size of each slice determined by border-image-slice.
* If this property is not specified, the values of border-width will
* be used as a fallback.
*
- * border-image-repeat: [stretch|repeat|round|space] ?
- * [stretch|repeat|round|space]
+ * ## Image Repeat
+ *
* Specifies how the image slices should be rendered in the area
* outlined by border-width.
- * The default (stretch) is to resize the slice to fill in the whole
- * allocated area.
- * If the value of this property is “repeat”, the image slice
- * will be tiled to fill the area.
- * If the value of this property is “round”, the image slice will
- * be tiled to fill the area, and scaled to fit it exactly
- * a whole number of times.
- * If the value of this property is “space”, the image slice will
- * be tiled to fill the area, and if it doesn’t fit it exactly a whole
- * number of times, the extra space is distributed as padding around
+ *
+ * |[
+ * border-image-repeat: [stretch|repeat|round|space];
+ * ]|
+ * or
+ * |[
+ * border-image-repeat: [stretch|repeat|round|space] [stretch|repeat|round|space];
+ * ]|
+ *
+ * - The default (stretch) is to resize the slice to fill in the
+ * whole allocated area.
+ *
+ * - If the value of this property is “repeat”, the image slice will
+ * be tiled to fill the area.
+ *
+ * - If the value of this property is “round”, the image slice will be
+ * tiled to fill the area, and scaled to fit it exactly a whole number
+ * of times.
+ *
+ * - If the value of this property is “space”, the image slice will be
+ * tiled to fill the area, and if it doesn’t fit it exactly a whole
+ * number of times, the extra space is distributed as padding around
* the slices.
- * If two options are specified, the first one affects
- * the horizontal behaviour and the second one the vertical behaviour.
- * If only one option is specified, it affects both.
*
- * An example of a border image:
+ * - If two options are specified, the first one affects the
+ * horizontal behaviour and the second one the vertical behaviour. If
+ * only one option is specified, it affects both.
+ *
+ *
+ * ## Example: Border Image
* ![](border1.png)
- * This border image was specified with
- * url("gradient1.png") 10 10 10 10
+ * |[
+ * border-image: url("gradient1.png") 10 10 10 10;
+ * ]|
*
- * An example of a repeating border image:
+ * ## Example: Repeating Border Image
* ![](border2.png)
- * This border image was specified with
- * url("gradient1.png") 10 10 10 10 repeat
+ * |[
+ * border-image: url("gradient1.png") 10 10 10 10 repeat;
+ * ]|
*
- * An example of a stretched border image:
+ * ## Example: Stetched Border Image
* ![](border3.png)
- * This border image was specified with
- * url("gradient1.png") 10 10 10 10 stretch
+ * |[
+ * border-image: url("gradient1.png") 10 10 10 10 stretch;
+ * ]|
*
* # Transitions
*
* Styles can specify transitions that will be used to create a gradual
* change in the appearance when a widget state changes. The following
* syntax is used to specify transitions:
- * @duration [s|ms] [linear|ease|ease-in|ease-out|ease-in-out] [loop]?
- * The @duration is the amount of time that the animation will take for
- * a complete cycle from start to end. If the loop option is given, the
- * animation will be repated until the state changes again.
- * The option after the duration determines the transition function from a
- * small set of predefined functions.
*
- * # Linear transition
+ * > `duration [s|ms] [linear|ease|ease-in|ease-out|ease-in-out] [loop]?`
+ *
+ * - The `duration` is the amount of time that the animation will take
+ * for a complete cycle from start to end.
+ * - If the loop option is given, the animation will be repated until
+ * the state changes again.
+ * - The option after the duration determines the transition function
+ * from a small set of predefined functions.
+ *
+ * ## Linear Transition
*
* ![](linear.png)
*
@@ -618,12 +696,12 @@
*
* ![](ease-out.png)
*
- * # Supported properties
+ * # Supported Properties
*
- * Properties are the part that differ the most to common CSS,
- * not all properties are supported (some are planned to be
- * supported eventually, some others are meaningless or don't
- * map intuitively in a widget based environment).
+ * Properties are the part that differ the most to common CSS, not all
+ * properties are supported (some are planned to be supported
+ * eventually, some others are meaningless or don't map intuitively in
+ * a widget based environment).
*
* The currently supported properties are:
*
@@ -897,7 +975,7 @@
* GtkThemingEngines can register their own, engine-specific style properties
* with the function gtk_theming_engine_register_property(). These properties
* can be set in CSS like other properties, using a name of the form
- * -namespace-name, where namespace is typically
+ * `-namespace-name`, where namespace is typically
* the name of the theming engine, and name is the
* name of the property. Style properties that have been registered by widgets
* using gtk_widget_class_install_style_property() can also be set in this