diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml index 25c71deb1fb..bee0cbcf4a5 100644 --- a/doc/classes/Button.xml +++ b/doc/classes/Button.xml @@ -131,20 +131,40 @@ Font size of the [Button]'s text. + + [StyleBox] used when the [Button] is disabled. + + [StyleBox] used when the [Button] is disabled (for right-to-left layouts). + [StyleBox] used when the [Button] is focused. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. [StyleBox] used when the [Button] is being hovered. + + [StyleBox] used when the [Button] is being hovered (for right-to-left layouts). + + + [StyleBox] used when the [Button] is being pressed and hovered at the same time. + + + [StyleBox] used when the [Button] is being pressed and hovered at the same time (for right-to-left layouts). + Default [StyleBox] for the [Button]. + + Default [StyleBox] for the [Button] (for right-to-left layouts). + [StyleBox] used when the [Button] is being pressed. + + [StyleBox] used when the [Button] is being pressed (for right-to-left layouts). + diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml index fb733a95b8c..5b2c93f7b33 100644 --- a/doc/classes/CheckBox.xml +++ b/doc/classes/CheckBox.xml @@ -15,43 +15,9 @@ - - The [CheckBox] text's font color. - - - The [CheckBox] text's font color when it's disabled. - - - The [CheckBox] text's font color when it's focused. Only replaces the normal text color of the checkbox. Disabled, hovered, and pressed states take precedence over this color. - - - The [CheckBox] text's font color when it's hovered. - - - The [CheckBox] text's font color when it's hovered and pressed. - - - The tint of text outline of the [CheckBox]. - - - The [CheckBox] text's font color when it's pressed. - The vertical offset used when rendering the check icons (in pixels). - - The separation between the check icon and the text (in pixels). Negative values will be treated as [code]0[/code] when used. - - - The size of the text outline. - [b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended. - - - The [Font] to use for the [CheckBox] text. - - - Font size of the [CheckBox]'s text. - The check icon to display when the [CheckBox] is checked. @@ -76,23 +42,5 @@ The check icon to display when the [CheckBox] is unchecked and is disabled. - - The [StyleBox] to display as a background when the [CheckBox] is disabled. - - - The [StyleBox] to display as a background when the [CheckBox] is focused. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. - - - The [StyleBox] to display as a background when the [CheckBox] is hovered. - - - The [StyleBox] to display as a background when the [CheckBox] is hovered and pressed. - - - The [StyleBox] to display as a background. - - - The [StyleBox] to display as a background when the [CheckBox] is pressed. - diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml index 0fffe7f621c..c2da6cfe3e3 100644 --- a/doc/classes/CheckButton.xml +++ b/doc/classes/CheckButton.xml @@ -14,43 +14,9 @@ - - The [CheckButton] text's font color. - - - The [CheckButton] text's font color when it's disabled. - - - The [CheckButton] text's font color when it's focused. Only replaces the normal text color of the button. Disabled, hovered, and pressed states take precedence over this color. - - - The [CheckButton] text's font color when it's hovered. - - - The [CheckButton] text's font color when it's hovered and pressed. - - - The tint of text outline of the [CheckButton]. - - - The [CheckButton] text's font color when it's pressed. - The vertical offset used when rendering the toggle icons (in pixels). - - The separation between the toggle icon and the text (in pixels). Negative values will be treated as [code]0[/code] when used. - - - The size of the text outline. - [b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended. - - - The [Font] to use for the [CheckButton] text. - - - Font size of the [CheckButton]'s text. - The icon to display when the [CheckButton] is checked (for left-to-right layouts). @@ -75,23 +41,5 @@ The icon to display when the [CheckButton] is unchecked (for right-to-left layouts). - - The [StyleBox] to display as a background when the [CheckButton] is disabled. - - - The [StyleBox] to display as a background when the [CheckButton] is focused. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. - - - The [StyleBox] to display as a background when the [CheckButton] is hovered. - - - The [StyleBox] to display as a background when the [CheckButton] is hovered and pressed. - - - The [StyleBox] to display as a background. - - - The [StyleBox] to display as a background when the [CheckButton] is pressed. - diff --git a/doc/classes/CodeEdit.xml b/doc/classes/CodeEdit.xml index 9b4b3aa36e6..e5c255706fe 100644 --- a/doc/classes/CodeEdit.xml +++ b/doc/classes/CodeEdit.xml @@ -633,9 +633,6 @@ - - Sets the background [Color]. - [Color] of the bookmark icon for bookmarked lines. @@ -645,12 +642,6 @@ [Color] of the breakpoint icon for bookmarked lines. - - [Color] of the text behind the caret when block caret is enabled. - - - [Color] of the caret. - [Color] for all icons related to line folding. @@ -660,9 +651,6 @@ Background highlight [Color] for matching text in code completion options. - - Font [Color] for the code completion popup. - [Color] of the scrollbar in the code completion popup. @@ -672,48 +660,18 @@ Background highlight [Color] for the current selected option item in the code completion popup. - - Background [Color] of the line containing the caret. - [Color] of the executing icon for executing lines. [Color] of background line highlight for folded code region. - - Sets the font [Color]. - - - The tint of text outline of the [CodeEdit]. - - - Font color for [member TextEdit.placeholder_text]. - - - Sets the font [Color] when [member TextEdit.editable] is disabled. - - - Sets the [Color] of the selected text. If equal to [code]Color(0, 0, 0, 0)[/code], it will be ignored. - [Color] of the main line length guideline, secondary guidelines will have 50% alpha applied. Sets the [Color] of line numbers. - - [Color] of the border around text that matches the search query. - - - [Color] behind the text that matches the search query. - - - Sets the highlight [Color] of text selections. - - - Sets the highlight [Color] of multiple occurrences. [member TextEdit.highlight_all_occurrences] has to be enabled. - Max number of options to display in the code completion popup at any one time. @@ -723,19 +681,6 @@ Width of the scrollbar in the code completion popup. - - Sets the spacing between the lines. - - - The size of the text outline. - [b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended. - - - Sets the default [Font]. - - - Sets default font size. - Sets a custom [Texture2D] to draw in the bookmark gutter for bookmarked lines. @@ -760,23 +705,8 @@ Sets a custom [Texture2D] to draw at the end of a folded line. - - Sets a custom [Texture2D] for space text characters. - - - Sets a custom [Texture2D] for tab text characters. - [StyleBox] for the code completion popup. - - Sets the [StyleBox] when in focus. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. - - - Sets the [StyleBox]. - - - Sets the [StyleBox] when [member TextEdit.editable] is disabled. - diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml index 2f01e791a24..dfa8d7d8408 100644 --- a/doc/classes/ColorPicker.xml +++ b/doc/classes/ColorPicker.xml @@ -142,7 +142,7 @@ - Overrides the [theme_item HSlider.center_grabber] theme property of the sliders. + Overrides the [theme_item Slider.center_grabber] theme property of the sliders. The width of the hue selection slider. diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml index f6af188998c..89cb01407da 100644 --- a/doc/classes/ColorPickerButton.xml +++ b/doc/classes/ColorPickerButton.xml @@ -56,54 +56,8 @@ - - Default text [Color] of the [ColorPickerButton]. - - - Text [Color] used when the [ColorPickerButton] is disabled. - - - Text [Color] used when the [ColorPickerButton] is focused. Only replaces the normal text color of the button. Disabled, hovered, and pressed states take precedence over this color. - - - Text [Color] used when the [ColorPickerButton] is being hovered. - - - The tint of text outline of the [ColorPickerButton]. - - - Text [Color] used when the [ColorPickerButton] is being pressed. - - - The horizontal space between [ColorPickerButton]'s icon and text. - - - The size of the text outline. - [b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended. - - - [Font] of the [ColorPickerButton]'s text. - - - Font size of the [ColorPickerButton]'s text. - The background of the color preview rect on the button. - - [StyleBox] used when the [ColorPickerButton] is disabled. - - - [StyleBox] used when the [ColorPickerButton] is focused. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. - - - [StyleBox] used when the [ColorPickerButton] is being hovered. - - - Default [StyleBox] for the [ColorPickerButton]. - - - [StyleBox] used when the [ColorPickerButton] is being pressed. - diff --git a/doc/classes/GraphElement.xml b/doc/classes/GraphElement.xml index 6c3b6b727a9..589b553cb67 100644 --- a/doc/classes/GraphElement.xml +++ b/doc/classes/GraphElement.xml @@ -66,4 +66,9 @@ + + + The icon used for the resizer, visible when [member resizable] is enabled. + + diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml index 5d52ea17e24..9e1392567a2 100644 --- a/doc/classes/GraphNode.xml +++ b/doc/classes/GraphNode.xml @@ -263,9 +263,6 @@ The icon used for representing ports. - - The icon used for the resizer, visible when [member GraphElement.resizable] is enabled. - The default background for the slot area of the [GraphNode]. diff --git a/doc/classes/HBoxContainer.xml b/doc/classes/HBoxContainer.xml index 331c1d23add..f531f3f9107 100644 --- a/doc/classes/HBoxContainer.xml +++ b/doc/classes/HBoxContainer.xml @@ -9,9 +9,4 @@ $DOCS_URL/tutorials/ui/gui_containers.html - - - The horizontal space between the [HBoxContainer]'s elements. - - diff --git a/doc/classes/HFlowContainer.xml b/doc/classes/HFlowContainer.xml index 44d1af37cff..36a87376cad 100644 --- a/doc/classes/HFlowContainer.xml +++ b/doc/classes/HFlowContainer.xml @@ -9,12 +9,4 @@ $DOCS_URL/tutorials/ui/gui_containers.html - - - The horizontal separation of children nodes. - - - The vertical separation of children nodes. - - diff --git a/doc/classes/HScrollBar.xml b/doc/classes/HScrollBar.xml index 307d244a406..84ed0c69ada 100644 --- a/doc/classes/HScrollBar.xml +++ b/doc/classes/HScrollBar.xml @@ -8,39 +8,4 @@ - - - Icon used as a button to scroll the [ScrollBar] left. Supports custom step using the [member ScrollBar.custom_step] property. - - - Displayed when the mouse cursor hovers over the decrement button. - - - Displayed when the decrement button is being pressed. - - - Icon used as a button to scroll the [ScrollBar] right. Supports custom step using the [member ScrollBar.custom_step] property. - - - Displayed when the mouse cursor hovers over the increment button. - - - Displayed when the increment button is being pressed. - - - Used as texture for the grabber, the draggable element representing current scroll. - - - Used when the mouse hovers over the grabber. - - - Used when the grabber is being dragged. - - - Used as background of this [ScrollBar]. - - - Used as background when the [ScrollBar] has the GUI focus. - - diff --git a/doc/classes/HSeparator.xml b/doc/classes/HSeparator.xml index c749eaa10eb..ffba571f904 100644 --- a/doc/classes/HSeparator.xml +++ b/doc/classes/HSeparator.xml @@ -8,12 +8,4 @@ - - - The height of the area covered by the separator. Effectively works like a minimum height. - - - The style for the separator line. Works best with [StyleBoxLine]. - - diff --git a/doc/classes/HSlider.xml b/doc/classes/HSlider.xml index 352ab3773e6..40ec408f9ba 100644 --- a/doc/classes/HSlider.xml +++ b/doc/classes/HSlider.xml @@ -8,33 +8,4 @@ - - - Boolean constant. If [code]1[/code], the grabber texture size will be ignored and it will fit within slider's bounds based only on its center position. - - - Vertical offset of the grabber. - - - The texture for the grabber (the draggable element). - - - The texture for the grabber when it's disabled. - - - The texture for the grabber when it's focused. - - - The texture for the ticks, visible when [member Slider.tick_count] is greater than 0. - - - The background of the area to the left of the grabber. - - - The background of the area to the left of the grabber that displays when it's being hovered or focused. - - - The background for the whole slider. Determines the height of the [code]grabber_area[/code]. - - diff --git a/doc/classes/HSplitContainer.xml b/doc/classes/HSplitContainer.xml index 7cc6d94af33..1d8dbcb17cf 100644 --- a/doc/classes/HSplitContainer.xml +++ b/doc/classes/HSplitContainer.xml @@ -9,18 +9,4 @@ $DOCS_URL/tutorials/ui/gui_containers.html - - - Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically when it isn't under the cursor. If 0 ([code]false[/code]), it's always visible. - - - The minimum thickness of the area users can click on to grab the splitting line. If [theme_item separation] or [theme_item grabber]'s thickness are too small, this ensure that the splitting line can still be dragged. - - - The space between sides of the container. - - - The icon used for the grabber drawn in the middle area. - - diff --git a/doc/classes/LinkButton.xml b/doc/classes/LinkButton.xml index 010760cae0c..4f38b4d3364 100644 --- a/doc/classes/LinkButton.xml +++ b/doc/classes/LinkButton.xml @@ -62,12 +62,18 @@ Default text [Color] of the [LinkButton]. + + Text [Color] used when the [LinkButton] is disabled. + Text [Color] used when the [LinkButton] is focused. Only replaces the normal text color of the button. Disabled, hovered, and pressed states take precedence over this color. Text [Color] used when the [LinkButton] is being hovered. + + Text [Color] used when the [LinkButton] is being hovered and pressed. + The tint of text outline of the [LinkButton]. diff --git a/doc/classes/MenuBar.xml b/doc/classes/MenuBar.xml index 7d1b73278ef..07f64d0572f 100644 --- a/doc/classes/MenuBar.xml +++ b/doc/classes/MenuBar.xml @@ -154,17 +154,32 @@ [StyleBox] used when the menu item is disabled. - - [StyleBox] used when the menu item is focused. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. + + [StyleBox] used when the menu item is disabled (for right-to-left layouts). [StyleBox] used when the menu item is being hovered. + + [StyleBox] used when the menu item is being hovered (for right-to-left layouts). + + + [StyleBox] used when the menu item is being pressed and hovered at the same time. + + + [StyleBox] used when the menu item is being pressed and hovered at the same time (for right-to-left layouts). + Default [StyleBox] for the menu item. + + Default [StyleBox] for the menu item (for right-to-left layouts). + [StyleBox] used when the menu item is being pressed. + + [StyleBox] used when the menu item is being pressed (for right-to-left layouts). + diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml index e3a707ba729..6aa17c1e164 100644 --- a/doc/classes/MenuButton.xml +++ b/doc/classes/MenuButton.xml @@ -50,52 +50,4 @@ - - - Default text [Color] of the [MenuButton]. - - - Text [Color] used when the [MenuButton] is disabled. - - - Text [Color] used when the [MenuButton] is focused. Only replaces the normal text color of the button. Disabled, hovered, and pressed states take precedence over this color. - - - Text [Color] used when the [MenuButton] is being hovered. - - - The tint of text outline of the [MenuButton]. - - - Text [Color] used when the [MenuButton] is being pressed. - - - The horizontal space between [MenuButton]'s icon and text. Negative values will be treated as [code]0[/code] when used. - - - The size of the text outline. - [b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended. - - - [Font] of the [MenuButton]'s text. - - - Font size of the [MenuButton]'s text. - - - [StyleBox] used when the [MenuButton] is disabled. - - - [StyleBox] used when the [MenuButton] is focused. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. - - - [StyleBox] used when the [MenuButton] is being hovered. - - - Default [StyleBox] for the [MenuButton]. - - - [StyleBox] used when the [MenuButton] is being pressed. - - diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml index 47a68802aa8..4e223c12fab 100644 --- a/doc/classes/OptionButton.xml +++ b/doc/classes/OptionButton.xml @@ -243,75 +243,14 @@ - - Default text [Color] of the [OptionButton]. - - - Text [Color] used when the [OptionButton] is disabled. - - - Text [Color] used when the [OptionButton] is focused. Only replaces the normal text color of the button. Disabled, hovered, and pressed states take precedence over this color. - - - Text [Color] used when the [OptionButton] is being hovered. - - - Text [Color] used when the [OptionButton] is being hovered and pressed. - - - The tint of text outline of the [OptionButton]. - - - Text [Color] used when the [OptionButton] is being pressed. - The horizontal space between the arrow icon and the right edge of the button. - - The horizontal space between [OptionButton]'s icon and text. Negative values will be treated as [code]0[/code] when used. - If different than [code]0[/code], the arrow icon will be modulated to the font color. - - The size of the text outline. - [b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended. - - - [Font] of the [OptionButton]'s text. - - - Font size of the [OptionButton]'s text. - The arrow icon to be drawn on the right end of the button. - - [StyleBox] used when the [OptionButton] is disabled (for left-to-right layouts). - - - [StyleBox] used when the [OptionButton] is disabled (for right-to-left layouts). - - - [StyleBox] used when the [OptionButton] is focused. The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially transparent [StyleBox] should be used to ensure the base [StyleBox] remains visible. A [StyleBox] that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. - - - [StyleBox] used when the [OptionButton] is being hovered (for left-to-right layouts). - - - [StyleBox] used when the [OptionButton] is being hovered (for right-to-left layouts). - - - Default [StyleBox] for the [OptionButton] (for left-to-right layouts). - - - Default [StyleBox] for the [OptionButton] (for right-to-left layouts). - - - [StyleBox] used when the [OptionButton] is being pressed (for left-to-right layouts). - - - [StyleBox] used when the [OptionButton] is being pressed (for right-to-left layouts). - diff --git a/doc/classes/Popup.xml b/doc/classes/Popup.xml index 29b44a98f21..c435f3d291a 100644 --- a/doc/classes/Popup.xml +++ b/doc/classes/Popup.xml @@ -23,4 +23,9 @@ + + + Default [StyleBox] for the [Popup]. + + diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml index d1c1304509d..6293fcb309a 100644 --- a/doc/classes/PopupMenu.xml +++ b/doc/classes/PopupMenu.xml @@ -691,12 +691,6 @@ [StyleBox] for the right side of labeled separator. See [method add_separator]. - - Default [StyleBox] of the [PopupMenu] items. - - - [StyleBox] used when the [PopupMenu] item is disabled. - [StyleBox] used for the separators. See [method add_separator]. diff --git a/doc/classes/PopupPanel.xml b/doc/classes/PopupPanel.xml index ad981116de7..b86972e8af2 100644 --- a/doc/classes/PopupPanel.xml +++ b/doc/classes/PopupPanel.xml @@ -8,9 +8,4 @@ - - - The background panel style of this [PopupPanel]. - - diff --git a/doc/classes/ProgressBar.xml b/doc/classes/ProgressBar.xml index 595749f4b6d..1102f0369ac 100644 --- a/doc/classes/ProgressBar.xml +++ b/doc/classes/ProgressBar.xml @@ -37,9 +37,6 @@ The tint of text outline of the [ProgressBar]. - - The color of the text's shadow. - The size of the text outline. [b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended. diff --git a/doc/classes/ScrollBar.xml b/doc/classes/ScrollBar.xml index 0cbb60198b7..e8d2753a9a2 100644 --- a/doc/classes/ScrollBar.xml +++ b/doc/classes/ScrollBar.xml @@ -21,4 +21,41 @@ + + + Icon used as a button to scroll the [ScrollBar] left/up. Supports custom step using the [member ScrollBar.custom_step] property. + + + Displayed when the mouse cursor hovers over the decrement button. + + + Displayed when the decrement button is being pressed. + + + Icon used as a button to scroll the [ScrollBar] right/down. Supports custom step using the [member ScrollBar.custom_step] property. + + + Displayed when the mouse cursor hovers over the increment button. + + + Displayed when the increment button is being pressed. + + + Used as texture for the grabber, the draggable element representing current scroll. + + + Used when the mouse hovers over the grabber. + + + Used when the grabber is being dragged. + + + + + Used as background of this [ScrollBar]. + + + Used as background when the [ScrollBar] has the GUI focus. + + diff --git a/doc/classes/Separator.xml b/doc/classes/Separator.xml index fe6f6858b73..d0535d450ff 100644 --- a/doc/classes/Separator.xml +++ b/doc/classes/Separator.xml @@ -8,4 +8,12 @@ + + + The size of the area covered by the separator. Effectively works like a minimum width/height. + + + The style for the separator line. Works best with [StyleBoxLine] (remember to enable [member StyleBoxLine.vertical] for [VSeparator]). + + diff --git a/doc/classes/Slider.xml b/doc/classes/Slider.xml index b946b6cedb2..efb646b7ae0 100644 --- a/doc/classes/Slider.xml +++ b/doc/classes/Slider.xml @@ -37,4 +37,33 @@ + + + Boolean constant. If [code]1[/code], the grabber texture size will be ignored and it will fit within slider's bounds based only on its center position. + + + Vertical/horizontal offset of the grabber. + + + The texture for the grabber (the draggable element). + + + The texture for the grabber when it's disabled. + + + The texture for the grabber when it's focused. + + + The texture for the ticks, visible when [member Slider.tick_count] is greater than 0. + + + The background of the area to the left/bottom of the grabber. + + + The background of the area to the left/bottom of the grabber that displays when it's being hovered or focused. + + + The background for the whole slider. Determines the height/width of the [code]grabber_area[/code]. + + diff --git a/doc/classes/SplitContainer.xml b/doc/classes/SplitContainer.xml index 5078685cce5..454a542cc8d 100644 --- a/doc/classes/SplitContainer.xml +++ b/doc/classes/SplitContainer.xml @@ -61,6 +61,9 @@ The space between sides of the container. + + The icon used for the grabber drawn in the middle area. + The icon used for the grabber drawn in the middle area when [member vertical] is [code]false[/code]. diff --git a/doc/classes/VBoxContainer.xml b/doc/classes/VBoxContainer.xml index 38541859a6c..d3ea94c0eb4 100644 --- a/doc/classes/VBoxContainer.xml +++ b/doc/classes/VBoxContainer.xml @@ -10,9 +10,4 @@ $DOCS_URL/tutorials/ui/gui_containers.html https://godotengine.org/asset-library/asset/676 - - - The vertical space between the [VBoxContainer]'s elements. - - diff --git a/doc/classes/VFlowContainer.xml b/doc/classes/VFlowContainer.xml index dcec1a58d94..5c896da7294 100644 --- a/doc/classes/VFlowContainer.xml +++ b/doc/classes/VFlowContainer.xml @@ -9,12 +9,4 @@ $DOCS_URL/tutorials/ui/gui_containers.html - - - The horizontal separation of children nodes. - - - The vertical separation of children nodes. - - diff --git a/doc/classes/VScrollBar.xml b/doc/classes/VScrollBar.xml index 7cb1a3d16d0..d6a69a6bba2 100644 --- a/doc/classes/VScrollBar.xml +++ b/doc/classes/VScrollBar.xml @@ -12,39 +12,4 @@ - - - Icon used as a button to scroll the [ScrollBar] up. Supports custom step using the [member ScrollBar.custom_step] property. - - - Displayed when the mouse cursor hovers over the decrement button. - - - Displayed when the decrement button is being pressed. - - - Icon used as a button to scroll the [ScrollBar] down. Supports custom step using the [member ScrollBar.custom_step] property. - - - Displayed when the mouse cursor hovers over the increment button. - - - Displayed when the increment button is being pressed. - - - Used as texture for the grabber, the draggable element representing current scroll. - - - Used when the mouse hovers over the grabber. - - - Used when the grabber is being dragged. - - - Used as background of this [ScrollBar]. - - - Used as background when the [ScrollBar] has the GUI focus. - - diff --git a/doc/classes/VSeparator.xml b/doc/classes/VSeparator.xml index ffb4e76df89..57d1c9e704a 100644 --- a/doc/classes/VSeparator.xml +++ b/doc/classes/VSeparator.xml @@ -8,12 +8,4 @@ - - - The width of the area covered by the separator. Effectively works like a minimum width. - - - The style for the separator line. Works best with [StyleBoxLine] (remember to enable [member StyleBoxLine.vertical]). - - diff --git a/doc/classes/VSlider.xml b/doc/classes/VSlider.xml index 7475e5ff7e8..eea5ba50604 100644 --- a/doc/classes/VSlider.xml +++ b/doc/classes/VSlider.xml @@ -12,33 +12,4 @@ - - - Boolean constant. If [code]1[/code], the grabber texture size will be ignored and it will fit within slider's bounds based only on its center position. - - - Horizontal offset of the grabber. - - - The texture for the grabber (the draggable element). - - - The texture for the grabber when it's disabled. - - - The texture for the grabber when it's focused. - - - The texture for the ticks, visible when [member Slider.tick_count] is greater than 0. - - - The background of the area below the grabber. - - - The background of the area below the grabber that displays when it's being hovered or focused. - - - The background for the whole slider. Determines the width of the [code]grabber_area[/code]. - - diff --git a/doc/classes/VSplitContainer.xml b/doc/classes/VSplitContainer.xml index 1e363d987c5..5932ca73694 100644 --- a/doc/classes/VSplitContainer.xml +++ b/doc/classes/VSplitContainer.xml @@ -9,18 +9,4 @@ $DOCS_URL/tutorials/ui/gui_containers.html - - - Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically when it isn't under the cursor. If 0 ([code]false[/code]), it's always visible. - - - The minimum thickness of the area users can click on to grab the splitting line. If [theme_item separation] or [theme_item grabber]'s thickness are too small, this ensure that the splitting line can still be dragged. - - - The space between sides of the container. - - - The icon used for the grabber drawn in the middle area. - - diff --git a/editor/doc_tools.cpp b/editor/doc_tools.cpp index e0b344fc193..ef3981fd3f6 100644 --- a/editor/doc_tools.cpp +++ b/editor/doc_tools.cpp @@ -624,66 +624,47 @@ void DocTools::generate(bool p_basic_types) { // Theme items. { - List l; + List theme_items; + ThemeDB::get_singleton()->get_class_own_items(cname, &theme_items); + Ref default_theme = ThemeDB::get_singleton()->get_default_theme(); - ThemeDB::get_singleton()->get_default_theme()->get_color_list(cname, &l); - for (const StringName &E : l) { + for (const ThemeDB::ThemeItemBind &theme_item : theme_items) { DocData::ThemeItemDoc tid; - tid.name = E; - tid.type = "Color"; - tid.data_type = "color"; - tid.default_value = DocData::get_default_value_string(ThemeDB::get_singleton()->get_default_theme()->get_color(E, cname)); - c.theme_properties.push_back(tid); - } + tid.name = theme_item.item_name; - l.clear(); - ThemeDB::get_singleton()->get_default_theme()->get_constant_list(cname, &l); - for (const StringName &E : l) { - DocData::ThemeItemDoc tid; - tid.name = E; - tid.type = "int"; - tid.data_type = "constant"; - tid.default_value = itos(ThemeDB::get_singleton()->get_default_theme()->get_constant(E, cname)); - c.theme_properties.push_back(tid); - } + switch (theme_item.data_type) { + case Theme::DATA_TYPE_COLOR: + tid.type = "Color"; + tid.data_type = "color"; + break; + case Theme::DATA_TYPE_CONSTANT: + tid.type = "int"; + tid.data_type = "constant"; + break; + case Theme::DATA_TYPE_FONT: + tid.type = "Font"; + tid.data_type = "font"; + break; + case Theme::DATA_TYPE_FONT_SIZE: + tid.type = "int"; + tid.data_type = "font_size"; + break; + case Theme::DATA_TYPE_ICON: + tid.type = "Texture2D"; + tid.data_type = "icon"; + break; + case Theme::DATA_TYPE_STYLEBOX: + tid.type = "StyleBox"; + tid.data_type = "style"; + break; + case Theme::DATA_TYPE_MAX: + break; // Can't happen, but silences warning. + } - l.clear(); - ThemeDB::get_singleton()->get_default_theme()->get_font_list(cname, &l); - for (const StringName &E : l) { - DocData::ThemeItemDoc tid; - tid.name = E; - tid.type = "Font"; - tid.data_type = "font"; - c.theme_properties.push_back(tid); - } + if (theme_item.data_type == Theme::DATA_TYPE_COLOR || theme_item.data_type == Theme::DATA_TYPE_CONSTANT) { + tid.default_value = DocData::get_default_value_string(default_theme->get_theme_item(theme_item.data_type, theme_item.item_name, cname)); + } - l.clear(); - ThemeDB::get_singleton()->get_default_theme()->get_font_size_list(cname, &l); - for (const StringName &E : l) { - DocData::ThemeItemDoc tid; - tid.name = E; - tid.type = "int"; - tid.data_type = "font_size"; - c.theme_properties.push_back(tid); - } - - l.clear(); - ThemeDB::get_singleton()->get_default_theme()->get_icon_list(cname, &l); - for (const StringName &E : l) { - DocData::ThemeItemDoc tid; - tid.name = E; - tid.type = "Texture2D"; - tid.data_type = "icon"; - c.theme_properties.push_back(tid); - } - - l.clear(); - ThemeDB::get_singleton()->get_default_theme()->get_stylebox_list(cname, &l); - for (const StringName &E : l) { - DocData::ThemeItemDoc tid; - tid.name = E; - tid.type = "StyleBox"; - tid.data_type = "style"; c.theme_properties.push_back(tid); } diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 6897052ce31..01eef4be473 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -1129,7 +1129,6 @@ Ref create_editor_theme(const Ref p_theme) { theme->set_stylebox("normal", "MenuBar", style_widget); theme->set_stylebox("hover", "MenuBar", style_widget_hover); theme->set_stylebox("pressed", "MenuBar", style_widget_pressed); - theme->set_stylebox("focus", "MenuBar", style_widget_focus); theme->set_stylebox("disabled", "MenuBar", style_widget_disabled); theme->set_color("font_color", "MenuBar", font_color); @@ -2329,7 +2328,6 @@ Ref create_editor_theme(const Ref p_theme) { theme->set_color("completion_existing_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/completion_existing_color")); theme->set_color("completion_scroll_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/completion_scroll_color")); theme->set_color("completion_scroll_hovered_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/completion_scroll_hovered_color")); - theme->set_color("completion_font_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/completion_font_color")); theme->set_color("font_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/text_color")); theme->set_color("line_number_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/line_number_color")); theme->set_color("caret_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/caret_color")); diff --git a/scene/theme/default_theme.cpp b/scene/theme/default_theme.cpp index b65c372fab8..91d7e41cc96 100644 --- a/scene/theme/default_theme.cpp +++ b/scene/theme/default_theme.cpp @@ -191,7 +191,6 @@ void fill_default_theme(Ref &theme, const Ref &default_font, const theme->set_stylebox("hover", "MenuBar", button_hover); theme->set_stylebox("pressed", "MenuBar", button_pressed); theme->set_stylebox("disabled", "MenuBar", button_disabled); - theme->set_stylebox("focus", "MenuBar", focus); theme->set_font("font", "MenuBar", Ref()); theme->set_font_size("font_size", "MenuBar", -1); @@ -451,7 +450,6 @@ void fill_default_theme(Ref &theme, const Ref &default_font, const theme->set_font_size("font_size", "ProgressBar", -1); theme->set_color("font_color", "ProgressBar", control_font_hover_color); - theme->set_color("font_shadow_color", "ProgressBar", Color(0, 0, 0)); theme->set_color("font_outline_color", "ProgressBar", Color(1, 1, 1)); theme->set_constant("outline_size", "ProgressBar", 0); @@ -513,7 +511,6 @@ void fill_default_theme(Ref &theme, const Ref &default_font, const theme->set_color("completion_existing_color", "CodeEdit", Color(0.87, 0.87, 0.87, 0.13)); theme->set_color("completion_scroll_color", "CodeEdit", control_font_pressed_color * Color(1, 1, 1, 0.29)); theme->set_color("completion_scroll_hovered_color", "CodeEdit", control_font_pressed_color * Color(1, 1, 1, 0.4)); - theme->set_color("completion_font_color", "CodeEdit", Color(0.67, 0.67, 0.67)); theme->set_color("font_color", "CodeEdit", control_font_color); theme->set_color("font_selected_color", "CodeEdit", Color(0, 0, 0, 0)); theme->set_color("font_readonly_color", "CodeEdit", Color(control_font_color.r, control_font_color.g, control_font_color.b, 0.5f)); @@ -680,11 +677,8 @@ void fill_default_theme(Ref &theme, const Ref &default_font, const Ref style_popup_panel = make_flat_stylebox(style_popup_color); style_popup_panel->set_border_width_all(2); style_popup_panel->set_border_color(style_popup_border_color); - Ref style_popup_panel_disabled = style_popup_panel->duplicate(); - style_popup_panel_disabled->set_bg_color(style_disabled_color); theme->set_stylebox("panel", "PopupMenu", style_popup_panel); - theme->set_stylebox("panel_disabled", "PopupMenu", style_popup_panel_disabled); theme->set_stylebox("hover", "PopupMenu", make_flat_stylebox(style_popup_hover_color)); theme->set_stylebox("separator", "PopupMenu", separator_horizontal); theme->set_stylebox("labeled_separator_left", "PopupMenu", separator_horizontal); diff --git a/scene/theme/theme_db.cpp b/scene/theme/theme_db.cpp index c0e7636f5a7..8dc9d288e2c 100644 --- a/scene/theme/theme_db.cpp +++ b/scene/theme/theme_db.cpp @@ -38,7 +38,6 @@ #include "scene/resources/font.h" #include "scene/resources/style_box.h" #include "scene/resources/texture.h" -#include "scene/resources/theme.h" #include "scene/theme/default_theme.h" #include "servers/text_server.h" @@ -328,10 +327,11 @@ ThemeContext *ThemeDB::get_nearest_theme_context(Node *p_for_node) const { // Theme item binding. -void ThemeDB::bind_class_item(const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, ThemeItemSetter p_setter) { +void ThemeDB::bind_class_item(Theme::DataType p_data_type, const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, ThemeItemSetter p_setter) { ERR_FAIL_COND_MSG(theme_item_binds[p_class_name].has(p_prop_name), vformat("Failed to bind theme item '%s' in class '%s': already bound", p_prop_name, p_class_name)); ThemeItemBind bind; + bind.data_type = p_data_type; bind.class_name = p_class_name; bind.item_name = p_item_name; bind.setter = p_setter; @@ -339,10 +339,11 @@ void ThemeDB::bind_class_item(const StringName &p_class_name, const StringName & theme_item_binds[p_class_name][p_prop_name] = bind; } -void ThemeDB::bind_class_external_item(const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, const StringName &p_type_name, ThemeItemSetter p_setter) { +void ThemeDB::bind_class_external_item(Theme::DataType p_data_type, const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, const StringName &p_type_name, ThemeItemSetter p_setter) { ERR_FAIL_COND_MSG(theme_item_binds[p_class_name].has(p_prop_name), vformat("Failed to bind theme item '%s' in class '%s': already bound", p_prop_name, p_class_name)); ThemeItemBind bind; + bind.data_type = p_data_type; bind.class_name = p_class_name; bind.item_name = p_item_name; bind.type_name = p_type_name; @@ -370,6 +371,33 @@ void ThemeDB::update_class_instance_items(Node *p_instance) { } } +void ThemeDB::get_class_own_items(const StringName &p_class_name, List *r_list) { + List class_hierarchy; + StringName class_name = p_class_name; + while (class_name != StringName()) { + class_hierarchy.push_front(class_name); // Put parent classes in front. + class_name = ClassDB::get_parent_class_nocheck(class_name); + } + + HashSet inherited_props; + for (const StringName &theme_type : class_hierarchy) { + HashMap>::Iterator E = theme_item_binds.find(theme_type); + if (E) { + for (const KeyValue &F : E->value) { + if (inherited_props.has(F.value.item_name)) { + continue; // Skip inherited properties. + } + if (F.value.external || F.value.class_name != p_class_name) { + inherited_props.insert(F.value.item_name); + continue; // Track properties defined in parent classes, and skip them. + } + + r_list->push_back(F.value); + } + } + } +} + // Object methods. void ThemeDB::_bind_methods() { diff --git a/scene/theme/theme_db.h b/scene/theme/theme_db.h index 07325e2d051..e472f4e9356 100644 --- a/scene/theme/theme_db.h +++ b/scene/theme/theme_db.h @@ -33,6 +33,7 @@ #include "core/object/class_db.h" #include "core/object/ref_counted.h" +#include "scene/resources/theme.h" #include @@ -40,31 +41,30 @@ class Font; class Node; class StyleBox; class Texture2D; -class Theme; class ThemeContext; // Macros for binding theme items of this class. This information is used for the documentation, theme // overrides, etc. This is also the basis for theme cache. -#define BIND_THEME_ITEM(m_data_type, m_class, m_prop) \ - ThemeDB::get_singleton()->bind_class_item(get_class_static(), #m_prop, #m_prop, [](Node *p_instance) { \ - m_class *p_cast = Object::cast_to(p_instance); \ - p_cast->theme_cache.m_prop = p_cast->get_theme_item(m_data_type, _scs_create(#m_prop)); \ +#define BIND_THEME_ITEM(m_data_type, m_class, m_prop) \ + ThemeDB::get_singleton()->bind_class_item(m_data_type, get_class_static(), #m_prop, #m_prop, [](Node *p_instance) { \ + m_class *p_cast = Object::cast_to(p_instance); \ + p_cast->theme_cache.m_prop = p_cast->get_theme_item(m_data_type, _scs_create(#m_prop)); \ }) -#define BIND_THEME_ITEM_CUSTOM(m_data_type, m_class, m_prop, m_item_name) \ - ThemeDB::get_singleton()->bind_class_item(get_class_static(), #m_prop, m_item_name, [](Node *p_instance) { \ - m_class *p_cast = Object::cast_to(p_instance); \ - p_cast->theme_cache.m_prop = p_cast->get_theme_item(m_data_type, _scs_create(m_item_name)); \ +#define BIND_THEME_ITEM_CUSTOM(m_data_type, m_class, m_prop, m_item_name) \ + ThemeDB::get_singleton()->bind_class_item(m_data_type, get_class_static(), #m_prop, m_item_name, [](Node *p_instance) { \ + m_class *p_cast = Object::cast_to(p_instance); \ + p_cast->theme_cache.m_prop = p_cast->get_theme_item(m_data_type, _scs_create(m_item_name)); \ }) // Macro for binding theme items used by this class, but defined/binded by other classes. This is primarily used for // the theme cache. Can also be used to list such items in documentation. -#define BIND_THEME_ITEM_EXT(m_data_type, m_class, m_prop, m_item_name, m_type_name) \ - ThemeDB::get_singleton()->bind_class_external_item(get_class_static(), #m_prop, m_item_name, m_type_name, [](Node *p_instance) { \ - m_class *p_cast = Object::cast_to(p_instance); \ - p_cast->theme_cache.m_prop = p_cast->get_theme_item(m_data_type, _scs_create(m_item_name), _scs_create(m_type_name)); \ +#define BIND_THEME_ITEM_EXT(m_data_type, m_class, m_prop, m_item_name, m_type_name) \ + ThemeDB::get_singleton()->bind_class_external_item(m_data_type, get_class_static(), #m_prop, m_item_name, m_type_name, [](Node *p_instance) { \ + m_class *p_cast = Object::cast_to(p_instance); \ + p_cast->theme_cache.m_prop = p_cast->get_theme_item(m_data_type, _scs_create(m_item_name), _scs_create(m_type_name)); \ }) class ThemeDB : public Object { @@ -96,9 +96,11 @@ class ThemeDB : public Object { // Binding of theme items to Node classes. +public: typedef std::function ThemeItemSetter; struct ThemeItemBind { + Theme::DataType data_type; StringName class_name; StringName item_name; StringName type_name; @@ -107,6 +109,7 @@ class ThemeDB : public Object { ThemeItemSetter setter; }; +private: HashMap> theme_item_binds; protected: @@ -155,10 +158,12 @@ public: // Theme item binding. - void bind_class_item(const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, ThemeItemSetter p_setter); - void bind_class_external_item(const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, const StringName &p_type_name, ThemeItemSetter p_setter); + void bind_class_item(Theme::DataType p_data_type, const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, ThemeItemSetter p_setter); + void bind_class_external_item(Theme::DataType p_data_type, const StringName &p_class_name, const StringName &p_prop_name, const StringName &p_item_name, const StringName &p_type_name, ThemeItemSetter p_setter); void update_class_instance_items(Node *p_instance); + void get_class_own_items(const StringName &p_class_name, List *r_list); + // Memory management, reference, and initialization. static ThemeDB *get_singleton();