public
Description: a tiny graphical app kit for ruby
Homepage: http://code.whytheluckystiff.net/shoes
Clone URL: git://github.com/why/shoes.git
 * shoes/ruby.h: new :margin array syntax, suggested by MadX`.  thanks-s-s-s!!!
why (author)
Fri Jul 11 09:50:04 -0700 2008
commit  19e39a996c4bb9438c494aef0c61653c029a0302
tree    bdad67d770543b5702552a1d358e7dc9318f5bc5
parent  f62ea2dc58d0c3b082a30d7072baa1cdceff127c
...
119
120
121
122
123
124
125
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
128
129
...
119
120
121
 
 
 
 
 
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
0
@@ -119,11 +119,22 @@ void shoes_ruby_init(void);
0
 #define ATTR2(typ, attr, n, dn)        shoes_hash_##typ(attr, s_##n, dn)
0
 #define ATTRSET(attr, k, v)            attr = shoes_hash_set(attr, s_##k, v)
0
 #define ATTR_MARGINS(attr, dm) \
0
-  int margin = ATTR2(int, attr, margin, dm); \
0
-  int lmargin = ATTR2(int, attr, margin_left, margin); \
0
-  int rmargin = ATTR2(int, attr, margin_right, margin); \
0
-  int tmargin = ATTR2(int, attr, margin_top, margin); \
0
-  int bmargin = ATTR2(int, attr, margin_bottom, margin)
0
+  int margin = 0, lmargin, rmargin, tmargin, bmargin; \
0
+  VALUE margino = ATTR(attr, margin); \
0
+  if (rb_obj_is_kind_of(margino, rb_cArray)) \
0
+  { \
0
+    rb_p(margino); \
0
+    lmargin = NUM2INT(rb_ary_entry(margino, 0)); \
0
+    tmargin = NUM2INT(rb_ary_entry(margino, 1)); \
0
+    rmargin = NUM2INT(rb_ary_entry(margino, 2)); \
0
+    bmargin = NUM2INT(rb_ary_entry(margino, 3)); \
0
+  } \
0
+  else \
0
+    margin = lmargin = tmargin = rmargin = bmargin = ATTR2(int, attr, margin, dm); \
0
+  lmargin = ATTR2(int, attr, margin_left, lmargin); \
0
+  rmargin = ATTR2(int, attr, margin_right, rmargin); \
0
+  tmargin = ATTR2(int, attr, margin_top, tmargin); \
0
+  bmargin = ATTR2(int, attr, margin_bottom, bmargin)
0
 
0
 #define CHECK_HOVER(self_t, h, touch) \
0
   if ((self_t->hover & HOVER_MOTION) != h && !NIL_P(self_t->attr)) \

Comments

Bluebie Mon Jul 14 22:04:08 -0700 2008

CSS Margin syntax actually goes top, right, bottom, left… Not that it really matters :)

pvande Fri Jul 18 18:31:36 -0700 2008

I’ve been wanting to make note of that for some time—but I have to agree that [left, top, right, bottom] makes more sense for Shoes.

why Fri Jul 18 21:48:38 -0700 2008

To css people this probably seems like a divergence, but to everyone who was used to (x, y) before that, well, css seemed like a divergence. This order is used throughout shoes in shapes (oval, rect, line, etc.) and in events. I think once we go to Ruby 1.9, though, you’ll see: {margin: {left: 12, right: 3}} used more prevalently than this. It’s too hard to remember the order.