]> Pileus Git - ~andy/gtk/blob - docs/widget_geometry.txt
Fix #137520.
[~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  Style properties
275
276    GtkWidget::interior_focus = TRUE
277    GtkWidget::focus_width = 1
278    GtkWidget::focus_padding = 0
279    GtkButton::default_border = { 1, 1, 1, 1 };
280    GtkButton::default_outside_border = { 0, 0, 0, 0 };
281    GtkButton::child_displacement_x = 0;
282    GtkButton::child_displacement_y = 0;
283
284  Properties
285
286    GtkContainer::border_width = 0
287
288  #defines
289
290    CHILD_SPACING 1
291
292 I) HAS_DEFAULT && (!GtkWidget::interior-focus || !HAVE_FOCUS)
293
294 +----------------------------------------------+
295 |                      A                       |
296 | +------------------------------------------+ |
297 | |@@@@@@@@@@@@@@@@@@@ I @@@@@@@@@@@@@@@@@@@@| |
298 | |@+--------------------------------------+@| |
299 | |@|\\\\\\\\\\\\\\\\\ J //////////////////|@| |
300 | |@|\+----------------------------------+/|@| |
301 | |@|\|                E                 |/|@| |
302 | |@|\| +------------------------------+ |/|@| |
303 | |@|\| |############# F ##############| |/|@| |
304 | |@|\| |#+--------------------------+#| |/|@| |
305 | |@|\| |#|            L             |#| |/|@| |
306 | |@|\| |#| +----------------------+ |#| |/|@| |
307 | |@|\| |#| |                      | |#| |/|@| |
308 | |@|\| |#| |                      | |#| |/|@| |
309 |A|B|D|E|F|G|        Child         |M|F|E|D|C|A|
310 | |@|/| |#| |                      | |#| |\|@| |
311 | |@|/| |#| |                      | |#| |\|@| |
312 | |@|/| |#| +----------------------+ |#| |\|@| |
313 | |@|/| |#|            N             |#| |\|@| |
314 | |@|/| |#+--------------------------+#| |\|@| |
315 | |@|/| |############# F ##############| |\|@| |
316 | |@|/| +------------------------------+ |\|@| |
317 | |@|/|                E                 |\|@| |
318 | |@|/+----------------------------------+\|@| |
319 | |@|///////////////// J \\\\\\\\\\\\\\\\\\|@| |
320 | |@+--------------------------------------+@| |
321 | |@@@@@@@@@@@@@@@@@@@ K @@@@@@@@@@@@@@@@@@@@| |
322 | +------------------------------------------+ |
323 |                      A                       |
324 +----------------------------------------------+
325
326 A: GtkContainer::border-width
327 B: GtkButton::default-border::left
328 C: GtkButton::default-border::right
329 D: xthickness
330 E: GtkWidget::focus-padding
331 F: GtkWidget::focus-line-width
332 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
333 I: GtkButton::default-border::top
334 J: ythickness
335 K: GtkButton::default-border::bottom
336 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
337 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
338 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
339
340
341 II) !HAS_DEFAULT && (!GtkWidget::interior-focus || !HAVE_FOCUS)
342
343 +----------------------------------------------+
344 |                                              |
345 |                      I                       |
346 |                                              |
347 |   +--------------------------------------+   |
348 |   |\\\\\\\\\\\\\\\\\ J //////////////////|   |
349 |   |\+----------------------------------+/|   |
350 |   |\|                E                 |/|   |
351 |   |\| +------------------------------+ |/|   |
352 |   |\| |############# F ##############| |/|   |
353 |   |\| |#+--------------------------+#| |/|   |
354 |   |\| |#|            L             |#| |/|   |
355 |   |\| |#| +----------------------+ |#| |/|   |
356 |   |\| |#| |                      | |#| |/|   |
357 |   |\| |#| |                      | |#| |/|   |
358 | B |D|E|F|G|        Child         |M|F|E|D| C |
359 |   |/| |#| |                      | |#| |\|   |
360 |   |/| |#| |                      | |#| |\|   |
361 |   |/| |#| +----------------------+ |#| |\|   |
362 |   |/| |#|            N             |#| |\|   |
363 |   |/| |#+--------------------------+#| |\|   |
364 |   |/| |############# F ##############| |\|   |
365 |   |/| +------------------------------+ |\|   |
366 |   |/|                E                 |\|   |
367 |   |/+----------------------------------+\|   |
368 |   |///////////////// J \\\\\\\\\\\\\\\\\\|   |
369 |   +--------------------------------------+   |
370 |                                              |
371 |                      K                       |
372 |                                              |
373 +----------------------------------------------+
374
375
376 a) CAN_DEFAULT
377
378 B: GtkContainer::border-width + GtkButton::default-outside-border::left
379 C: GtkContainer::border-width + GtkButton::default-outside-border::right
380 D: xthickness
381 E: GtkWidget::focus-padding
382 F: GtkWidget::focus-line-width
383 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0) +
384    (GtkButton::default-outside-border - GtkButton::default-outside-border)::left
385 I: GtkContainer::border-width + GtkButton::default-outside-border::top
386 J: ythickness
387 K: GtkContainer::border-width + GtkButton::default-outside-border::bottom
388 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0) +
389    (GtkButton::default-outside-border - GtkButton::default-outside-border)::top
390 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0) +
391    (GtkButton::default-outside-border - GtkButton::default-outside-border)::right
392 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0) +
393    (GtkButton::default-outside-border - GtkButton::default-outside-border)::bottom
394
395
396 b) !CAN_DEFAULT
397
398 B: GtkContainer::border-width
399 C: GtkContainer::border-width
400 D: xthickness
401 E: GtkWidget::focus-padding
402 F: GtkWidget::focus-line-width
403 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
404 I: GtkContainer::border-width
405 J: ythickness
406 K: GtkContainer::border-width
407 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
408 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
409 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
410
411
412
413
414 III) HAS_DEFAULT && (GtkWidget::interior-focus && HAVE_FOCUS)
415
416 +----------------------------------------------+
417 |                      A                       |
418 | +------------------------------------------+ |
419 | |@@@@@@@@@@@@@@@@@@@ I @@@@@@@@@@@@@@@@@@@@| |
420 | |@+--------------------------------------+@| |
421 | |@|################# F ##################|@| |
422 | |@|#+----------------------------------+#|@| |
423 | |@|#|                E                 |#|@| |
424 | |@|#| +------------------------------+ |#|@| |
425 | |@|#| |\\\\\\\\\\\\\ J //////////////| |#|@| |
426 | |@|#| |\+--------------------------+/| |#|@| |
427 | |@|#| |\|            L             |/| |#|@| |
428 | |@|#| |\| +----------------------+ |/| |#|@| |
429 | |@|#| |\| |                      | |/| |#|@| |
430 | |@|#| |\| |                      | |/| |#|@| |
431 |A|B|F|E|D|G|        Child         |M|D|E|F|C|A|
432 | |@|#| |/| |                      | |\| |#|@| |
433 | |@|#| |/| |                      | |\| |#|@| |
434 | |@|#| |/| +----------------------+ |\| |#|@| |
435 | |@|#| |/|            N             |\| |#|@| |
436 | |@|#| |/+--------------------------+\| |#|@| |
437 | |@|#| |///////////// J \\\\\\\\\\\\\\| |#|@| |
438 | |@|#| +------------------------------+ |#|@| |
439 | |@|#|                E                 |#|@| |
440 | |@|#+----------------------------------+#|@| |
441 | |@|################# F ##################|@| |
442 | |@+--------------------------------------+@| |
443 | |@@@@@@@@@@@@@@@@@@@ K @@@@@@@@@@@@@@@@@@@@| |
444 | +------------------------------------------+ |
445 |                      A                       |
446 +----------------------------------------------+
447
448 A: GtkContainer::border-width
449 B: GtkButton::default-border::left
450 C: GtkButton::default-border::right
451 D: xthickness
452 E: GtkWidget::focus-padding
453 F: GtkWidget::focus-line-width
454 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
455 I: GtkButton::default-border::top
456 J: ythickness
457 K: GtkButton::default-border::bottom
458 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
459 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
460 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
461
462
463 IV) !HAS_DEFAULT && (GtkWidget::interior-focus && HAVE_FOCUS)
464
465 +----------------------------------------------+
466 |                                              |
467 |                      I                       |
468 |                                              |
469 |   +--------------------------------------+   |
470 |   |################# J ##################|   |
471 |   |#+----------------------------------+#|   |
472 |   |#|                E                 |#|   |
473 |   |#| +------------------------------+ |#|   |
474 |   |#| |\\\\\\\\\\\\\ F //////////////| |#|   |
475 |   |#| |\+--------------------------+/| |#|   |
476 |   |#| |\|            L             |/| |#|   |
477 |   |#| |\| +----------------------+ |/| |#|   |
478 |   |#| |\| |                      | |/| |#|   |
479 |   |#| |\| |                      | |/| |#|   |
480 | B |D|E|F|G|        Child         |M|F|E|D| C |
481 |   |#| |/| |                      | |\| |#|   |
482 |   |#| |/| |                      | |\| |#|   |
483 |   |#| |/| +----------------------+ |\| |#|   |
484 |   |#| |/|            N             |\| |#|   |
485 |   |#| |/+--------------------------+\| |#|   |
486 |   |#| |///////////// F \\\\\\\\\\\\\\| |#|   |
487 |   |#| +------------------------------+ |#|   |
488 |   |#|                E                 |#|   |
489 |   |#+----------------------------------+#|   |
490 |   |################# J ##################|   |
491 |   +--------------------------------------+   |
492 |                                              |
493 |                      K                       |
494 |                                              |
495 +----------------------------------------------+
496
497
498 a) CAN_DEFAULT
499
500 B: GtkContainer::border-width + GtkButton::default-outside-border::left
501 C: GtkContainer::border-width + GtkButton::default-outside-border::right
502 D: xthickness
503 E: GtkWidget::focus-padding
504 F: GtkWidget::focus-line-width
505 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0) +
506    (GtkButton::default-outside-border - GtkButton::default-outside-border)::left
507 I: GtkContainer::border-width + GtkButton::default-outside-border::top
508 J: ythickness
509 K: GtkContainer::border-width + GtkButton::default-outside-border::bottom
510 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0) +
511    (GtkButton::default-outside-border - GtkButton::default-outside-border)::top
512 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0) +
513    (GtkButton::default-outside-border - GtkButton::default-outside-border)::right
514 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0) +
515    (GtkButton::default-outside-border - GtkButton::default-outside-border)::bottom
516
517
518 b) !CAN_DEFAULT
519
520 B: GtkContainer::border-width
521 C: GtkContainer::border-width
522 D: xthickness
523 E: GtkWidget::focus-padding
524 F: GtkWidget::focus-line-width
525 G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
526 I: GtkContainer::border-width
527 J: ythickness
528 K: GtkContainer::border-width
529 L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
530 M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
531 N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
532
533
534 ======================
535
536 GtkCheckButton
537
538 ======================
539
540 Note: This is the draw_indicator=TRUE case; draw_indicator=FALSE
541       is like GtkButton)
542
543  Style properties
544
545    GtkWidget::interior_focus = TRUE
546    GtkWidget::focus_width = 1
547    GtkWidget::focus_padding = 0
548    GtkButton::indicator-size = 13
549    GtkButton::indicator-spacing = 2
550
551  Properties
552
553    GtkContainer::border_width = 0
554
555  #defines
556
557    CHILD_SPACING 1
558
559 interior_focus
560
561  +-------------------------------------------+
562  |                             F             |
563  |       G        +------------------------+ |
564  |                |########### D ##########| |
565  | +------------+ |#+--------------------+#| |
566  | |            | |#|          E         |#| |
567  | |            | |#| +----------------+ |#| |
568  | |            | |#| |                | |#| |
569  |A|    BxB     |C|D|E|      Child     |E|#|F|
570  | |            | |#| |                | |#| |
571  | |            | |#| +----------------+ |#| |
572  | |            | |#|          E         |#| |
573  | +------------+ |#+--------------------+#| |
574  |                |########### D ##########| |
575  |      G         +------------------------+ |
576  |                             F             |
577  +-------------------------------------------+
578
579 A: GtkContainer::border-width + GtkCheckButton::indicator-spacing
580 B: GtkCheckButton::indicator-size
581 C: 2 * GtkCheckButton::indicator-spacing
582 D: GtkWidget::focus-line-width
583 E: GtkWidget::focus-padding
584 F: GtkContainer::border-width
585 G: GtkConainer::border-width + GtkCheckButton::indicator-spacing
586
587 !interior_focus
588
589  +-------------------------------------------+
590  |                   A                       |
591  | +---------------------------------------+ |
592  | |################ D ####################| |
593  | |#+-----------------------------------+#| |
594  | |#|       G                E          |#| |
595  | |#| +------------+  +---------------+ |#| |
596  | |#| |            |  |               | |#| |
597  | |#| |            |  |               | |#| |
598  |A|D|F|    BxB     |C |      Child    |E|D|A|
599  | |#| |            |  |               | |#| |
600  | |#| |            |  |               | |#| |
601  | |#| +------------+  +---------------+ |#| |
602  | |#|       G                E          |#| |
603  | |#+-----------------------------------+#| |
604  | |################ D ####################| |
605  | +---------------------------------------+ |
606  |                   A                       |
607  +-------------------------------------------+
608
609 A: GtkContainer::border-width
610 B: GtkCheckButton::indicator-size
611 C: 2 * GtkCheckButton::indicator-spacing
612 D: GtkWidget::focus-line-width
613 E: GtkWidget::focus-padding
614 F: GtkWidget::focus-padding + GtkCheckButton::indicator-spacing
615 G: GtkWidget::focus-padding + GtkCheckButton::indicator-spacing
616
617 ===============
618
619 GtkEntry
620
621 ===============
622
623  Style properties
624
625    GtkWidget::interior_focus = TRUE
626    GtkWidget::focus_width = 1
627    GtkWidget::focus_padding = 0
628
629  Properties
630
631    GtkContainer::border_width = 0
632
633  #defines
634
635    INNER_BORDER 2
636
637
638
639 interior_focus
640
641 +--------------------------------------+
642 |\\\\\\\\\\\\\\\\\ B //////////////////|
643 |\+----------------------------------+/|
644 |\|                D                 |/|
645 |\| +------------------------------+ |/|
646 |\| |                              | |/|
647 |\| |                              | |/|
648 |A|D|                              |D|A|
649 |\| |                              | |/|
650 |\| |                              | |/|
651 |\| +------------------------------+ |/|
652 |\|                D                 |/|
653 |\+----------------------------------+/|
654 |///////////////// B \\\\\\\\\\\\\\\\\/|
655 +--------------------------------------+
656
657 A: xthickness
658 B: ythickness
659 D: INNER_BORDER
660
661 !interior_focus
662
663 +------------------------------------------+
664 |####################C#####################|
665 |#+--------------------------------------+#|
666 |#|\\\\\\\\\\\\\\\\\ B //////////////////|#|
667 |#|\+----------------------------------+/|#|
668 |#|\|                D                 |/|#|
669 |#|\| +------------------------------+ |/|#|
670 |#|\| |                              | |/|#|
671 |#|\| |                              | |/|#|
672 |C|A|D|                              |D|A|C|
673 |#|\| |                              | |/|#|
674 |#|\| |                              | |/|#|
675 |#|\| +------------------------------+ |/|#|
676 |#|\|                D                 |/|#|
677 |#|\+----------------------------------+/|#|
678 |#|///////////////// B \\\\\\\\\\\\\\\\\/|#|
679 |#+--------------------------------------+#|
680 |####################C#####################|
681 +------------------------------------------+
682
683 A: xthickness
684 B: ythickness
685 C: GtkWidget::focus-line-width
686 D: INNER_BORDER + (HAVE_FOCUS ? 0 : GtkWidget::focus-line-width
687
688 Note - effect here for !interior_focus is that bevel moves in
689 by focus-line-width when entry gains focus
690
691 ===============
692
693 GtkExpander
694
695 ===============
696
697  Style properties
698   GtkWidget::focus_line_width
699   GtkWidget::focus_padding
700   GtkExpander::expander_size
701   GtkExpander::expander_spacing
702
703  Properties
704   GtkContainer::border_width
705   GtkExpander::spacing
706
707 if (GTK_WIDGET_VISIBLE (bin->child) && interior_focus)
708
709 +-------------------------------------+
710 |                  A                  |
711 | +---------+-----------------------+ |
712 | |    C    |##########E############| |
713 | | +-----+ |#+-------------------+#| |
714 | | |     | |#|        F          |#| |
715 | | |     | |#| +---------------+ |#| |
716 |A|C| BxB |C|E|F| label_widget  |F|E|A|
717 | | |     | |#| +---------------+ |#| |
718 | | |     | |#|        F          |#| |
719 | | +-----+ |#+-------------------+#| |
720 | |    C    |##########E############| |
721 | +---------+-----------------------+ |
722 | |                D                | |
723 | +---------------------------------+ |
724 | |                                 | |
725 | |                                 | |
726 | |                                 | |
727 |A|             bin->child          |A|
728 | |                                 | |
729 | |                                 | |
730 | |                                 | |
731 | +---------------------------------+ |
732 |                  A                  |
733 +-------------------------------------+
734
735  A: GtkContainer::border_width
736  B: GtkExpander::expander_size
737  C: GtkExpander::expander_spacing
738  D: GtkExpander::spacing
739  E: GtkWidget::focus_line_width
740  F: GtkWidget::focus_padding
741
742 if (GTK_WIDGET_VISIBLE (bin->child) && !interior_focus)
743
744 +-------------------------------------------+
745 |                    A                      |
746 | +---------------------------------------+ |
747 | |##################E####################| |
748 | |#+-----------------------------------+#| |
749 | |#|                F                  |#| |
750 | |#| +---------+---------------------+ |#| |
751 | |#| |    C    |                     | |#| |
752 | |#| | +-----+ |                     | |#| |
753 |A|E|F|C| BxB |C|    label_widget     |F|E|A|
754 | |#| | +-----+ |                     | |#| |
755 | |#| |    C    |                     | |#| |
756 | |#| +---------+---------------------+ |#| |
757 | |#|                F                  |#| |
758 | |#+-----------------------------------+#| |
759 | |##################E####################| |
760 | +---------------------------------------+ |
761 | |                  D                    | |
762 | +---------------------------------------+ |
763 | |                                       | |
764 | |                                       | |
765 | |                                       | |
766 |A|               bin->child              |A|
767 | |                                       | |
768 | |                                       | |
769 | |                                       | |
770 | +---------------------------------------+ |
771 |                     A                     |
772 +-------------------------------------------+
773
774  A: GtkContainer::border_width
775  B: GtkExpander::expander_size
776  C: GtkExpander::expander_spacing
777  D: GtkExpander::spacing
778  E: GtkWidget::focus_line_width
779  F: GtkWidget::focus_padding
780
781 if (!GTK_WIDGET_VISIBLE (bin->child) && interior_focus)
782
783 +-------------------------------------+
784 |                  A                  |
785 | +---------+-----------------------+ |
786 | |    C    |##########E############| |
787 | | +-----+ |#+-------------------+#| |
788 | | |     | |#|        F          |#| |
789 | | |     | |#| +---------------+ |#| |
790 |A|C| BxB |C|E|F| label_widget  |F|E|A|
791 | | |     | |#| +---------------+ |#| |
792 | | |     | |#|        F          |#| |
793 | | +-----+ |#+-------------------+#| |
794 | |    C    |##########E############| |
795 | +---------+-----------------------+ |
796 |                  A                  |
797 +-------------------------------------+
798
799  A: GtkContainer::border_width
800  B: GtkExpander::expander_size
801  C: GtkExpander::expander_spacing
802  E: GtkWidget::focus_line_width
803  F: GtkWidget::focus_padding
804
805 if (!GTK_WIDGET_VISIBLE (bin->child) && !interior_focus)
806
807 +-------------------------------------------+
808 |                    A                      |
809 | +---------------------------------------+ |
810 | |##################E####################| |
811 | |#+-----------------------------------+#| |
812 | |#|                F                  |#| |
813 | |#| +---------+---------------------+ |#| |
814 | |#| |    C    |                     | |#| |
815 | |#| | +-----+ |                     | |#| |
816 |A|E|F|C| BxB |C|     label_widget    |F|E|A|
817 | |#| | +-----+ |                     | |#| |
818 | |#| |    C    |                     | |#| |
819 | |#| +---------+---------------------+ |#| |
820 | |#|                F                  |#| |
821 | |#+-----------------------------------+#| |
822 | |##################E####################| |
823 | +---------------------------------------+ |
824 |                    A                      |
825 +-------------------------------------------+
826
827  A: GtkContainer::border_width
828  B: GtkExpander::expander_size
829  C: GtkExpander::expander_spacing
830  E: GtkWidget::focus_line_width
831  F: GtkWidget::focus_padding