forked from AuroraMiddleware/gtk
7537825b34
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().
595 lines
22 KiB
Plaintext
595 lines
22 KiB
Plaintext
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
|