diff --git a/Userland/Libraries/LibGUI/Calendar.cpp b/Userland/Libraries/LibGUI/Calendar.cpp index 1224c6ccb2..f2889a0ceb 100644 --- a/Userland/Libraries/LibGUI/Calendar.cpp +++ b/Userland/Libraries/LibGUI/Calendar.cpp @@ -39,6 +39,7 @@ Calendar::Calendar(Core::DateTime date_time, Mode mode) m_weekend_length = weekend_length; set_fill_with_background_color(true); + set_scrollbars_enabled(false); for (int i = 0; i < 7; i++) { Day day; @@ -777,6 +778,17 @@ void Calendar::mousedown_event(GUI::MouseEvent& event) } } +void Calendar::mousewheel_event(GUI::MouseEvent& event) +{ + if (event.wheel_delta_y() > 0) + show_next_date(); + else + show_previous_date(); + + if (on_scroll) + on_scroll(); +} + void Calendar::doubleclick_event(GUI::MouseEvent& event) { int months; diff --git a/Userland/Libraries/LibGUI/Calendar.h b/Userland/Libraries/LibGUI/Calendar.h index 2a4ef4b82e..f46d2a91e0 100644 --- a/Userland/Libraries/LibGUI/Calendar.h +++ b/Userland/Libraries/LibGUI/Calendar.h @@ -11,13 +11,14 @@ #include #include #include +#include #include #include namespace GUI { class Calendar final - : public GUI::Frame + : public GUI::AbstractScrollableWidget , public Config::Listener { C_OBJECT(Calendar) @@ -77,6 +78,7 @@ public: virtual void config_string_did_change(StringView, StringView, StringView, StringView) override; virtual void config_i32_did_change(StringView, StringView, StringView, i32 value) override; + Function on_scroll; Function on_tile_click; Function on_tile_doubleclick; Function on_month_click; @@ -92,6 +94,7 @@ private: virtual void mousemove_event(GUI::MouseEvent&) override; virtual void mousedown_event(MouseEvent&) override; virtual void mouseup_event(MouseEvent&) override; + virtual void mousewheel_event(MouseEvent&) override; virtual void doubleclick_event(MouseEvent&) override; virtual void leave_event(Core::Event&) override; diff --git a/Userland/Services/Taskbar/ClockWidget.cpp b/Userland/Services/Taskbar/ClockWidget.cpp index 615460dd75..7124319160 100644 --- a/Userland/Services/Taskbar/ClockWidget.cpp +++ b/Userland/Services/Taskbar/ClockWidget.cpp @@ -83,6 +83,10 @@ ClockWidget::ClockWidget() m_calendar = calendar_container.add(); m_selected_calendar_button->set_text(m_calendar->formatted_date().release_value_but_fixme_should_propagate_errors()); + m_calendar->on_scroll = [&] { + update_selected_calendar_button(); + }; + m_calendar->on_tile_click = [&] { m_selected_calendar_button->set_text(m_calendar->formatted_date().release_value_but_fixme_should_propagate_errors()); };