]> Pileus Git - ~andy/gtk/blob - docs/widget_geometry.txt
stylecontext: Do invalidation on first resize container
[~andy/gtk] / docs / widget_geometry.txt
1 This file is some notes about how different widgets are drawn.
2
3 =============
4
5 GtkMenu
6
7 =============
8 +----------------------------------------------------------------------------+
9 |                                A                                           |
10 | +------------------------------------------------------------------------+ |
11 | |############################# C ########################################| |
12 | |#                             D                                        #| |
13 | |# +-------------------------------------------------------------------+#| |
14 | |# |                                                                   |#| |
15 | |# |                                                                   |#| |
16 | |# |                                                                   |#| |
17 | |# |                      Item 1                                       |#| |
18 | |# |                                                                   |#| |
19 | |# |                                                                   |#| |
20 | |# |                                                                   |#| |
21 | |# |                                                                   |#| |
22 | |# |                                                                   |#| |
23 | |# +-------------------------------------------------------------------+#| |
24 | |# +-------------------------------------------------------------------+#| |
25 | |# |                                                                   |#| |
26 | |# |                                                                   |#| |
27 |A|B |                                                                   |B|A|
28 | |# |                      Item 2                                       |#| |
29 | |# |                                                                   |#| |
30 | |# |                                                                   |#| |
31 | |# |                                                                   |#| |
32 | |# |                                                                   |#| |
33 | |# |                                                                   |#| |
34 | |# +-------------------------------------------------------------------+#| |
35 | |#                        [...]                                         #| |
36 | |# +-------------------------------------------------------------------+#| |
37 | |# |                                                                   |#| |
38 | |# |                                                                   |#| |
39 | |# |                                                                   |#| |
40 | |# |                      Item n                                       |#| |
41 | |# |                                                                   |#| |
42 | |# |                                                                   |#| |
43 | |# |                                                                   |#| |
44 | |# |                                                                   |#| |
45 | |# |                                                                   |#| |
46 | |# +-------------------------------------------------------------------+#| |
47 | |#                             D                                        #| |
48 | |############################# C ########################################| |
49 | +------------------------------------------------------------------------| |
50 |                                A                                           |
51 +----------------------------------------------------------------------------+
52
53 A: GtkContainer::border_width
54 B: xthickness
55 C: ythickness
56 D: vertical_padding
57
58 =============
59
60 GtkMenuItem
61
62 =============
63
64 +----------------------------------------------------------------------------+
65 |                                A                                           |
66 | +------------------------------------------------------------------------+ |
67 | |############################# C ########################################| |
68 | |#+-+------------+--+-------------------------------+--+-------------+-+#| |
69 | |#| |\\\\\\\\\\\\|  |                  /|\          |**|             | |#| |
70 | |#| |<------E------>|                   |           |**|      G      | |#| |
71 | |#| |\\\\\\\\\\\\|  |                   |           |**|             | |#| |
72 | |#| |\\\\\\\\\\\\|  |                   |           |**|   >>        | |#| |
73 | |#| |\\\\\\\\\\\\|  |                   |           |**|   >>>>      | |#| |
74 | |#| |\\\\\\\\\\\\|  |                   |           |**|   >>>>>>    | |#| |
75 |A|B|D|\\\\\\\\\\\\| F|      Child        G           |*H|   >>>>>>>>  |D|B|A|
76 | |#| |\\\\\\\\\\\\|  |                   |           |**|   >>>>>>    | |#| |
77 | |#| |\\\\\\\\\\\\|  |                   |           |**|   >>>>      | |#| |
78 | |#| |\\\\\\\\\\\\|  |                   |           |**|   >>        | |#| |
79 | |#| |\\\\\\\\\\\\|  |                   |           |**|             | |#| |
80 | |#| |\\\\\\\\\\\\|  |                   |           |**|             | |#| |
81 | |#| |\\\\\\\\\\\\|  |                  \|/          |**|             | |#| |
82 | |#+-+------------+--+-------------------------------+--+-------------+-+#| |
83 | |############################# C ########################################| |
84 | +------------------------------------------------------------------------+ |
85 |                                A                                           |
86 +----------------------------------------------------------------------------+
87
88 A: GtkContainer:border_width
89 B: xthickness
90 C: ythickness
91 D: horizontal_padding
92 E: toggle_size
93 F: toggle_spacing
94 G: Requested height of child (also used for width of arrow
95 H: arrow_spacing spacing (when the item has a non-vertical submenu)
96
97
98 =============
99
100 GtkOptionMenu:
101
102 =============
103
104 Geometry parameters
105
106  Style properties
107
108    GtkWidget::interior_focus = TRUE
109    GtkWidget::focus_width = 1
110    GtkWidget::focus_padding = 0
111    GtkOptionMenu::indicator_size = { 7, 13 }
112    GtkOptionMenu::indicator_spacing = { 7, 5, 2, 2 }
113
114  Properties
115
116    GtkContainer::border_width = 0
117
118  #defines
119
120    CHILD_LEFT_SPACING = 5
121    CHILD_RIGHT_SPACING = 1
122    CHILD_TOP_SPACING = 1
123    CHILD_BOTTOM_SPACING = 1
124
125
126 I) interior_focus = TRUE
127
128 +--------------------------------------------------+
129 +                       A                          |
130 | +----------------------------------------------+ |
131 | |\\\\\\\\\\\\\\\\\\\\ H ///////////////////////| |
132 | |\+------------------------------------------+/| |
133 | |\|                   C                      |/| |
134 | |\| +------------------------------+         |/| |
135 | |\| |################ D ###########|    L    |/| |
136 | |\| |#+--------------------------+#|         |/| |
137 | |\| |#|         K                |#|         |/| |
138 | |\| |#| +----------------------+ |#| +-----+ |/| |
139 | |\| |#| |                      | |#| | /#\ | |/| |
140 | |\| |#| |                      | |#| | === | |/| |
141 |A|B|C|D|E|      Child           |F|D|G| IxJ |O|B|A|
142 | |/| |#| |                      | |#| | === | |\| |
143 | |/| |#| |                      | |#| | \#/ | |\| |
144 | |/| |#| +----------------------+ |#| +-----+ |\| |
145 | |/| |#|         M                |#|         |\| |
146 | |/| |#+---------------------------#|         |\| |
147 | |/| |################ D ###########|    N    |\| |
148 | |/| +------------------------------+         |\| |
149 | |/|                   C                      |\| |
150 | |/+------------------------------------------+\| |
151 | |//////////////////// H \\\\\\\\\\\\\\\\\\\\\\\| |
152 | +----------------------------------------------+ |
153 |                       A                          |
154 +--------------------------------------------------+
155
156   A: GtkContainer::border_width
157   B: xthickness
158   C: GtkWidget::focus_pad
159   D: GtkWidget::focus_width
160   E: CHILD_LEFT_SPACING
161   F: CHILD_RIGHT_SPACING
162   G: GtkOptionMenu::indicator_spacing::left
163   H: ythickness
164   I: GtkOptionMenu::indicator_size::width
165   J: GtkOptionMenu::indicator_size::height
166   K: CHILD_TOP_SPACING
167   L: GtkOptionMenu::indicator_spacing::top + GtkWidget::focus_width + GtkWidget::focus_pad + CHILD_TOP_SPACING
168   M: CHILD_BOTTOM_SPACING
169   N: GtkOptionMenu::indicator_spacing::bottom + GtkWidget::focus_width + GtkWidget::focus_pad + CHILD_BOTTOM_SPACING
170   O: GtkOptionMenu::indicator_spacing::right
171
172
173 II) interior_focus = FALSE
174
175 +--------------------------------------------------+
176 +                       A                          |
177 | +----------------------------------------------+ |
178 | |#################### B #######################| |
179 | |#+------------------------------------------+#| |
180 | |#|                   C                      |#| |
181 | |#| +--------------------------------------+ |#| |
182 | |#| |\\\\\\\\\\\\\\\\ H ///////////////////| |#| |
183 | |#| |\+----------------------------------+/| |#| |
184 | |#| |\|         K                   L    |/| |#| |
185 | |#| |\| +----------------------+ +-----+ |/| |#| |
186 | |#| |\| |                      | | /#\ | |/| |#| |
187 | |#| |\| |                      | | === | |/| |#| |
188 |A|B|C|D|E|      Child           |F| IxJ |G|D|C|B|A|
189 | |#| |/| |                      | | === | |\| |#| |
190 | |#| |/| |                      | | \#/ | |\| |#| |
191 | |#| |/| +----------------------+ +-----+ |\| |#| |
192 | |#| |/|         M                   N    |\| |#| |
193 | |#| |/+----------------------------------+\| |#| |
194 | |#| |//////////////// H \\\\\\\\\\\\\\\\\\\| |#| |
195 | |#| +--------------------------------------+ |#| |
196 | |#|                   C                      |#| |
197 | |#+------------------------------------------+#| |
198 | |#################### B #######################| |
199 | +----------------------------------------------+ |
200 |                       A                          |
201 +--------------------------------------------------+
202
203
204  A: GtkContainer::border_width
205  B: GtkWidget::focus_width
206  C: GtkWidget::focus_padding
207  D: xthickness
208  E: CHILD_LEFT_SPACING
209  F: CHILD_RIGHT_SPACING + GtkOptionMenu::indicator_spacing::left
210  G: GtkOptionMenu::indicator_spacing::right
211  H: ythickness
212  I: GtkOptionMenu::indicator_size::width
213  J: GtkOptionMenu::indicator_size::height
214  K: CHILD_TOP_SPACING
215  L: CHILD_TOP_SPACING + GtkOptionMenu::indicator_spacing::top
216  M: CHILD_BOTTOM_SPACING
217  N: CHILD_BOTTOM_SPACING + GtkOptionMenu::indicator_spacing::bottom
218
219
220 III) interior_focus = FALSE, !HAVE_FOCUS
221
222 +--------------------------------------------------+
223 +                       A                          |
224 | +----------------------------------------------+ |
225 | |\\\\\\\\\\\\\\\\\\\\ H ///////////////////////| |
226 | |\+------------------------------------------+/| |
227 | |\|                                          |/| |
228 | |\|                                          |/| |
229 | |\|                                          |/| |
230 | |\|                                          |/| |
231 | |\|             K                   L        |/| |
232 | |\|     +----------------------+ +-----+     |/| |
233 | |\|     |                      | | /#\ |     |/| |
234 | |\|     |                      | | === |     |/| |
235 |A|D|    E|      Child           |F| IxJ |G    |D|A|
236 | |/|     |                      | | === |     |\| |
237 | |/|     |                      | | \#/ |     |\| |
238 | |/|     +----------------------+ +-----+     |\| |
239 | |/|             M                   N        |\| |
240 | |/|                                          |\| |
241 | |/|                                          |\| |
242 | |/|                                          |\| |
243 | |/|                                          |\| |
244 | |/+------------------------------------------+\| |
245 | |//////////////////// H \\\\\\\\\\\\\\\\\\\\\\\| |
246 | +----------------------------------------------+ |
247 |                       A                          |
248 +--------------------------------------------------+
249
250
251  A: GtkContainer::border_width
252  B: GtkWidget::focus_width
253  C: GtkWidget::focus_padding
254  D: xthickness
255  E: CHILD_LEFT_SPACING + GtkWidget::focus_width + GtkWidget::focus_padding
256  F: CHILD_RIGHT_SPACING + GtkOptionMenu::in+icator_spacing::left
257  G: GtkOptionMenu::indicator_spacing::right + GtkWidget::focus_width + GtkWidget::focus_padding
258  H: ythickness
259  I: GtkOptionMenu::indicator_size::width
260  J: GtkOptionMenu::indicator_size::height
261  K: CHILD_TOP_SPACING + GtkWidget::focus_width + GtkWidget::focus_padding
262  L: CHILD_TOP_SPACING + GtkOptionMenu::indicator_spacing::top + GtkWidget::focus_width + GtkWidget::focus_padding
263  M: CHILD_BOTTOM_SPACING + GtkWidget::focus_width + GtkWidget::focus_padding
264  N: CHILD_BOTTOM_SPACING + GtkOptionMenu::indicator_spacing::bottom + GtkWidget::focus_width + GtkWidget::focus_padding
265
266
267
268 =====================
269
270 GtkButton
271
272 =====================
273
274 NOTE: Due to a bug that is basically unfixable in a sufficiently compatible
275 NOTE: way, the button gives the space requested for focus_width and 
276 NOTE: focus_padding to the child (in addition to the space requested by
277 NOTE: the child), if the button is !CAN_FOCUS.
278
279  Style properties
280
281    GtkWidget::interior_focus = TRUE
282    GtkWidget::focus_width = 1
283    GtkWidget::focus_padding = 0
284    GtkButton::default_border = { 1, 1, 1, 1 };
285    GtkButton::default_outside_border = { 0, 0, 0, 0 };
286    GtkButton::child_displacement_x = 0;
287    GtkButton::child_displacement_y = 0;
288
289  Properties
290
291    GtkContainer::border_width = 0
292
293  #defines
294
295    CHILD_SPACING 1
296
297 I) HAS_DEFAULT && (!GtkWidget::interior-focus || !HAVE_FOCUS)
298
299 +----------------------------------------------+
300 |                      A                       |
301 | +------------------------------------------+ |
302 | |@@@@@@@@@@@@@@@@@@@ I @@@@@@@@@@@@@@@@@@@@| |
303 | |@+--------------------------------------+@| |
304 | |@|\\\\\\\\\\\\\\\\\ J //////////////////|@| |
305 | |@|\+----------------------------------+/|@| |
306 | |@|\|                E                 |/|@| |
307 | |@|\| +------------------------------+ |/|@| |
308 | |@|\| |############# F ##############| |/|@| |
309 | |@|\| |#+--------------------------+#| |/|@| |
310 | |@|\| |#|            L             |#| |/|@| |
311 | |@|\| |#| +----------------------+ |#| |/|@| |
312 | |@|\| |#| |                      | |#| |/|@| |
313 | |@|\| |#| |                      | |#| |/|@| |
314 |A|B|D|E|F|G|        Child         |M|F|E|D|C|A|
315 | |@|/| |#| |                      | |#| |\|@| |
316 | |@|/| |#| |                      | |#| |\|@| |
317 | |@|/| |#| +----------------------+ |#| |\|@| |
318 | |@|/| |#|            N             |#| |\|@| |
319 | |@|/| |#+--------------------------+#| |\|@| |
320 | |@|/| |############# F ##############| |\|@| |
321 | |@|/| +------------------------------+ |\|@| |
322 | |@|/|                E                 |\|@| |
323 | |@|/+----------------------------------+\|@| |
324 | |@|///////////////// J \\\\\\\\\\\\\\\\\\|@| |
325 | |@+--------------------------------------+@| |
326 | |@@@@@@@@@@@@@@@@@@@ K @@@@@@@@@@@@@@@@@@@@| |
327 | +------------------------------------------+ |
328 |                      A                       |
329 +----------------------------------------------+
330
331 A: GtkContainer::border-width
332 B: GtkButton::default-border::left
333 C: GtkButton::default-border::right
334 D: xthickness
335 E: GtkWidget::focus-padding
336 F: GtkWidget::focus-line-width
337 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
338 I: GtkButton::default-border::top
339 J: ythickness
340 K: GtkButton::default-border::bottom
341 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
342 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
343 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
344
345
346 II) !HAS_DEFAULT && (!GtkWidget::interior-focus || !HAVE_FOCUS)
347
348 +----------------------------------------------+
349 |                                              |
350 |                      I                       |
351 |                                              |
352 |   +--------------------------------------+   |
353 |   |\\\\\\\\\\\\\\\\\ J //////////////////|   |
354 |   |\+----------------------------------+/|   |
355 |   |\|                E                 |/|   |
356 |   |\| +------------------------------+ |/|   |
357 |   |\| |############# F ##############| |/|   |
358 |   |\| |#+--------------------------+#| |/|   |
359 |   |\| |#|            L             |#| |/|   |
360 |   |\| |#| +----------------------+ |#| |/|   |
361 |   |\| |#| |                      | |#| |/|   |
362 |   |\| |#| |                      | |#| |/|   |
363 | B |D|E|F|G|        Child         |M|F|E|D| C |
364 |   |/| |#| |                      | |#| |\|   |
365 |   |/| |#| |                      | |#| |\|   |
366 |   |/| |#| +----------------------+ |#| |\|   |
367 |   |/| |#|            N             |#| |\|   |
368 |   |/| |#+--------------------------+#| |\|   |
369 |   |/| |############# F ##############| |\|   |
370 |   |/| +------------------------------+ |\|   |
371 |   |/|                E                 |\|   |
372 |   |/+----------------------------------+\|   |
373 |   |///////////////// J \\\\\\\\\\\\\\\\\\|   |
374 |   +--------------------------------------+   |
375 |                                              |
376 |                      K                       |
377 |                                              |
378 +----------------------------------------------+
379
380
381 a) CAN_DEFAULT
382
383 B: GtkContainer::border-width + GtkButton::default-outside-border::left
384 C: GtkContainer::border-width + GtkButton::default-outside-border::right
385 D: xthickness
386 E: GtkWidget::focus-padding
387 F: GtkWidget::focus-line-width
388 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0) +
389    (GtkButton::default-outside-border - GtkButton::default-outside-border)::left
390 I: GtkContainer::border-width + GtkButton::default-outside-border::top
391 J: ythickness
392 K: GtkContainer::border-width + GtkButton::default-outside-border::bottom
393 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0) +
394    (GtkButton::default-outside-border - GtkButton::default-outside-border)::top
395 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0) +
396    (GtkButton::default-outside-border - GtkButton::default-outside-border)::right
397 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0) +
398    (GtkButton::default-outside-border - GtkButton::default-outside-border)::bottom
399
400
401 b) !CAN_DEFAULT
402
403 B: GtkContainer::border-width
404 C: GtkContainer::border-width
405 D: xthickness
406 E: GtkWidget::focus-padding
407 F: GtkWidget::focus-line-width
408 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
409 I: GtkContainer::border-width
410 J: ythickness
411 K: GtkContainer::border-width
412 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
413 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
414 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
415
416
417
418
419 III) HAS_DEFAULT && (GtkWidget::interior-focus && HAVE_FOCUS)
420
421 +----------------------------------------------+
422 |                      A                       |
423 | +------------------------------------------+ |
424 | |@@@@@@@@@@@@@@@@@@@ I @@@@@@@@@@@@@@@@@@@@| |
425 | |@+--------------------------------------+@| |
426 | |@|################# F ##################|@| |
427 | |@|#+----------------------------------+#|@| |
428 | |@|#|                E                 |#|@| |
429 | |@|#| +------------------------------+ |#|@| |
430 | |@|#| |\\\\\\\\\\\\\ J //////////////| |#|@| |
431 | |@|#| |\+--------------------------+/| |#|@| |
432 | |@|#| |\|            L             |/| |#|@| |
433 | |@|#| |\| +----------------------+ |/| |#|@| |
434 | |@|#| |\| |                      | |/| |#|@| |
435 | |@|#| |\| |                      | |/| |#|@| |
436 |A|B|F|E|D|G|        Child         |M|D|E|F|C|A|
437 | |@|#| |/| |                      | |\| |#|@| |
438 | |@|#| |/| |                      | |\| |#|@| |
439 | |@|#| |/| +----------------------+ |\| |#|@| |
440 | |@|#| |/|            N             |\| |#|@| |
441 | |@|#| |/+--------------------------+\| |#|@| |
442 | |@|#| |///////////// J \\\\\\\\\\\\\\| |#|@| |
443 | |@|#| +------------------------------+ |#|@| |
444 | |@|#|                E                 |#|@| |
445 | |@|#+----------------------------------+#|@| |
446 | |@|################# F ##################|@| |
447 | |@+--------------------------------------+@| |
448 | |@@@@@@@@@@@@@@@@@@@ K @@@@@@@@@@@@@@@@@@@@| |
449 | +------------------------------------------+ |
450 |                      A                       |
451 +----------------------------------------------+
452
453 A: GtkContainer::border-width
454 B: GtkButton::default-border::left
455 C: GtkButton::default-border::right
456 D: xthickness
457 E: GtkWidget::focus-padding
458 F: GtkWidget::focus-line-width
459 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
460 I: GtkButton::default-border::top
461 J: ythickness
462 K: GtkButton::default-border::bottom
463 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
464 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
465 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
466
467
468 IV) !HAS_DEFAULT && (GtkWidget::interior-focus && HAVE_FOCUS)
469
470 +----------------------------------------------+
471 |                                              |
472 |                      I                       |
473 |                                              |
474 |   +--------------------------------------+   |
475 |   |################# J ##################|   |
476 |   |#+----------------------------------+#|   |
477 |   |#|                E                 |#|   |
478 |   |#| +------------------------------+ |#|   |
479 |   |#| |\\\\\\\\\\\\\ F //////////////| |#|   |
480 |   |#| |\+--------------------------+/| |#|   |
481 |   |#| |\|            L             |/| |#|   |
482 |   |#| |\| +----------------------+ |/| |#|   |
483 |   |#| |\| |                      | |/| |#|   |
484 |   |#| |\| |                      | |/| |#|   |
485 | B |D|E|F|G|        Child         |M|F|E|D| C |
486 |   |#| |/| |                      | |\| |#|   |
487 |   |#| |/| |                      | |\| |#|   |
488 |   |#| |/| +----------------------+ |\| |#|   |
489 |   |#| |/|            N             |\| |#|   |
490 |   |#| |/+--------------------------+\| |#|   |
491 |   |#| |///////////// F \\\\\\\\\\\\\\| |#|   |
492 |   |#| +------------------------------+ |#|   |
493 |   |#|                E                 |#|   |
494 |   |#+----------------------------------+#|   |
495 |   |################# J ##################|   |
496 |   +--------------------------------------+   |
497 |                                              |
498 |                      K                       |
499 |                                              |
500 +----------------------------------------------+
501
502
503 a) CAN_DEFAULT
504
505 B: GtkContainer::border-width + GtkButton::default-outside-border::left
506 C: GtkContainer::border-width + GtkButton::default-outside-border::right
507 D: xthickness
508 E: GtkWidget::focus-padding
509 F: GtkWidget::focus-line-width
510 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0) +
511    (GtkButton::default-outside-border - GtkButton::default-outside-border)::left
512 I: GtkContainer::border-width + GtkButton::default-outside-border::top
513 J: ythickness
514 K: GtkContainer::border-width + GtkButton::default-outside-border::bottom
515 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0) +
516    (GtkButton::default-outside-border - GtkButton::default-outside-border)::top
517 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0) +
518    (GtkButton::default-outside-border - GtkButton::default-outside-border)::right
519 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0) +
520    (GtkButton::default-outside-border - GtkButton::default-outside-border)::bottom
521
522
523 b) !CAN_DEFAULT
524
525 B: GtkContainer::border-width
526 C: GtkContainer::border-width
527 D: xthickness
528 E: GtkWidget::focus-padding
529 F: GtkWidget::focus-line-width
530 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
531 I: GtkContainer::border-width
532 J: ythickness
533 K: GtkContainer::border-width
534 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
535 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
536 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
537
538
539 ======================
540
541 GtkCheckButton
542
543 ======================
544
545 Note: This is the draw_indicator=TRUE case; draw_indicator=FALSE
546       is like GtkButton)
547
548  Style properties
549
550    GtkWidget::interior_focus = TRUE
551    GtkWidget::focus_width = 1
552    GtkWidget::focus_padding = 0
553    GtkButton::indicator-size = 13
554    GtkButton::indicator-spacing = 2
555
556  Properties
557
558    GtkContainer::border_width = 0
559
560  #defines
561
562    CHILD_SPACING 1
563
564 interior_focus
565
566  +-------------------------------------------+
567  |                             F             |
568  |       G        +------------------------+ |
569  |                |########### D ##########| |
570  | +------------+ |#+--------------------+#| |
571  | |            | |#|          E         |#| |
572  | |            | |#| +----------------+ |#| |
573  | |            | |#| |                | |#| |
574  |A|    BxB     |C|D|E|      Child     |E|#|F|
575  | |            | |#| |                | |#| |
576  | |            | |#| +----------------+ |#| |
577  | |            | |#|          E         |#| |
578  | +------------+ |#+--------------------+#| |
579  |                |########### D ##########| |
580  |      G         +------------------------+ |
581  |                             F             |
582  +-------------------------------------------+
583
584 A: GtkContainer::border-width + GtkCheckButton::indicator-spacing
585 B: GtkCheckButton::indicator-size
586 C: 2 * GtkCheckButton::indicator-spacing
587 D: GtkWidget::focus-line-width
588 E: GtkWidget::focus-padding
589 F: GtkContainer::border-width
590 G: GtkConainer::border-width + GtkCheckButton::indicator-spacing
591
592 !interior_focus
593
594  +-------------------------------------------+
595  |                   A                       |
596  | +---------------------------------------+ |
597  | |################ D ####################| |
598  | |#+-----------------------------------+#| |
599  | |#|       G                E          |#| |
600  | |#| +------------+  +---------------+ |#| |
601  | |#| |            |  |               | |#| |
602  | |#| |            |  |               | |#| |
603  |A|D|F|    BxB     |C |      Child    |E|D|A|
604  | |#| |            |  |               | |#| |
605  | |#| |            |  |               | |#| |
606  | |#| +------------+  +---------------+ |#| |
607  | |#|       G                E          |#| |
608  | |#+-----------------------------------+#| |
609  | |################ D ####################| |
610  | +---------------------------------------+ |
611  |                   A                       |
612  +-------------------------------------------+
613
614 A: GtkContainer::border-width
615 B: GtkCheckButton::indicator-size
616 C: 2 * GtkCheckButton::indicator-spacing
617 D: GtkWidget::focus-line-width
618 E: GtkWidget::focus-padding
619 F: GtkWidget::focus-padding + GtkCheckButton::indicator-spacing
620 G: GtkWidget::focus-padding + GtkCheckButton::indicator-spacing
621
622 ===============
623
624 GtkEntry
625
626 ===============
627
628  Style properties
629
630    GtkWidget::interior_focus = TRUE
631    GtkWidget::focus_width = 1
632    GtkWidget::focus_padding = 0
633
634  Properties
635
636    GtkContainer::border_width = 0
637
638  #defines
639
640    INNER_BORDER 2
641
642
643
644 interior_focus
645
646 +--------------------------------------+
647 |\\\\\\\\\\\\\\\\\ B //////////////////|
648 |\+----------------------------------+/|
649 |\|                D                 |/|
650 |\| +------------------------------+ |/|
651 |\| |                              | |/|
652 |\| |                              | |/|
653 |A|D|                              |D|A|
654 |\| |                              | |/|
655 |\| |                              | |/|
656 |\| +------------------------------+ |/|
657 |\|                D                 |/|
658 |\+----------------------------------+/|
659 |///////////////// B \\\\\\\\\\\\\\\\\/|
660 +--------------------------------------+
661
662 A: xthickness
663 B: ythickness
664 D: INNER_BORDER
665
666 !interior_focus
667
668 +------------------------------------------+
669 |####################C#####################|
670 |#+--------------------------------------+#|
671 |#|\\\\\\\\\\\\\\\\\ B //////////////////|#|
672 |#|\+----------------------------------+/|#|
673 |#|\|                D                 |/|#|
674 |#|\| +------------------------------+ |/|#|
675 |#|\| |                              | |/|#|
676 |#|\| |                              | |/|#|
677 |C|A|D|                              |D|A|C|
678 |#|\| |                              | |/|#|
679 |#|\| |                              | |/|#|
680 |#|\| +------------------------------+ |/|#|
681 |#|\|                D                 |/|#|
682 |#|\+----------------------------------+/|#|
683 |#|///////////////// B \\\\\\\\\\\\\\\\\/|#|
684 |#+--------------------------------------+#|
685 |####################C#####################|
686 +------------------------------------------+
687
688 A: xthickness
689 B: ythickness
690 C: GtkWidget::focus-line-width
691 D: INNER_BORDER + (HAVE_FOCUS ? 0 : GtkWidget::focus-line-width
692
693 Note - effect here for !interior_focus is that bevel moves in
694 by focus-line-width when entry gains focus
695
696 ===============
697
698 GtkExpander
699
700 ===============
701
702  Style properties
703   GtkWidget::focus_line_width
704   GtkWidget::focus_padding
705   GtkExpander::expander_size
706   GtkExpander::expander_spacing
707
708  Properties
709   GtkContainer::border_width
710   GtkExpander::spacing
711
712 if (GTK_WIDGET_VISIBLE (bin->child) && interior_focus)
713
714 +-------------------------------------+
715 |                  A                  |
716 | +---------+-----------------------+ |
717 | |    C    |##########E############| |
718 | | +-----+ |#+-------------------+#| |
719 | | |     | |#|        F          |#| |
720 | | |     | |#| +---------------+ |#| |
721 |A|C| BxB |C|E|F| label_widget  |F|E|A|
722 | | |     | |#| +---------------+ |#| |
723 | | |     | |#|        F          |#| |
724 | | +-----+ |#+-------------------+#| |
725 | |    C    |##########E############| |
726 | +---------+-----------------------+ |
727 | |                D                | |
728 | +---------------------------------+ |
729 | |                                 | |
730 | |                                 | |
731 | |                                 | |
732 |A|             bin->child          |A|
733 | |                                 | |
734 | |                                 | |
735 | |                                 | |
736 | +---------------------------------+ |
737 |                  A                  |
738 +-------------------------------------+
739
740  A: GtkContainer::border_width
741  B: GtkExpander::expander_size
742  C: GtkExpander::expander_spacing
743  D: GtkExpander::spacing
744  E: GtkWidget::focus_line_width
745  F: GtkWidget::focus_padding
746
747 if (GTK_WIDGET_VISIBLE (bin->child) && !interior_focus)
748
749 +-------------------------------------------+
750 |                    A                      |
751 | +---------------------------------------+ |
752 | |##################E####################| |
753 | |#+-----------------------------------+#| |
754 | |#|                F                  |#| |
755 | |#| +---------+---------------------+ |#| |
756 | |#| |    C    |                     | |#| |
757 | |#| | +-----+ |                     | |#| |
758 |A|E|F|C| BxB |C|    label_widget     |F|E|A|
759 | |#| | +-----+ |                     | |#| |
760 | |#| |    C    |                     | |#| |
761 | |#| +---------+---------------------+ |#| |
762 | |#|                F                  |#| |
763 | |#+-----------------------------------+#| |
764 | |##################E####################| |
765 | +---------------------------------------+ |
766 | |                  D                    | |
767 | +---------------------------------------+ |
768 | |                                       | |
769 | |                                       | |
770 | |                                       | |
771 |A|               bin->child              |A|
772 | |                                       | |
773 | |                                       | |
774 | |                                       | |
775 | +---------------------------------------+ |
776 |                     A                     |
777 +-------------------------------------------+
778
779  A: GtkContainer::border_width
780  B: GtkExpander::expander_size
781  C: GtkExpander::expander_spacing
782  D: GtkExpander::spacing
783  E: GtkWidget::focus_line_width
784  F: GtkWidget::focus_padding
785
786 if (!GTK_WIDGET_VISIBLE (bin->child) && interior_focus)
787
788 +-------------------------------------+
789 |                  A                  |
790 | +---------+-----------------------+ |
791 | |    C    |##########E############| |
792 | | +-----+ |#+-------------------+#| |
793 | | |     | |#|        F          |#| |
794 | | |     | |#| +---------------+ |#| |
795 |A|C| BxB |C|E|F| label_widget  |F|E|A|
796 | | |     | |#| +---------------+ |#| |
797 | | |     | |#|        F          |#| |
798 | | +-----+ |#+-------------------+#| |
799 | |    C    |##########E############| |
800 | +---------+-----------------------+ |
801 |                  A                  |
802 +-------------------------------------+
803
804  A: GtkContainer::border_width
805  B: GtkExpander::expander_size
806  C: GtkExpander::expander_spacing
807  E: GtkWidget::focus_line_width
808  F: GtkWidget::focus_padding
809
810 if (!GTK_WIDGET_VISIBLE (bin->child) && !interior_focus)
811
812 +-------------------------------------------+
813 |                    A                      |
814 | +---------------------------------------+ |
815 | |##################E####################| |
816 | |#+-----------------------------------+#| |
817 | |#|                F                  |#| |
818 | |#| +---------+---------------------+ |#| |
819 | |#| |    C    |                     | |#| |
820 | |#| | +-----+ |                     | |#| |
821 |A|E|F|C| BxB |C|     label_widget    |F|E|A|
822 | |#| | +-----+ |                     | |#| |
823 | |#| |    C    |                     | |#| |
824 | |#| +---------+---------------------+ |#| |
825 | |#|                F                  |#| |
826 | |#+-----------------------------------+#| |
827 | |##################E####################| |
828 | +---------------------------------------+ |
829 |                    A                      |
830 +-------------------------------------------+
831
832  A: GtkContainer::border_width
833  B: GtkExpander::expander_size
834  C: GtkExpander::expander_spacing
835  E: GtkWidget::focus_line_width
836  F: GtkWidget::focus_padding