mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:07:35 +00:00
parent
7191098356
commit
9f8d518e82
2 changed files with 25 additions and 6 deletions
|
@ -69,13 +69,25 @@ void InfinitelyScrollableTableView::did_scroll()
|
||||||
TableView::did_scroll();
|
TableView::did_scroll();
|
||||||
auto& vscrollbar = vertical_scrollbar();
|
auto& vscrollbar = vertical_scrollbar();
|
||||||
auto& hscrollbar = horizontal_scrollbar();
|
auto& hscrollbar = horizontal_scrollbar();
|
||||||
if (vscrollbar.is_visible() && vscrollbar.value() == vscrollbar.max()) {
|
if (!m_vertical_scroll_end_timer->is_active()) {
|
||||||
if (on_reaching_vertical_end)
|
if (vscrollbar.is_visible() && vscrollbar.value() == vscrollbar.max()) {
|
||||||
on_reaching_vertical_end();
|
m_vertical_scroll_end_timer->on_timeout = [&] {
|
||||||
|
if (on_reaching_vertical_end)
|
||||||
|
on_reaching_vertical_end();
|
||||||
|
m_vertical_scroll_end_timer->stop();
|
||||||
|
};
|
||||||
|
m_vertical_scroll_end_timer->start(50);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (hscrollbar.is_visible() && hscrollbar.value() == hscrollbar.max()) {
|
if (!m_horizontal_scroll_end_timer->is_active()) {
|
||||||
if (on_reaching_horizontal_end)
|
if (hscrollbar.is_visible() && hscrollbar.value() == hscrollbar.max()) {
|
||||||
on_reaching_horizontal_end();
|
m_horizontal_scroll_end_timer->on_timeout = [&] {
|
||||||
|
if (on_reaching_horizontal_end)
|
||||||
|
on_reaching_horizontal_end();
|
||||||
|
m_horizontal_scroll_end_timer->stop();
|
||||||
|
};
|
||||||
|
m_horizontal_scroll_end_timer->start(50);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,11 @@ public:
|
||||||
Function<void()> on_reaching_horizontal_end;
|
Function<void()> on_reaching_horizontal_end;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
InfinitelyScrollableTableView()
|
||||||
|
: m_horizontal_scroll_end_timer(Core::Timer::construct())
|
||||||
|
, m_vertical_scroll_end_timer(Core::Timer::construct())
|
||||||
|
{
|
||||||
|
}
|
||||||
virtual void did_scroll() override;
|
virtual void did_scroll() override;
|
||||||
virtual void mousemove_event(GUI::MouseEvent&) override;
|
virtual void mousemove_event(GUI::MouseEvent&) override;
|
||||||
virtual void mouseup_event(GUI::MouseEvent&) override;
|
virtual void mouseup_event(GUI::MouseEvent&) override;
|
||||||
|
@ -93,6 +98,8 @@ private:
|
||||||
bool m_should_intercept_drag { false };
|
bool m_should_intercept_drag { false };
|
||||||
bool m_has_committed_to_dragging { false };
|
bool m_has_committed_to_dragging { false };
|
||||||
GUI::ModelIndex m_starting_selection_index;
|
GUI::ModelIndex m_starting_selection_index;
|
||||||
|
RefPtr<Core::Timer> m_horizontal_scroll_end_timer;
|
||||||
|
RefPtr<Core::Timer> m_vertical_scroll_end_timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SpreadsheetView final : public GUI::Widget {
|
class SpreadsheetView final : public GUI::Widget {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue