summaryrefslogtreecommitdiff
path: root/docs/widget_geometry.txt
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-12-04 03:27:30 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-12-04 03:27:30 +0000
commit7537825b34bee7094b6bf2e4f3f1e551114ed022 (patch)
treefb77377ab8aeb2e537f2177554e1d2ec9d390ee2 /docs/widget_geometry.txt
parentcac3ad31314da1c2b0a5c35f54f7328da5ed51a3 (diff)
downloadgtk+-7537825b34bee7094b6bf2e4f3f1e551114ed022.tar.gz
Patch from Bill Haneman (with many modifications) to make the focus color
Mon Dec 3 16:39:17 2001 Owen Taylor <otaylor@redhat.com> Patch from Bill Haneman (with many modifications) to make the focus color work on dark themes and to make the focus line width configurable. (#61079, #63074) * gtk/gtkwidget.c: Add style properties, ::focus-widget, ::focus-line-width, and ::focus-padding. * gtk/gtkstyle.[ch]: Make gtk_paint_focus() take a state argument as well so we can use fg[STATE] to draw instead of always drawing with black. Cange paint_focus() to respect GtkWidget::focus-width and GtkWidget::focus-line-pattern. Fix continuity problem where the default 1-1 stipple had a blob in one corner and a gap in the other. Change the interpretation of x/y/width/height to be the bounding box of the focus rect instead of the rectangle passed to gdk_draw_rectangle. * gtk/gtkcheckbutton.c gtk/gtklistitem.c gtk/gtknotebook.c gtk/gtkoptionmenu.c gtk/gtkradiobutton.c gtk/gtkspinbutton.c gtk/gtktextview.c gtk/gtktreeview.c: Handle ::focus-width and ::focus-line-padding. * gtk/gtkentry.c: Handle :;focus-width property; cleanup and remove duplicated code; fix drawing of focus rectangle when interior-focus = FALSE. (#63072, #63073) * gtk/gtkrange.c gtk/gtktext.c gtk/gtktreeitem.c gtk/gtktreeviewcolumn.c: Basic fixups to make compile; Range and TreeViewColumn will need more extensive fixing. * gtk/gtkcolorsel.c: Honor focus line attributes when drawing the focus on the color swatches. (#63071) * gtk/gtkhsv.c: Honor focus line attributes when drawing the focus for the ring and triangle. * docs/widget_geometry.txt: Start at documenting how various widgets are drawn. * gtk/gtkbutton.c (_gtk_button_paint): Export _gtk_button_paint() librarywide, so we don't have duplicate a bunch of code in gtktogglebutton.c. * gtk/gtktogglebutton.c: Use _gtk_button_paint().
Diffstat (limited to 'docs/widget_geometry.txt')
-rw-r--r--docs/widget_geometry.txt594
1 files changed, 594 insertions, 0 deletions
diff --git a/docs/widget_geometry.txt b/docs/widget_geometry.txt
new file mode 100644
index 0000000000..d6627f44f6
--- /dev/null
+++ b/docs/widget_geometry.txt
@@ -0,0 +1,594 @@
+This file is some notes about how different widgets are drawn.
+
+=============
+
+GtkOptionMenu:
+
+=============
+
+Geometry parameters
+
+ Style properties
+
+ GtkWidget::interior_focus = TRUE
+ GtkWidget::focus_width = 1
+ GtkWidget::focus_padding = 0
+ GtkOptionMenu::indicator_size = { 7, 13 }
+ GtkOptionMenu::indicator_spacing = { 7, 5, 2, 2 }
+
+ Properties
+
+ GtkContainer::border_width = 0
+
+ #defines
+
+ CHILD_LEFT_SPACING = 5
+ CHILD_RIGHT_SPACING = 1
+ CHILD_TOP_SPACING = 1
+ CHILD_BOTTOM_SPACING = 1
+
+
+I) interior_focus = TRUE
+
++--------------------------------------------------+
++ A |
+| +----------------------------------------------+ |
+| |\\\\\\\\\\\\\\\\\\\\ H ///////////////////////| |
+| |\+------------------------------------------+/| |
+| |\| C |/| |
+| |\| +------------------------------+ |/| |
+| |\| |################ D ###########| L |/| |
+| |\| |#+--------------------------+#| |/| |
+| |\| |#| K |#| |/| |
+| |\| |#| +----------------------+ |#| +-----+ |/| |
+| |\| |#| | | |#| | /#\ | |/| |
+| |\| |#| | | |#| | === | |/| |
+|A|B|C|D|E| Child |F|D|G| IxJ |O|B|A|
+| |/| |#| | | |#| | === | |\| |
+| |/| |#| | | |#| | \#/ | |\| |
+| |/| |#| +----------------------+ |#| +-----+ |\| |
+| |/| |#| M |#| |\| |
+| |/| |#+---------------------------#| |\| |
+| |/| |################ D ###########| N |\| |
+| |/| +------------------------------+ |\| |
+| |/| C |\| |
+| |/+------------------------------------------+\| |
+| |//////////////////// H \\\\\\\\\\\\\\\\\\\\\\\| |
+| +----------------------------------------------+ |
+| A |
++--------------------------------------------------+
+
+ A: GtkContainer::border_width
+ B: xthickness
+ C: GtkWidget::focus_pad
+ D: GtkWidget::focus_width
+ E: CHILD_LEFT_SPACING
+ F: CHILD_RIGHT_SPACING
+ G: GtkOptionMenu::indicator_spacing::left
+ H: ythickness
+ I: GtkOptionMenu::indicator_size::width
+ J: GtkOptionMenu::indicator_size::height
+ K: CHILD_TOP_SPACING
+ L: GtkOptionMenu::indicator_spacing::top + GtkWidget::focus_width + GtkWidget::focus_pad + CHILD_TOP_SPACING
+ M: CHILD_BOTTOM_SPACING
+ N: GtkOptionMenu::indicator_spacing::bottom + GtkWidget::focus_width + GtkWidget::focus_pad + CHILD_BOTTOM_SPACING
+ O: GtkOptionMenu::indicator_spacing::right
+
+
+II) interior_focus = FALSE
+
++--------------------------------------------------+
++ A |
+| +----------------------------------------------+ |
+| |#################### B #######################| |
+| |#+------------------------------------------+#| |
+| |#| C |#| |
+| |#| +--------------------------------------+ |#| |
+| |#| |\\\\\\\\\\\\\\\\ H ///////////////////| |#| |
+| |#| |\+----------------------------------+/| |#| |
+| |#| |\| K L |/| |#| |
+| |#| |\| +----------------------+ +-----+ |/| |#| |
+| |#| |\| | | | /#\ | |/| |#| |
+| |#| |\| | | | === | |/| |#| |
+|A|B|C|D|E| Child |F| IxJ |G|D|C|B|A|
+| |#| |/| | | | === | |\| |#| |
+| |#| |/| | | | \#/ | |\| |#| |
+| |#| |/| +----------------------+ +-----+ |\| |#| |
+| |#| |/| M N |\| |#| |
+| |#| |/+----------------------------------+\| |#| |
+| |#| |//////////////// H \\\\\\\\\\\\\\\\\\\| |#| |
+| |#| +--------------------------------------+ |#| |
+| |#| C |#| |
+| |#+------------------------------------------+#| |
+| |#################### B #######################| |
+| +----------------------------------------------+ |
+| A |
++--------------------------------------------------+
+
+
+ A: GtkContainer::border_width
+ B: GtkWidget::focus_width
+ C: GtkWidget::focus_padding
+ D: xthickness
+ E: CHILD_LEFT_SPACING
+ F: CHILD_RIGHT_SPACING + GtkOptionMenu::indicator_spacing::left
+ G: GtkOptionMenu::indicator_spacing::right
+ H: ythickness
+ I: GtkOptionMenu::indicator_size::width
+ J: GtkOptionMenu::indicator_size::height
+ K: CHILD_TOP_SPACING
+ L: CHILD_TOP_SPACING + GtkOptionMenu::indicator_spacing::top
+ M: CHILD_BOTTOM_SPACING
+ N: CHILD_BOTTOM_SPACING + GtkOptionMenu::indicator_spacing::bottom
+
+
+III) interior_focus = FALSE, !HAVE_FOCUS
+
++--------------------------------------------------+
++ A |
+| +----------------------------------------------+ |
+| |\\\\\\\\\\\\\\\\\\\\ H ///////////////////////| |
+| |\+------------------------------------------+/| |
+| |\| |/| |
+| |\| |/| |
+| |\| |/| |
+| |\| |/| |
+| |\| K L |/| |
+| |\| +----------------------+ +-----+ |/| |
+| |\| | | | /#\ | |/| |
+| |\| | | | === | |/| |
+|A|D| E| Child |F| IxJ |G |D|A|
+| |/| | | | === | |\| |
+| |/| | | | \#/ | |\| |
+| |/| +----------------------+ +-----+ |\| |
+| |/| M N |\| |
+| |/| |\| |
+| |/| |\| |
+| |/| |\| |
+| |/| |\| |
+| |/+------------------------------------------+\| |
+| |//////////////////// H \\\\\\\\\\\\\\\\\\\\\\\| |
+| +----------------------------------------------+ |
+| A |
++--------------------------------------------------+
+
+
+ A: GtkContainer::border_width
+ B: GtkWidget::focus_width
+ C: GtkWidget::focus_padding
+ D: xthickness
+ E: CHILD_LEFT_SPACING + GtkWidget::focus_width + GtkWidget::focus_padding
+ F: CHILD_RIGHT_SPACING + GtkOptionMenu::in+icator_spacing::left
+ G: GtkOptionMenu::indicator_spacing::right + GtkWidget::focus_width + GtkWidget::focus_padding
+ H: ythickness
+ I: GtkOptionMenu::indicator_size::width
+ J: GtkOptionMenu::indicator_size::height
+ K: CHILD_TOP_SPACING + GtkWidget::focus_width + GtkWidget::focus_padding
+ L: CHILD_TOP_SPACING + GtkOptionMenu::indicator_spacing::top + GtkWidget::focus_width + GtkWidget::focus_padding
+ M: CHILD_BOTTOM_SPACING + GtkWidget::focus_width + GtkWidget::focus_padding
+ N: CHILD_BOTTOM_SPACING + GtkOptionMenu::indicator_spacing::bottom + GtkWidget::focus_width + GtkWidget::focus_padding
+
+
+
+=====================
+
+GtkButton
+
+=====================
+
+ Style properties
+
+ GtkWidget::interior_focus = TRUE
+ GtkWidget::focus_width = 1
+ GtkWidget::focus_padding = 0
+ GtkButton::default_border = { 1, 1, 1, 1 };
+ GtkButton::default_outside_border = { 0, 0, 0, 0 };
+ GtkButton::child_displacement_x = 0;
+ GtkButton::child_displacement_y = 0;
+
+ Properties
+
+ GtkContainer::border_width = 0
+
+ #defines
+
+ CHILD_SPACING 1
+
+I) HAS_DEFAULT && (!GtkWidget::interior-focus || !HAVE_FOCUS)
+
++----------------------------------------------+
+| A |
+| +------------------------------------------+ |
+| |@@@@@@@@@@@@@@@@@@@ I @@@@@@@@@@@@@@@@@@@@| |
+| |@+--------------------------------------+@| |
+| |@|\\\\\\\\\\\\\\\\\ J //////////////////|@| |
+| |@|\+----------------------------------+/|@| |
+| |@|\| E |/|@| |
+| |@|\| +------------------------------+ |/|@| |
+| |@|\| |############# F ##############| |/|@| |
+| |@|\| |#+--------------------------+#| |/|@| |
+| |@|\| |#| L |#| |/|@| |
+| |@|\| |#| +----------------------+ |#| |/|@| |
+| |@|\| |#| | | |#| |/|@| |
+| |@|\| |#| | | |#| |/|@| |
+|A|B|D|E|F|G| Child |M|F|E|D|C|A|
+| |@|/| |#| | | |#| |\|@| |
+| |@|/| |#| | | |#| |\|@| |
+| |@|/| |#| +----------------------+ |#| |\|@| |
+| |@|/| |#| N |#| |\|@| |
+| |@|/| |#+--------------------------+#| |\|@| |
+| |@|/| |############# F ##############| |\|@| |
+| |@|/| +------------------------------+ |\|@| |
+| |@|/| E |\|@| |
+| |@|/+----------------------------------+\|@| |
+| |@|///////////////// J \\\\\\\\\\\\\\\\\\|@| |
+| |@+--------------------------------------+@| |
+| |@@@@@@@@@@@@@@@@@@@ K @@@@@@@@@@@@@@@@@@@@| |
+| +------------------------------------------+ |
+| A |
++----------------------------------------------+
+
+A: GtkContainer::border-width
+B: GtkButton::default-border::left
+C: GtkButton::default-border::right
+D: xthickness
+E: GtkWidget::focus-padding
+F: GtkWidget::focus-line-width
+G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
+I: GtkButton::default-border::top
+J: ythickness
+K: GtkButton::default-border::bottom
+L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
+M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
+N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
+
+
+II) !HAS_DEFAULT && (!GtkWidget::interior-focus || !HAVE_FOCUS)
+
++----------------------------------------------+
+| |
+| I |
+| |
+| +--------------------------------------+ |
+| |\\\\\\\\\\\\\\\\\ J //////////////////| |
+| |\+----------------------------------+/| |
+| |\| E |/| |
+| |\| +------------------------------+ |/| |
+| |\| |############# F ##############| |/| |
+| |\| |#+--------------------------+#| |/| |
+| |\| |#| L |#| |/| |
+| |\| |#| +----------------------+ |#| |/| |
+| |\| |#| | | |#| |/| |
+| |\| |#| | | |#| |/| |
+| B |D|E|F|G| Child |M|F|E|D| C |
+| |/| |#| | | |#| |\| |
+| |/| |#| | | |#| |\| |
+| |/| |#| +----------------------+ |#| |\| |
+| |/| |#| N |#| |\| |
+| |/| |#+--------------------------+#| |\| |
+| |/| |############# F ##############| |\| |
+| |/| +------------------------------+ |\| |
+| |/| E |\| |
+| |/+----------------------------------+\| |
+| |///////////////// J \\\\\\\\\\\\\\\\\\| |
+| +--------------------------------------+ |
+| |
+| K |
+| |
++----------------------------------------------+
+
+
+a) CAN_DEFAULT
+
+B: GtkContainer::border-width + GtkButton::default-outside-border::left
+C: GtkContainer::border-width + GtkButton::default-outside-border::right
+D: xthickness
+E: GtkWidget::focus-padding
+F: GtkWidget::focus-line-width
+G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::left
+I: GtkContainer::border-width + GtkButton::default-outside-border::top
+J: ythickness
+K: GtkContainer::border-width + GtkButton::default-outside-border::bottom
+L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::top
+M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::right
+N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::bottom
+
+
+b) !CAN_DEFAULT
+
+B: GtkContainer::border-width
+C: GtkContainer::border-width
+D: xthickness
+E: GtkWidget::focus-padding
+F: GtkWidget::focus-line-width
+G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
+I: GtkContainer::border-width
+J: ythickness
+K: GtkContainer::border-width
+L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
+M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
+N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
+
+
+
+
+III) HAS_DEFAULT && (GtkWidget::interior-focus && HAVE_FOCUS)
+
++----------------------------------------------+
+| A |
+| +------------------------------------------+ |
+| |@@@@@@@@@@@@@@@@@@@ I @@@@@@@@@@@@@@@@@@@@| |
+| |@+--------------------------------------+@| |
+| |@|################# F ##################|@| |
+| |@|#+----------------------------------+#|@| |
+| |@|#| E |#|@| |
+| |@|#| +------------------------------+ |#|@| |
+| |@|#| |\\\\\\\\\\\\\ J //////////////| |#|@| |
+| |@|#| |\+--------------------------+/| |#|@| |
+| |@|#| |\| L |/| |#|@| |
+| |@|#| |\| +----------------------+ |/| |#|@| |
+| |@|#| |\| | | |/| |#|@| |
+| |@|#| |\| | | |/| |#|@| |
+|A|B|F|E|D|G| Child |M|D|E|F|C|A|
+| |@|#| |/| | | |\| |#|@| |
+| |@|#| |/| | | |\| |#|@| |
+| |@|#| |/| +----------------------+ |\| |#|@| |
+| |@|#| |/| N |\| |#|@| |
+| |@|#| |/+--------------------------+\| |#|@| |
+| |@|#| |///////////// J \\\\\\\\\\\\\\| |#|@| |
+| |@|#| +------------------------------+ |#|@| |
+| |@|#| E |#|@| |
+| |@|#+----------------------------------+#|@| |
+| |@|################# F ##################|@| |
+| |@+--------------------------------------+@| |
+| |@@@@@@@@@@@@@@@@@@@ K @@@@@@@@@@@@@@@@@@@@| |
+| +------------------------------------------+ |
+| A |
++----------------------------------------------+
+
+A: GtkContainer::border-width
+B: GtkButton::default-border::left
+C: GtkButton::default-border::right
+D: xthickness
+E: GtkWidget::focus-padding
+F: GtkWidget::focus-line-width
+G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
+I: GtkButton::default-border::top
+J: ythickness
+K: GtkButton::default-border::bottom
+L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
+M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
+N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
+
+
+IV) !HAS_DEFAULT && (GtkWidget::interior-focus && HAVE_FOCUS)
+
++----------------------------------------------+
+| |
+| I |
+| |
+| +--------------------------------------+ |
+| |################# J ##################| |
+| |#+----------------------------------+#| |
+| |#| E |#| |
+| |#| +------------------------------+ |#| |
+| |#| |\\\\\\\\\\\\\ F //////////////| |#| |
+| |#| |\+--------------------------+/| |#| |
+| |#| |\| L |/| |#| |
+| |#| |\| +----------------------+ |/| |#| |
+| |#| |\| | | |/| |#| |
+| |#| |\| | | |/| |#| |
+| B |D|E|F|G| Child |M|F|E|D| C |
+| |#| |/| | | |\| |#| |
+| |#| |/| | | |\| |#| |
+| |#| |/| +----------------------+ |\| |#| |
+| |#| |/| N |\| |#| |
+| |#| |/+--------------------------+\| |#| |
+| |#| |///////////// F \\\\\\\\\\\\\\| |#| |
+| |#| +------------------------------+ |#| |
+| |#| E |#| |
+| |#+----------------------------------+#| |
+| |################# J ##################| |
+| +--------------------------------------+ |
+| |
+| K |
+| |
++----------------------------------------------+
+
+
+a) CAN_DEFAULT
+
+B: GtkContainer::border-width + GtkButton::default-outside-border::left
+C: GtkContainer::border-width + GtkButton::default-outside-border::right
+D: xthickness
+E: GtkWidget::focus-padding
+F: GtkWidget::focus-line-width
+G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::left
+I: GtkContainer::border-width + GtkButton::default-outside-border::top
+J: ythickness
+K: GtkContainer::border-width + GtkButton::default-outside-border::bottom
+L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::top
+M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::right
+N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0) +
+ (GtkButton::default-outside-border - GtkButton::default-outside-border)::bottom
+
+
+b) !CAN_DEFAULT
+
+B: GtkContainer::border-width
+C: GtkContainer::border-width
+D: xthickness
+E: GtkWidget::focus-padding
+F: GtkWidget::focus-line-width
+G: CHILD_SPACING + (depressed ? GtkButton::child-displacement-x : 0)
+I: GtkContainer::border-width
+J: ythickness
+K: GtkContainer::border-width
+L: CHILD_SPACING + (depressed ? GtkButton::child-displacement-y : 0)
+M: CHILD_SPACING - (depressed ? GtkButton::child-displacement-x : 0)
+N: CHILD_SPACING - (depressed ? GtkButton::child-displacement-y : 0)
+
+
+======================
+
+GtkCheckButton
+
+======================
+
+Note: This is the draw_indicator=TRUE case; draw_indicator=FALSE
+ is like GtkButton)
+
+ Style properties
+
+ GtkWidget::interior_focus = TRUE
+ GtkWidget::focus_width = 1
+ GtkWidget::focus_padding = 0
+ GtkButton::indicator-size = 13
+ GtkButton::indicator-spacing = 2
+
+ Properties
+
+ GtkContainer::border_width = 0
+
+ #defines
+
+ CHILD_SPACING 1
+
+interior_focus
+
+ +-------------------------------------------+
+ | F |
+ | G +------------------------+ |
+ | |########### D ##########| |
+ | +------------+ |#+--------------------+#| |
+ | | | |#| E |#| |
+ | | | |#| +----------------+ |#| |
+ | | | |#| | | |#| |
+ |A| BxB |C|D|E| Child |E|#|F|
+ | | | |#| | | |#| |
+ | | | |#| +----------------+ |#| |
+ | | | |#| E |#| |
+ | +------------+ |#+--------------------+#| |
+ | |########### D ##########| |
+ | G +------------------------+ |
+ | F |
+ +-------------------------------------------+
+
+A: GtkContainer::border-width + GtkCheckButton::indicator-spacing
+B: GtkCheckButton::indicator-size
+C: 2 * GtkCheckButton::indicator-spacing
+D: GtkWidget::focus-line-width
+E: GtkWidget::focus-padding
+F: GtkContainer::border-width
+G: GtkConainer::border-width + GtkCheckButton::indicator-spacing
+
+!interior_focus
+
+ +-------------------------------------------+
+ | A |
+ | +---------------------------------------+ |
+ | |################ D ####################| |
+ | |#+-----------------------------------+#| |
+ | |#| G E |#| |
+ | |#| +------------+ +---------------+ |#| |
+ | |#| | | | | |#| |
+ | |#| | | | | |#| |
+ |A|D|F| BxB |C | Child |E|D|A|
+ | |#| | | | | |#| |
+ | |#| | | | | |#| |
+ | |#| +------------+ +---------------+ |#| |
+ | |#| G E |#| |
+ | |#+-----------------------------------+#| |
+ | |################ D ####################| |
+ | +---------------------------------------+ |
+ | A |
+ +-------------------------------------------+
+
+A: GtkContainer::border-width
+B: GtkCheckButton::indicator-size
+C: 2 * GtkCheckButton::indicator-spacing
+D: GtkWidget::focus-line-width
+E: GtkWidget::focus-padding
+F: GtkWidget::focus-padding + GtkCheckButton::indicator-spacing
+G: GtkWidget::focus-padding + GtkCheckButton::indicator-spacing
+
+===============
+
+GtkEntry
+
+===============
+
+ Style properties
+
+ GtkWidget::interior_focus = TRUE
+ GtkWidget::focus_width = 1
+ GtkWidget::focus_padding = 0
+
+ Properties
+
+ GtkContainer::border_width = 0
+
+ #defines
+
+ INNER_BORDER 2
+
+
+
+interior_focus
+
++--------------------------------------+
+|\\\\\\\\\\\\\\\\\ B //////////////////|
+|\+----------------------------------+/|
+|\| D |/|
+|\| +------------------------------+ |/|
+|\| | | |/|
+|\| | | |/|
+|A|D| |D|A|
+|\| | | |/|
+|\| | | |/|
+|\| +------------------------------+ |/|
+|\| D |/|
+|\+----------------------------------+/|
+|///////////////// B \\\\\\\\\\\\\\\\\/|
++--------------------------------------+
+
+A: xthickness
+B: ythickness
+D: INNER_BORDER
+
+!interior_focus
+
++------------------------------------------+
+|####################C#####################|
+|#+--------------------------------------+#|
+|#|\\\\\\\\\\\\\\\\\ B //////////////////|#|
+|#|\+----------------------------------+/|#|
+|#|\| D |/|#|
+|#|\| +------------------------------+ |/|#|
+|#|\| | | |/|#|
+|#|\| | | |/|#|
+|C|A|D| |D|A|C|
+|#|\| | | |/|#|
+|#|\| | | |/|#|
+|#|\| +------------------------------+ |/|#|
+|#|\| D |/|#|
+|#|\+----------------------------------+/|#|
+|#|///////////////// B \\\\\\\\\\\\\\\\\/|#|
+|#+--------------------------------------+#|
+|####################C#####################|
++------------------------------------------+
+
+A: xthickness
+B: ythickness
+C: GtkWidget::focus-line-width
+D: INNER_BORDER + (HAVE_FOCUS ? 0 : GtkWidget::focus-line-width
+
+Note - effect here for !interior_focus is that bevel moves in
+by focus-line-width when entry gains focus