| This file is some notes about how different widgets are drawn. |
| |
| ============= |
| |
| GtkMenu |
| |
| ============= |
| +----------------------------------------------------------------------------+ |
| | A | |
| | +------------------------------------------------------------------------+ | |
| | |############################# C ########################################| | |
| | |# D #| | |
| | |# +-------------------------------------------------------------------+#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | Item 1 |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# +-------------------------------------------------------------------+#| | |
| | |# +-------------------------------------------------------------------+#| | |
| | |# | |#| | |
| | |# | |#| | |
| |A|B | |B|A| |
| | |# | Item 2 |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# +-------------------------------------------------------------------+#| | |
| | |# [...] #| | |
| | |# +-------------------------------------------------------------------+#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | Item n |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# | |#| | |
| | |# +-------------------------------------------------------------------+#| | |
| | |# D #| | |
| | |############################# C ########################################| | |
| | +------------------------------------------------------------------------| | |
| | A | |
| +----------------------------------------------------------------------------+ |
| |
| A: GtkContainer::border_width |
| B: xthickness |
| C: ythickness |
| D: vertical_padding |
| |
| ============= |
| |
| GtkMenuItem |
| |
| ============= |
| |
| +----------------------------------------------------------------------------+ |
| | A | |
| | +------------------------------------------------------------------------+ | |
| | |############################# C ########################################| | |
| | |#+-+------------+--+-------------------------------+--+-------------+-+#| | |
| | |#| |\\\\\\\\\\\\| | /|\ |**| | |#| | |
| | |#| |<------E------>| | |**| G | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| >> | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| >>>> | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| >>>>>> | |#| | |
| |A|B|D|\\\\\\\\\\\\| F| Child G |*H| >>>>>>>> |D|B|A| |
| | |#| |\\\\\\\\\\\\| | | |**| >>>>>> | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| >>>> | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| >> | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| | |#| | |
| | |#| |\\\\\\\\\\\\| | | |**| | |#| | |
| | |#| |\\\\\\\\\\\\| | \|/ |**| | |#| | |
| | |#+-+------------+--+-------------------------------+--+-------------+-+#| | |
| | |############################# C ########################################| | |
| | +------------------------------------------------------------------------+ | |
| | A | |
| +----------------------------------------------------------------------------+ |
| |
| A: GtkContainer:border_width |
| B: xthickness |
| C: ythickness |
| D: horizontal_padding |
| E: toggle_size |
| F: toggle_spacing |
| G: Requested height of child (also used for width of arrow |
| H: arrow_spacing spacing (when the item has a non-vertical submenu) |
| |
| |
| ============= |
| |
| 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 |
| |
| ===================== |
| |
| NOTE: Due to a bug that is basically unfixable in a sufficiently compatible |
| NOTE: way, the button gives the space requested for focus_width and |
| NOTE: focus_padding to the child (in addition to the space requested by |
| NOTE: the child), if the button is !CAN_FOCUS. |
| |
| 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 |
| |
| =============== |
| |
| GtkExpander |
| |
| =============== |
| |
| Style properties |
| GtkWidget::focus_line_width |
| GtkWidget::focus_padding |
| GtkExpander::expander_size |
| GtkExpander::expander_spacing |
| |
| Properties |
| GtkContainer::border_width |
| GtkExpander::spacing |
| |
| if (GTK_WIDGET_VISIBLE (bin->child) && interior_focus) |
| |
| +-------------------------------------+ |
| | A | |
| | +---------+-----------------------+ | |
| | | C |##########E############| | |
| | | +-----+ |#+-------------------+#| | |
| | | | | |#| F |#| | |
| | | | | |#| +---------------+ |#| | |
| |A|C| BxB |C|E|F| label_widget |F|E|A| |
| | | | | |#| +---------------+ |#| | |
| | | | | |#| F |#| | |
| | | +-----+ |#+-------------------+#| | |
| | | C |##########E############| | |
| | +---------+-----------------------+ | |
| | | D | | |
| | +---------------------------------+ | |
| | | | | |
| | | | | |
| | | | | |
| |A| bin->child |A| |
| | | | | |
| | | | | |
| | | | | |
| | +---------------------------------+ | |
| | A | |
| +-------------------------------------+ |
| |
| A: GtkContainer::border_width |
| B: GtkExpander::expander_size |
| C: GtkExpander::expander_spacing |
| D: GtkExpander::spacing |
| E: GtkWidget::focus_line_width |
| F: GtkWidget::focus_padding |
| |
| if (GTK_WIDGET_VISIBLE (bin->child) && !interior_focus) |
| |
| +-------------------------------------------+ |
| | A | |
| | +---------------------------------------+ | |
| | |##################E####################| | |
| | |#+-----------------------------------+#| | |
| | |#| F |#| | |
| | |#| +---------+---------------------+ |#| | |
| | |#| | C | | |#| | |
| | |#| | +-----+ | | |#| | |
| |A|E|F|C| BxB |C| label_widget |F|E|A| |
| | |#| | +-----+ | | |#| | |
| | |#| | C | | |#| | |
| | |#| +---------+---------------------+ |#| | |
| | |#| F |#| | |
| | |#+-----------------------------------+#| | |
| | |##################E####################| | |
| | +---------------------------------------+ | |
| | | D | | |
| | +---------------------------------------+ | |
| | | | | |
| | | | | |
| | | | | |
| |A| bin->child |A| |
| | | | | |
| | | | | |
| | | | | |
| | +---------------------------------------+ | |
| | A | |
| +-------------------------------------------+ |
| |
| A: GtkContainer::border_width |
| B: GtkExpander::expander_size |
| C: GtkExpander::expander_spacing |
| D: GtkExpander::spacing |
| E: GtkWidget::focus_line_width |
| F: GtkWidget::focus_padding |
| |
| if (!GTK_WIDGET_VISIBLE (bin->child) && interior_focus) |
| |
| +-------------------------------------+ |
| | A | |
| | +---------+-----------------------+ | |
| | | C |##########E############| | |
| | | +-----+ |#+-------------------+#| | |
| | | | | |#| F |#| | |
| | | | | |#| +---------------+ |#| | |
| |A|C| BxB |C|E|F| label_widget |F|E|A| |
| | | | | |#| +---------------+ |#| | |
| | | | | |#| F |#| | |
| | | +-----+ |#+-------------------+#| | |
| | | C |##########E############| | |
| | +---------+-----------------------+ | |
| | A | |
| +-------------------------------------+ |
| |
| A: GtkContainer::border_width |
| B: GtkExpander::expander_size |
| C: GtkExpander::expander_spacing |
| E: GtkWidget::focus_line_width |
| F: GtkWidget::focus_padding |
| |
| if (!GTK_WIDGET_VISIBLE (bin->child) && !interior_focus) |
| |
| +-------------------------------------------+ |
| | A | |
| | +---------------------------------------+ | |
| | |##################E####################| | |
| | |#+-----------------------------------+#| | |
| | |#| F |#| | |
| | |#| +---------+---------------------+ |#| | |
| | |#| | C | | |#| | |
| | |#| | +-----+ | | |#| | |
| |A|E|F|C| BxB |C| label_widget |F|E|A| |
| | |#| | +-----+ | | |#| | |
| | |#| | C | | |#| | |
| | |#| +---------+---------------------+ |#| | |
| | |#| F |#| | |
| | |#+-----------------------------------+#| | |
| | |##################E####################| | |
| | +---------------------------------------+ | |
| | A | |
| +-------------------------------------------+ |
| |
| A: GtkContainer::border_width |
| B: GtkExpander::expander_size |
| C: GtkExpander::expander_spacing |
| E: GtkWidget::focus_line_width |
| F: GtkWidget::focus_padding |