parent
dc67d0737b
commit
8f11a91917
|
@ -873,7 +873,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
|
||||||
}
|
}
|
||||||
|
|
||||||
void RichTextLabel::_scroll_changed(double) {
|
void RichTextLabel::_scroll_changed(double) {
|
||||||
if (updating_scroll || !scroll_active) {
|
if (updating_scroll) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2008,6 +2008,7 @@ void RichTextLabel::set_scroll_active(bool p_active) {
|
||||||
}
|
}
|
||||||
|
|
||||||
scroll_active = p_active;
|
scroll_active = p_active;
|
||||||
|
vscroll->set_drag_node_enabled(p_active);
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -506,6 +506,10 @@ void ScrollBar::_drag_node_exit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScrollBar::_drag_node_input(const Ref<InputEvent> &p_input) {
|
void ScrollBar::_drag_node_input(const Ref<InputEvent> &p_input) {
|
||||||
|
if (!drag_node_enabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Ref<InputEventMouseButton> mb = p_input;
|
Ref<InputEventMouseButton> mb = p_input;
|
||||||
|
|
||||||
if (mb.is_valid()) {
|
if (mb.is_valid()) {
|
||||||
|
@ -590,6 +594,10 @@ NodePath ScrollBar::get_drag_node() const {
|
||||||
return drag_node_path;
|
return drag_node_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScrollBar::set_drag_node_enabled(bool p_enable) {
|
||||||
|
drag_node_enabled = p_enable;
|
||||||
|
}
|
||||||
|
|
||||||
void ScrollBar::set_smooth_scroll_enabled(bool p_enable) {
|
void ScrollBar::set_smooth_scroll_enabled(bool p_enable) {
|
||||||
smooth_scroll_enabled = p_enable;
|
smooth_scroll_enabled = p_enable;
|
||||||
}
|
}
|
||||||
|
@ -610,19 +618,6 @@ void ScrollBar::_bind_methods() {
|
||||||
|
|
||||||
ScrollBar::ScrollBar(Orientation p_orientation) {
|
ScrollBar::ScrollBar(Orientation p_orientation) {
|
||||||
orientation = p_orientation;
|
orientation = p_orientation;
|
||||||
highlight = HIGHLIGHT_NONE;
|
|
||||||
custom_step = -1;
|
|
||||||
drag_node = nullptr;
|
|
||||||
|
|
||||||
drag.active = false;
|
|
||||||
|
|
||||||
drag_node_speed = Vector2();
|
|
||||||
drag_node_touching = false;
|
|
||||||
drag_node_touching_deaccel = false;
|
|
||||||
|
|
||||||
scrolling = false;
|
|
||||||
target_scroll = 0;
|
|
||||||
smooth_scroll_enabled = false;
|
|
||||||
|
|
||||||
if (focus_by_default) {
|
if (focus_by_default) {
|
||||||
set_focus_mode(FOCUS_ALL);
|
set_focus_mode(FOCUS_ALL);
|
||||||
|
|
|
@ -47,12 +47,12 @@ class ScrollBar : public Range {
|
||||||
|
|
||||||
Orientation orientation;
|
Orientation orientation;
|
||||||
Size2 size;
|
Size2 size;
|
||||||
float custom_step;
|
float custom_step = -1;
|
||||||
|
|
||||||
HighlightStatus highlight;
|
HighlightStatus highlight = HIGHLIGHT_NONE;
|
||||||
|
|
||||||
struct Drag {
|
struct Drag {
|
||||||
bool active;
|
bool active = false;
|
||||||
float pos_at_click;
|
float pos_at_click;
|
||||||
float value_at_click;
|
float value_at_click;
|
||||||
} drag;
|
} drag;
|
||||||
|
@ -66,22 +66,23 @@ class ScrollBar : public Range {
|
||||||
|
|
||||||
static void set_can_focus_by_default(bool p_can_focus);
|
static void set_can_focus_by_default(bool p_can_focus);
|
||||||
|
|
||||||
Node *drag_node;
|
Node *drag_node = nullptr;
|
||||||
NodePath drag_node_path;
|
NodePath drag_node_path;
|
||||||
|
bool drag_node_enabled = true;
|
||||||
|
|
||||||
Vector2 drag_node_speed;
|
Vector2 drag_node_speed = Vector2();
|
||||||
Vector2 drag_node_accum;
|
Vector2 drag_node_accum;
|
||||||
Vector2 drag_node_from;
|
Vector2 drag_node_from;
|
||||||
Vector2 last_drag_node_accum;
|
Vector2 last_drag_node_accum;
|
||||||
float last_drag_node_time;
|
float last_drag_node_time;
|
||||||
float time_since_motion;
|
float time_since_motion;
|
||||||
bool drag_node_touching;
|
bool drag_node_touching = false;
|
||||||
bool drag_node_touching_deaccel;
|
bool drag_node_touching_deaccel = false;
|
||||||
bool click_handled;
|
bool click_handled;
|
||||||
|
|
||||||
bool scrolling;
|
bool scrolling = false;
|
||||||
double target_scroll;
|
double target_scroll = 0;
|
||||||
bool smooth_scroll_enabled;
|
bool smooth_scroll_enabled = false;
|
||||||
|
|
||||||
void _drag_node_exit();
|
void _drag_node_exit();
|
||||||
void _drag_node_input(const Ref<InputEvent> &p_input);
|
void _drag_node_input(const Ref<InputEvent> &p_input);
|
||||||
|
@ -99,6 +100,7 @@ public:
|
||||||
|
|
||||||
void set_drag_node(const NodePath &p_path);
|
void set_drag_node(const NodePath &p_path);
|
||||||
NodePath get_drag_node() const;
|
NodePath get_drag_node() const;
|
||||||
|
void set_drag_node_enabled(bool p_enable);
|
||||||
|
|
||||||
void set_smooth_scroll_enabled(bool p_enable);
|
void set_smooth_scroll_enabled(bool p_enable);
|
||||||
bool is_smooth_scroll_enabled() const;
|
bool is_smooth_scroll_enabled() const;
|
||||||
|
|
Loading…
Reference in New Issue