Added increment_pressed and decrement_pressed icons to scrollbars

(cherry picked from commit e27ab2708f)
This commit is contained in:
skysphr 2021-08-17 22:06:19 +03:00 committed by Rémi Verschelde
parent 8a6bc045ea
commit f53294f874
No known key found for this signature in database
GPG key ID: C3336907360768E1
6 changed files with 47 additions and 2 deletions

View file

@ -19,6 +19,9 @@
<theme_item name="decrement_highlight" data_type="icon" type="Texture"> <theme_item name="decrement_highlight" data_type="icon" type="Texture">
Displayed when the mouse cursor hovers over the decrement button. Displayed when the mouse cursor hovers over the decrement button.
</theme_item> </theme_item>
<theme_item name="decrement_pressed" data_type="icon" type="Texture">
Displayed when the decrement button is being pressed.
</theme_item>
<theme_item name="grabber" data_type="style" type="StyleBox"> <theme_item name="grabber" data_type="style" type="StyleBox">
Used as texture for the grabber, the draggable element representing current scroll. Used as texture for the grabber, the draggable element representing current scroll.
</theme_item> </theme_item>
@ -34,6 +37,9 @@
<theme_item name="increment_highlight" data_type="icon" type="Texture"> <theme_item name="increment_highlight" data_type="icon" type="Texture">
Displayed when the mouse cursor hovers over the increment button. Displayed when the mouse cursor hovers over the increment button.
</theme_item> </theme_item>
<theme_item name="increment_pressed" data_type="icon" type="Texture">
Displayed when the increment button is being pressed.
</theme_item>
<theme_item name="scroll" data_type="style" type="StyleBox"> <theme_item name="scroll" data_type="style" type="StyleBox">
Used as background of this [ScrollBar]. Used as background of this [ScrollBar].
</theme_item> </theme_item>

View file

@ -23,6 +23,9 @@
<theme_item name="decrement_highlight" data_type="icon" type="Texture"> <theme_item name="decrement_highlight" data_type="icon" type="Texture">
Displayed when the mouse cursor hovers over the decrement button. Displayed when the mouse cursor hovers over the decrement button.
</theme_item> </theme_item>
<theme_item name="decrement_pressed" data_type="icon" type="Texture">
Displayed when the decrement button is being pressed.
</theme_item>
<theme_item name="grabber" data_type="style" type="StyleBox"> <theme_item name="grabber" data_type="style" type="StyleBox">
Used as texture for the grabber, the draggable element representing current scroll. Used as texture for the grabber, the draggable element representing current scroll.
</theme_item> </theme_item>
@ -38,6 +41,9 @@
<theme_item name="increment_highlight" data_type="icon" type="Texture"> <theme_item name="increment_highlight" data_type="icon" type="Texture">
Displayed when the mouse cursor hovers over the increment button. Displayed when the mouse cursor hovers over the increment button.
</theme_item> </theme_item>
<theme_item name="increment_pressed" data_type="icon" type="Texture">
Displayed when the increment button is being pressed.
</theme_item>
<theme_item name="scroll" data_type="style" type="StyleBox"> <theme_item name="scroll" data_type="style" type="StyleBox">
Used as background of this [ScrollBar]. Used as background of this [ScrollBar].
</theme_item> </theme_item>

View file

@ -1037,8 +1037,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_icon("increment", "HScrollBar", empty_icon); theme->set_icon("increment", "HScrollBar", empty_icon);
theme->set_icon("increment_highlight", "HScrollBar", empty_icon); theme->set_icon("increment_highlight", "HScrollBar", empty_icon);
theme->set_icon("increment_pressed", "HScrollBar", empty_icon);
theme->set_icon("decrement", "HScrollBar", empty_icon); theme->set_icon("decrement", "HScrollBar", empty_icon);
theme->set_icon("decrement_highlight", "HScrollBar", empty_icon); theme->set_icon("decrement_highlight", "HScrollBar", empty_icon);
theme->set_icon("decrement_pressed", "HScrollBar", empty_icon);
// VScrollBar // VScrollBar
theme->set_stylebox("scroll", "VScrollBar", make_stylebox(theme->get_icon("GuiScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0)); theme->set_stylebox("scroll", "VScrollBar", make_stylebox(theme->get_icon("GuiScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0));
@ -1049,8 +1051,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_icon("increment", "VScrollBar", empty_icon); theme->set_icon("increment", "VScrollBar", empty_icon);
theme->set_icon("increment_highlight", "VScrollBar", empty_icon); theme->set_icon("increment_highlight", "VScrollBar", empty_icon);
theme->set_icon("increment_pressed", "VScrollBar", empty_icon);
theme->set_icon("decrement", "VScrollBar", empty_icon); theme->set_icon("decrement", "VScrollBar", empty_icon);
theme->set_icon("decrement_highlight", "VScrollBar", empty_icon); theme->set_icon("decrement_highlight", "VScrollBar", empty_icon);
theme->set_icon("decrement_pressed", "VScrollBar", empty_icon);
// HSlider // HSlider
theme->set_icon("grabber_highlight", "HSlider", theme->get_icon("GuiSliderGrabberHl", "EditorIcons")); theme->set_icon("grabber_highlight", "HSlider", theme->get_icon("GuiSliderGrabberHl", "EditorIcons"));

View file

@ -79,12 +79,16 @@ void ScrollBar::_gui_input(Ref<InputEvent> p_event) {
double total = orientation == VERTICAL ? get_size().height : get_size().width; double total = orientation == VERTICAL ? get_size().height : get_size().width;
if (ofs < decr_size) { if (ofs < decr_size) {
decr_active = true;
set_value(get_value() - (custom_step >= 0 ? custom_step : get_step())); set_value(get_value() - (custom_step >= 0 ? custom_step : get_step()));
update();
return; return;
} }
if (ofs > total - incr_size) { if (ofs > total - incr_size) {
incr_active = true;
set_value(get_value() + (custom_step >= 0 ? custom_step : get_step())); set_value(get_value() + (custom_step >= 0 ? custom_step : get_step()));
update();
return; return;
} }
@ -129,6 +133,8 @@ void ScrollBar::_gui_input(Ref<InputEvent> p_event) {
} }
} else { } else {
incr_active = false;
decr_active = false;
drag.active = false; drag.active = false;
update(); update();
} }
@ -214,8 +220,24 @@ void ScrollBar::_notification(int p_what) {
if (p_what == NOTIFICATION_DRAW) { if (p_what == NOTIFICATION_DRAW) {
RID ci = get_canvas_item(); RID ci = get_canvas_item();
Ref<Texture> decr = highlight == HIGHLIGHT_DECR ? get_icon("decrement_highlight") : get_icon("decrement"); Ref<Texture> decr, incr;
Ref<Texture> incr = highlight == HIGHLIGHT_INCR ? get_icon("increment_highlight") : get_icon("increment");
if (decr_active) {
decr = get_icon("decrement_pressed");
} else if (highlight == HIGHLIGHT_DECR) {
decr = get_icon("decrement_highlight");
} else {
decr = get_icon("decrement");
}
if (incr_active) {
incr = get_icon("increment_pressed");
} else if (highlight == HIGHLIGHT_INCR) {
incr = get_icon("increment_highlight");
} else {
incr = get_icon("increment");
}
Ref<StyleBox> bg = has_focus() ? get_stylebox("scroll_focus") : get_stylebox("scroll"); Ref<StyleBox> bg = has_focus() ? get_stylebox("scroll_focus") : get_stylebox("scroll");
Ref<StyleBox> grabber; Ref<StyleBox> grabber;

View file

@ -51,6 +51,9 @@ class ScrollBar : public Range {
HighlightStatus highlight; HighlightStatus highlight;
bool incr_active = false;
bool decr_active = false;
struct Drag { struct Drag {
bool active; bool active;
float pos_at_click; float pos_at_click;

View file

@ -502,8 +502,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_icon("increment", "HScrollBar", empty_icon); theme->set_icon("increment", "HScrollBar", empty_icon);
theme->set_icon("increment_highlight", "HScrollBar", empty_icon); theme->set_icon("increment_highlight", "HScrollBar", empty_icon);
theme->set_icon("increment_pressed", "HScrollBar", empty_icon);
theme->set_icon("decrement", "HScrollBar", empty_icon); theme->set_icon("decrement", "HScrollBar", empty_icon);
theme->set_icon("decrement_highlight", "HScrollBar", empty_icon); theme->set_icon("decrement_highlight", "HScrollBar", empty_icon);
theme->set_icon("decrement_pressed", "HScrollBar", empty_icon);
// VScrollBar // VScrollBar
@ -515,8 +517,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_icon("increment", "VScrollBar", empty_icon); theme->set_icon("increment", "VScrollBar", empty_icon);
theme->set_icon("increment_highlight", "VScrollBar", empty_icon); theme->set_icon("increment_highlight", "VScrollBar", empty_icon);
theme->set_icon("increment_pressed", "VScrollBar", empty_icon);
theme->set_icon("decrement", "VScrollBar", empty_icon); theme->set_icon("decrement", "VScrollBar", empty_icon);
theme->set_icon("decrement_highlight", "VScrollBar", empty_icon); theme->set_icon("decrement_highlight", "VScrollBar", empty_icon);
theme->set_icon("decrement_pressed", "VScrollBar", empty_icon);
// HSlider // HSlider