25#ifndef TGUI_SCROLLBAR_HPP
26#define TGUI_SCROLLBAR_HPP
28#include <TGUI/CopiedSharedPtr.hpp>
29#include <TGUI/Renderers/ScrollbarRenderer.hpp>
30#include <TGUI/Widget.hpp>
41 class TGUI_API Scrollbar :
public Widget
44 using Ptr = std::shared_ptr<Scrollbar>;
45 using ConstPtr = std::shared_ptr<const Scrollbar>;
64 explicit Scrollbar(
const char* typeName = StaticWidgetType,
bool initRenderer =
true);
187#ifndef TGUI_REMOVE_DEPRECATED_CODE
195 TGUI_DEPRECATED(
"Use setPolicy instead") void
setAutoHide(
bool autoHide);
203 TGUI_DEPRECATED(
"Use getPolicy instead") [[nodiscard]]
bool getAutoHide() const;
298 void leftMouseReleased(Vector2f pos) override;
303 void mouseMoved(Vector2f pos) override;
308 bool scrolled(
float delta, Vector2f pos,
bool touch) override;
313 void leftMouseButtonNoLongerDown() override;
352 [[nodiscard]] std::unique_ptr<DataIO::Node>
save(SavingRenderersMap& renderers) const override;
357 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
362 void updateThumbPosition();
375 void callMousePressPeriodically(std::chrono::time_point<std::chrono::steady_clock> clickedTime,
bool repeatedCall);
385 enum class Part : std::uint8_t
395 Part m_mouseHoverOverPart = Part::None;
398 bool m_mouseDownOnThumb =
false;
399 Vector2f m_mouseDownOnThumbPos;
401 unsigned int m_maximum = 10;
402 unsigned int m_value = 0;
405 unsigned int m_viewportSize = 1;
407 Orientation m_orientation = Orientation::Vertical;
408 Orientation m_imageOrientation = Orientation::Vertical;
409 bool m_orientationLocked =
false;
412 unsigned int m_scrollAmount = 1;
415 Scrollbar::Policy m_policy = Scrollbar::Policy::Automatic;
418 bool m_mouseDownOnIncreaseArrow =
false;
419 bool m_mouseDownOnDecreaseArrow =
false;
420 std::chrono::time_point<std::chrono::steady_clock> m_lastMousePressTime;
422 bool m_sizeSet =
false;
424 std::chrono::steady_clock::time_point m_lastSuccessfulScrollTime;
425 Vector2f m_lastSuccessfulScrollPos;
430 FloatRect m_arrowDown;
432 Sprite m_spriteTrack;
433 Sprite m_spriteTrackHover;
434 Sprite m_spriteThumb;
435 Sprite m_spriteThumbHover;
436 Sprite m_spriteArrowUp;
437 Sprite m_spriteArrowUpHover;
438 Sprite m_spriteArrowDown;
439 Sprite m_spriteArrowDownHover;
442 Color m_thumbColorCached;
443 Color m_thumbColorHoverCached;
444 Color m_trackColorCached;
445 Color m_trackColorHoverCached;
446 Color m_arrowColorCached;
447 Color m_arrowColorHoverCached;
448 Color m_arrowBackgroundColorCached;
449 Color m_arrowBackgroundColorHoverCached;
496 std::function<
void()> valueChangedCallback,
497 std::function<
void()> policyChangedCallback,
498 std::function<
void()> scrollAmountChangedCallback);
580 std::function<void()> m_valueChangedCallback;
581 std::function<void()> m_policyChangedCallback;
582 std::function<void()> m_scrollAmountChangedCallback;
Base class for render targets.
Definition BackendRenderTarget.hpp:46
Definition CopiedSharedPtr.hpp:40
Class to store the position or size of a widget.
Definition Layout.hpp:320
Signal to which the user can subscribe to get callbacks from.
Definition Signal.hpp:59
Wrapper class to store strings.
Definition String.hpp:94
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:37
SignalTyped< unsigned int > SignalUInt
Signal with one "unsigned int" as optional unbound parameter.
Definition Signal.hpp:409
Orientation
Orientation of the object.
Definition Layout.hpp:50
@ Vertical
Vertical orientation.
Definition Layout.hpp:51
States used for drawing.
Definition RenderStates.hpp:38