From 9ba9bba529c905c89b52e91c70b4ffeadf2f561e Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Wed, 1 Apr 2020 00:18:07 +0430 Subject: [PATCH] Clock menu applet: launch the new Calendar on click --- MenuApplets/Clock/main.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/MenuApplets/Clock/main.cpp b/MenuApplets/Clock/main.cpp index 4ef3e65ec0..26a8afaa92 100644 --- a/MenuApplets/Clock/main.cpp +++ b/MenuApplets/Clock/main.cpp @@ -79,6 +79,21 @@ private: painter.draw_text(event.rect(), time_text, Gfx::Font::default_font(), Gfx::TextAlignment::Center, palette().window_text()); } + virtual void mousedown_event(GUI::MouseEvent& event) override + { + if (event.button() != GUI::MouseButton::Left) + return; + + pid_t pid = fork(); + if (pid < 0) { + perror("fork"); + } else if (pid == 0) { + execl("/bin/Calendar", "Calendar", nullptr); + perror("execl"); + ASSERT_NOT_REACHED(); + } + } + void tick_clock() { update(); @@ -90,14 +105,14 @@ private: int main(int argc, char** argv) { - if (pledge("stdio shared_buffer accept rpath unix cpath fattr", nullptr) < 0) { + if (pledge("stdio shared_buffer accept rpath unix cpath fattr exec proc", nullptr) < 0) { perror("pledge"); return 1; } GUI::Application app(argc, argv); - if (pledge("stdio shared_buffer accept rpath", nullptr) < 0) { + if (pledge("stdio shared_buffer accept rpath exec proc", nullptr) < 0) { perror("pledge"); return 1; } @@ -115,6 +130,11 @@ int main(int argc, char** argv) return 1; } + if (unveil("/bin/Calendar", "x") < 0) { + perror("unveil"); + return 1; + } + unveil(nullptr, nullptr); return app.exec();