gtk-css-engine r103 - in trunk: . libccd/ccd libccd/examples src themes/gtk-css-test/gtk-2.0
- From: robsta svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk-css-engine r103 - in trunk: . libccd/ccd libccd/examples src themes/gtk-css-test/gtk-2.0
- Date: Fri, 12 Sep 2008 16:40:20 +0000 (UTC)
Author: robsta
Date: Fri Sep 12 16:40:20 2008
New Revision: 103
URL: http://svn.gnome.org/viewvc/gtk-css-engine?rev=103&view=rev
Log:
* libccd/ccd/ccd-background.c:
* libccd/ccd/ccd-background.h:
* libccd/ccd/ccd-border.c:
* libccd/ccd/ccd-border.h:
* libccd/ccd/ccd-gtk-style.c:
* libccd/ccd/ccd-style.c:
* src/gce-style.c:
Draw gap-boxes with rounded corners correctly.
Modified:
trunk/ (props changed)
trunk/ChangeLog
trunk/libccd/ccd/ccd-background.c
trunk/libccd/ccd/ccd-background.h
trunk/libccd/ccd/ccd-border.c
trunk/libccd/ccd/ccd-border.h
trunk/libccd/ccd/ccd-gtk-style.c
trunk/libccd/ccd/ccd-style.c
trunk/libccd/examples/internal.c
trunk/src/gce-style.c
trunk/themes/gtk-css-test/gtk-2.0/styles.css
Modified: trunk/libccd/ccd/ccd-background.c
==============================================================================
--- trunk/libccd/ccd/ccd-background.c (original)
+++ trunk/libccd/ccd/ccd-background.c Fri Sep 12 16:40:20 2008
@@ -86,13 +86,13 @@
}
/**
- * ccd_background_draw:
+ * ccd_background_fill:
*
* This function requires that a closed path exists, which is filled with
* the background. The path is not modified.
**/
void
-ccd_background_draw (ccd_background_color_t const *bg_color,
+ccd_background_fill (ccd_background_color_t const *bg_color,
ccd_background_image_t const *bg_image,
cairo_t *cr,
int32_t x,
Modified: trunk/libccd/ccd/ccd-background.h
==============================================================================
--- trunk/libccd/ccd/ccd-background.h (original)
+++ trunk/libccd/ccd/ccd-background.h Fri Sep 12 16:40:20 2008
@@ -53,7 +53,7 @@
bool ccd_background_parse (ccd_background_t *self, char const *property,
CRTerm const *values);
-void ccd_background_draw (ccd_background_color_t const *bg_color,
+void ccd_background_fill (ccd_background_color_t const *bg_color,
ccd_background_image_t const *bg_image,
cairo_t *cr, int32_t x, int32_t y,
int32_t width, int32_t height);
Modified: trunk/libccd/ccd/ccd-border.c
==============================================================================
--- trunk/libccd/ccd/ccd-border.c (original)
+++ trunk/libccd/ccd/ccd-border.c Fri Sep 12 16:40:20 2008
@@ -461,6 +461,11 @@
return true;
}
+/**
+ * line:
+ * @stroke: a #ccd_border_stroke_t or %NULL.
+ *
+ **/
static void
line (ccd_border_stroke_t const *stroke,
cairo_t *cr,
@@ -622,18 +627,20 @@
join (before, after, cr, xc, yc, radius, angle1, angle2);
- cairo_set_line_width (cr, before->width);
-
- /* TODO draw with gradient if colors are different. */
+ /* TODO draw with gradient if colors are different.
+ * Probably requires that the join has all the color information. */
if (before) {
+ cairo_set_line_width (cr, before->width);
cairo_set_source_rgb (cr,
before->color.red, before->color.green,
before->color.blue);
} else if (after) {
+ cairo_set_line_width (cr, after->width);
cairo_set_source_rgb (cr,
after->color.red, after->color.green,
after->color.blue);
} else {
+ cairo_set_line_width (cr, 1.);
cairo_set_source_rgb (cr, 0., 0., 0.);
}
@@ -668,6 +675,7 @@
ccd_border_join_t const *right_bottom,
ccd_border_stroke_t const *bottom,
ccd_border_join_t const *bottom_left,
+ uint32_t visibility_flags,
cairo_t *cr,
double x,
double y,
@@ -681,9 +689,12 @@
double x1, x2, y1, y2;
double xc, yc;
+ /* TODO this can be simplified by just using x2,y2.
+ * However, the initial cairo_move_to() still has to be calculated somehow. */
+
if (left) {
line_func = get_line_draw_func (left, path_only);
- xoff = left->width / 2.;
+ xoff = left ? left->width / 2. : 0;
yoff = bottom_left && bottom_left->radius_spec ? bottom_left->radius : 0;
x1 = x + xoff;
y1 = y + height - yoff;
@@ -691,82 +702,91 @@
y2 = y + (left_top && left_top->radius_spec ? left_top->radius : 0);
cairo_move_to (cr, x1, y1);
- line_func (left, cr, x1, y1, x2, y2);
+
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_LEFT & visibility_flags))
+ line_func (left, cr, x1, y1, x2, y2);
}
if (left_top) {
join_func = get_join_draw_func (left, top, path_only);
- xoff = left->width / 2.;
- yoff = top->width / 2.;
+ xoff = left ? left->width / 2. : 0;
+ yoff = top ? top->width / 2. : 0;
xc = x + left_top->radius + xoff;
yc = y + left_top->radius + yoff;
- join_func (left, top, cr, xc, yc,
- left_top->radius, _PI, 3 * _PI / 2);
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_LEFT_TOP & visibility_flags))
+ join_func (left, top, cr, xc, yc,
+ left_top->radius, _PI, 3 * _PI / 2);
}
if (top) {
line_func = get_line_draw_func (top, path_only);
xoff = left_top && left_top->radius_spec ? left_top->radius : 0;
- yoff = top->width / 2.;
+ yoff = top ? top->width / 2. : 0;
x1 = x + xoff;
y1 = y + yoff;
x2 = x + width - (top_right && top_right->radius_spec ?
top_right->radius : 0);
y2 = y1;
- line_func (top, cr, x1, y1, x2, y2);
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_TOP & visibility_flags))
+ line_func (top, cr, x1, y1, x2, y2);
}
if (top_right) {
join_func = get_join_draw_func (top, right, path_only);
- xoff = right->width / 2.;
- yoff = top->width / 2.;
+ xoff = right ? right->width / 2. : 0;
+ yoff = top ? top->width / 2. : 0;
xc = x + width - top_right->radius - xoff;
yc = y + top_right->radius + yoff;
- join_func (top, right, cr, xc, yc,
- top_right->radius, 3 * _PI / 2., 0);
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_TOP_RIGHT & visibility_flags))
+ join_func (top, right, cr, xc, yc,
+ top_right->radius, 3 * _PI / 2., 0);
}
if (right) {
line_func = get_line_draw_func (right, path_only);
- xoff = right->width / 2.;
+ xoff = right ? right->width / 2. : 0;
yoff = top_right && top_right->radius_spec ? top_right->radius : 0;
x1 = x + width - xoff;
y1 = y + yoff;
x2 = x1;
y2 = y + height - (right_bottom && right_bottom->radius_spec ?
right_bottom->radius : 0);
- line_func (right, cr, x1, y1, x2, y2);
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_RIGHT & visibility_flags))
+ line_func (right, cr, x1, y1, x2, y2);
}
if (right_bottom) {
join_func = get_join_draw_func (right, bottom, path_only);
- xoff = right->width / 2.;
- yoff = bottom->width / 2.;
+ xoff = right ? right->width / 2. : 0;
+ yoff = bottom ? bottom->width / 2. : 0;
xc = x + width - right_bottom->radius - xoff;
yc = y + height - right_bottom->radius - yoff;
- join_func (right, bottom, cr, xc, yc,
- right_bottom->radius, 0, _PI / 2.);
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_RIGHT_BOTTOM & visibility_flags))
+ join_func (right, bottom, cr, xc, yc,
+ right_bottom->radius, 0, _PI / 2.);
}
if (bottom) {
line_func = get_line_draw_func (bottom, path_only);
xoff = right_bottom && right_bottom->radius_spec ? right_bottom->radius : 0;
- yoff = bottom->width / 2.;
+ yoff = bottom ? bottom->width / 2. : 0;
x1 = x + width - xoff;
y1 = y + height - yoff;
x2 = x + (bottom_left && bottom_left->radius_spec ? bottom_left->radius : 0);
y2 = y1;
- line_func (bottom, cr, x1, y1, x2, y2);
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_BOTTOM & visibility_flags))
+ line_func (bottom, cr, x1, y1, x2, y2);
}
if (bottom_left) {
join_func = get_join_draw_func (bottom, left, path_only);
- xoff = left->width / 2.;
- yoff = bottom->width / 2.;
+ xoff = left ? left->width / 2. : 0;
+ yoff = bottom ? bottom->width / 2. : 0;
xc = x + bottom_left->radius + xoff;
yc = y + height - bottom_left->radius - yoff;
- join_func (bottom, left, cr, xc, yc,
- bottom_left->radius, _PI / 2., _PI);
+ if (path_only || !(CCD_BORDER_VISIBILITY_HIDE_BOTTOM_LEFT & visibility_flags))
+ join_func (bottom, left, cr, xc, yc,
+ bottom_left->radius, _PI / 2., _PI);
}
}
@@ -787,7 +807,7 @@
{
border (left, left_top, top, top_right,
right, right_bottom, bottom, bottom_left,
- cr, x, y, width, height, true);
+ CCD_BORDER_VISIBILITY_SHOW_ALL, cr, x, y, width, height, true);
cairo_close_path (cr);
}
@@ -801,6 +821,7 @@
ccd_border_join_t const *right_bottom,
ccd_border_stroke_t const *bottom,
ccd_border_join_t const *bottom_left,
+ uint32_t visibility_flags,
cairo_t *cr,
double x,
double y,
@@ -809,7 +830,7 @@
{
border (left, left_top, top, top_right,
right, right_bottom, bottom, bottom_left,
- cr, x, y, width, height, false);
+ visibility_flags, cr, x, y, width, height, false);
}
void
Modified: trunk/libccd/ccd/ccd-border.h
==============================================================================
--- trunk/libccd/ccd/ccd-border.h (original)
+++ trunk/libccd/ccd/ccd-border.h Fri Sep 12 16:40:20 2008
@@ -42,6 +42,18 @@
CCD_BORDER_STYLE_OUTSET
} ccd_border_style_t;
+typedef enum {
+ CCD_BORDER_VISIBILITY_SHOW_ALL = 0,
+ CCD_BORDER_VISIBILITY_HIDE_LEFT = 1 << 0,
+ CCD_BORDER_VISIBILITY_HIDE_LEFT_TOP = 1 << 1,
+ CCD_BORDER_VISIBILITY_HIDE_TOP = 1 << 2,
+ CCD_BORDER_VISIBILITY_HIDE_TOP_RIGHT = 1 << 3,
+ CCD_BORDER_VISIBILITY_HIDE_RIGHT = 1 << 4,
+ CCD_BORDER_VISIBILITY_HIDE_RIGHT_BOTTOM = 1 << 5,
+ CCD_BORDER_VISIBILITY_HIDE_BOTTOM = 1 << 6,
+ CCD_BORDER_VISIBILITY_HIDE_BOTTOM_LEFT = 1 << 7
+} ccd_border_visibility_t;
+
/*
* Remember which properties were set explicitely, e.g. using "border-top",
* so it's not overwritten by a subsequent "border" property.
@@ -137,7 +149,7 @@
ccd_border_join_t const *right_bottom,
ccd_border_stroke_t const *bottom,
ccd_border_join_t const *bottom_left,
- cairo_t *cr,
+ uint32_t visibility_flags, cairo_t *cr,
double x, double y, double width, double height);
void ccd_border_dump (ccd_border_t const *self);
Modified: trunk/libccd/ccd/ccd-gtk-style.c
==============================================================================
--- trunk/libccd/ccd/ccd-gtk-style.c (original)
+++ trunk/libccd/ccd/ccd-gtk-style.c Fri Sep 12 16:40:20 2008
@@ -44,70 +44,155 @@
int32_t gap_start,
int32_t gap_width)
{
- ccd_background_draw (self->bg_color, self->bg_image,
+ /* The rounding radii will have to be adjusted for certain gap
+ * positions, so we work on a copied set of them. */
+ ccd_border_join_t left_top;
+ ccd_border_join_t top_right;
+ ccd_border_join_t right_bottom;
+ ccd_border_join_t bottom_left;
+
+ CCD_BORDER_JOIN_ASSIGN (left_top, self->left_top);
+ CCD_BORDER_JOIN_ASSIGN (top_right, self->top_right);
+ CCD_BORDER_JOIN_ASSIGN (right_bottom, self->right_bottom);
+ CCD_BORDER_JOIN_ASSIGN (bottom_left, self->bottom_left);
+
+ switch (gap_side) {
+ case GTK_POS_LEFT:
+ if (bottom_left.radius > height - gap_start - gap_width)
+ bottom_left.radius = height - gap_start - gap_width;
+ if (left_top.radius > gap_start)
+ left_top.radius = gap_start;
+ break;
+ case GTK_POS_TOP:
+ if (left_top.radius > gap_start)
+ left_top.radius = gap_start;
+ if (top_right.radius > width - gap_start - gap_width)
+ top_right.radius = width - gap_start - gap_width;
+ break;
+ case GTK_POS_RIGHT:
+ if (top_right.radius > gap_start)
+ top_right.radius = gap_start;
+ if (right_bottom.radius > height - gap_start - gap_width)
+ right_bottom.radius = height - gap_start - gap_width;
+ break;
+ case GTK_POS_BOTTOM:
+ if (bottom_left.radius > gap_start)
+ bottom_left.radius = gap_start;
+ if (right_bottom.radius > width - gap_start - gap_width)
+ right_bottom.radius = width - gap_start - gap_width;
+ break;
+ default:
+ g_assert_not_reached ();
+ return; /* prevent error building without assertions */
+ }
+
+ if (left_top.radius < 0) left_top.radius = 0;
+ if (top_right.radius < 0) top_right.radius = 0;
+ if (right_bottom.radius < 0) right_bottom.radius = 0;
+ if (bottom_left.radius < 0) bottom_left.radius = 0;
+
+ ccd_border_path (&self->left, &left_top,
+ &self->top, &top_right,
+ &self->right, &right_bottom,
+ &self->bottom, &bottom_left,
+ cr, x, y, width, height);
+
+ ccd_background_fill (self->bg_color, self->bg_image,
cr, x, y, width, height);
- /* TODO take care about roundings on the gap side. */
+ cairo_new_path (cr);
switch (gap_side) {
case GTK_POS_LEFT:
+ /* Draw gap only if it's not over the whole border. */
if (gap_start > y || gap_width < height) {
- /* Draw gap only if it's not over the whole border. */
- ccd_border_draw (&self->left, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- cr, x, y, 0, gap_start);
- ccd_border_draw (&self->left, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ /* With Gtk+ the portion following the gap might not be visible. */
+ if (gap_start + gap_width < height) {
+ ccd_border_draw (&self->left, NULL, NULL, NULL,
+ NULL, NULL, NULL, &bottom_left,
+ CCD_BORDER_VISIBILITY_HIDE_BOTTOM_LEFT,
cr, x, y + gap_start + gap_width,
0, height - gap_start - gap_width);
+ }
+ ccd_border_draw (&self->left, &left_top, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ CCD_BORDER_VISIBILITY_HIDE_LEFT_TOP,
+ cr, x, y, 0, gap_start);
}
- ccd_border_draw (NULL, NULL,
- &self->top, &self->top_right,
- &self->right, &self->right_bottom,
- &self->bottom, NULL,
+ ccd_border_draw (NULL, &left_top,
+ &self->top, &top_right,
+ &self->right, &right_bottom,
+ &self->bottom, &bottom_left,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
cr, x, y, width, height);
break;
case GTK_POS_TOP:
+ /* Draw gap only if it's not over the whole border. */
if (gap_start > x || gap_width < width) {
- /* Draw gap only if it's not over the whole border. */
- ccd_border_draw (NULL, NULL, &self->top, NULL, NULL, NULL, NULL, NULL,
+ ccd_border_draw (NULL, &left_top, &self->top, NULL,
+ NULL, NULL, NULL, NULL,
+ CCD_BORDER_VISIBILITY_HIDE_LEFT_TOP,
cr, x, y, gap_start, 0);
- ccd_border_draw (NULL, NULL, &self->top, NULL, NULL, NULL, NULL, NULL,
+ /* With Gtk+ the portion following the gap might not be visible. */
+ if (gap_start + gap_width < width) {
+ ccd_border_draw (NULL, NULL, &self->top, &top_right,
+ NULL, NULL, NULL, NULL,
+ CCD_BORDER_VISIBILITY_HIDE_TOP_RIGHT,
cr, x + gap_start + gap_width, y,
width - gap_start - gap_width, 0);
+ }
}
- ccd_border_draw (&self->left, NULL,
- NULL, NULL,
- &self->right, &self->right_bottom,
- &self->bottom, &self->bottom_left,
+ ccd_border_draw (&self->left, &left_top,
+ NULL, &top_right,
+ &self->right, &right_bottom,
+ &self->bottom, &bottom_left,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
cr, x, y, width, height);
break;
case GTK_POS_RIGHT:
+ /* Draw gap only if it's not over the whole border. */
if (gap_start > y || gap_width < height) {
- /* Draw gap only if it's not over the whole border. */
- ccd_border_draw (NULL, NULL, NULL, NULL, &self->right, NULL, NULL, NULL,
+ ccd_border_draw (NULL, NULL, NULL, &top_right,
+ &self->right, NULL, NULL, NULL,
+ CCD_BORDER_VISIBILITY_HIDE_TOP_RIGHT,
cr, x + width, y, 0, gap_start);
- ccd_border_draw (NULL, NULL, NULL, NULL, &self->right, NULL, NULL, NULL,
+ /* With Gtk+ the portion following the gap might not be visible. */
+ if (gap_start + gap_width < height) {
+ ccd_border_draw (NULL, NULL, NULL, NULL,
+ &self->right, &right_bottom, NULL, NULL,
+ CCD_BORDER_VISIBILITY_HIDE_RIGHT_BOTTOM,
cr, x + width, y + gap_start + gap_width,
0, height - gap_start - gap_width);
+ }
}
- ccd_border_draw (&self->left, &self->left_top,
- &self->top, NULL,
- NULL, NULL,
- &self->bottom, &self->bottom_left,
+ ccd_border_draw (&self->left, &left_top,
+ &self->top, &top_right,
+ NULL, &right_bottom,
+ &self->bottom, &bottom_left,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
cr, x, y, width, height);
break;
case GTK_POS_BOTTOM:
+ /* Draw gap only if it's not over the whole border. */
if (gap_start > x || gap_width < width) {
- /* Draw gap only if it's not over the whole border. */
- ccd_border_draw (NULL, NULL, NULL, NULL, NULL, NULL, &self->bottom, NULL,
+ ccd_border_draw (NULL, NULL, NULL, NULL,
+ NULL, NULL, &self->bottom, &bottom_left,
+ CCD_BORDER_VISIBILITY_HIDE_BOTTOM_LEFT,
cr, x, y + height, gap_start, 0);
- ccd_border_draw (NULL, NULL, NULL, NULL, NULL, NULL, &self->bottom, NULL,
+ /* With Gtk+ the portion following the gap might not be visible. */
+ if (gap_start + gap_width < width) {
+ ccd_border_draw (NULL, NULL, NULL, NULL,
+ NULL, &right_bottom, &self->bottom, NULL,
+ CCD_BORDER_VISIBILITY_HIDE_RIGHT_BOTTOM,
cr, x + gap_start + gap_width, y + height,
width - gap_start - gap_width, 0);
+ }
}
- ccd_border_draw (&self->left, &self->left_top,
- &self->top, &self->top_right,
- &self->right, NULL,
- NULL, NULL,
+ ccd_border_draw (&self->left, &left_top,
+ &self->top, &top_right,
+ &self->right, &right_bottom,
+ NULL, &bottom_left,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
cr, x, y, width, height);
break;
default:
Modified: trunk/libccd/ccd/ccd-style.c
==============================================================================
--- trunk/libccd/ccd/ccd-style.c (original)
+++ trunk/libccd/ccd/ccd-style.c Fri Sep 12 16:40:20 2008
@@ -63,9 +63,10 @@
* account for that. */
off = stroke->width / 2.;
- ccd_border_draw (NULL, NULL, stroke, NULL, NULL, NULL, NULL, NULL,
- cr, x1, y1 - off, x2 - x1, 0);
-
+ ccd_border_draw (NULL, NULL, stroke, NULL,
+ NULL, NULL, NULL, NULL,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
+ cr, x1, y1 - off, x2 - x1, 0);
}
} else {
/* Vertical: try to use left, then right border.
@@ -76,8 +77,10 @@
* account for that. */
off = stroke->width / 2.;
- ccd_border_draw (stroke, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- cr, x1 - off, y1, 0, y2 - y1);
+ ccd_border_draw (stroke, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
+ cr, x1 - off, y1, 0, y2 - y1);
}
}
@@ -107,6 +110,7 @@
&self->top, &self->top_right,
&self->right, &self->right_bottom,
&self->bottom, &self->bottom_left,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
cr, x, y, width, height);
}
@@ -129,23 +133,22 @@
int32_t width,
int32_t height)
{
- cairo_save (cr);
-
ccd_border_path (&self->left, &self->left_top,
&self->top, &self->top_right,
&self->right, &self->right_bottom,
&self->bottom, &self->bottom_left,
cr, x, y, width, height);
- ccd_background_draw (self->bg_color, self->bg_image,
+ ccd_background_fill (self->bg_color, self->bg_image,
cr, x, y, width, height);
- cairo_restore (cr);
+ cairo_new_path (cr);
ccd_border_draw (&self->left, &self->left_top,
&self->top, &self->top_right,
&self->right, &self->right_bottom,
&self->bottom, &self->bottom_left,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
cr, x, y, width, height);
}
Modified: trunk/libccd/examples/internal.c
==============================================================================
--- trunk/libccd/examples/internal.c (original)
+++ trunk/libccd/examples/internal.c Fri Sep 12 16:40:20 2008
@@ -61,6 +61,7 @@
&border.top, NULL,
&border.right, NULL,
&border.bottom, NULL,
+ CCD_BORDER_VISIBILITY_SHOW_ALL,
cr, x, y, width, height);
}
Modified: trunk/src/gce-style.c
==============================================================================
--- trunk/src/gce-style.c (original)
+++ trunk/src/gce-style.c Fri Sep 12 16:40:20 2008
@@ -844,9 +844,6 @@
GceNode *node;
GceNode *base;
-if (GTK_IS_VSCROLLBAR (widget) && GTK_WIDGET_IS_SENSITIVE(widget) && arrow == GTK_ARROW_DOWN)
- printf ("foo\n");
-
base = gce_node_cache_fetch_node ();
base->widget = widget;
base->class_name = gce_maps_get_detail (detail);
Modified: trunk/themes/gtk-css-test/gtk-2.0/styles.css
==============================================================================
--- trunk/themes/gtk-css-test/gtk-2.0/styles.css (original)
+++ trunk/themes/gtk-css-test/gtk-2.0/styles.css Fri Sep 12 16:40:20 2008
@@ -106,12 +106,12 @@
box {
background: khaki;
border: 1px solid black;
- border-top-left-radius: 2;
- border-bottom-right-radius: 5;
+ border-radius: 15;
}
-arrow[orientation=down] {
-/* background-image: url(arrow-down.png); */
- background-image: url(foo.svg);
+shadow {
+ background: khaki;
+ border: 1px solid black;
+ border-radius: 15;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]