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