From 2ed75462966c366b892c553db5ec0618fa336630 Mon Sep 17 00:00:00 2001 From: Haruki Nakayama Date: Mon, 4 Sep 2023 14:16:42 +0900 Subject: [PATCH] Register handler with individual event for combined flags --- src/NotifierBuilder.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/NotifierBuilder.cpp b/src/NotifierBuilder.cpp index e6b3b0c..2a4d889 100644 --- a/src/NotifierBuilder.cpp +++ b/src/NotifierBuilder.cpp @@ -46,7 +46,19 @@ auto NotifierBuilder::ignoreFile(inotifypp::filesystem::path file) -> NotifierBu auto NotifierBuilder::onEvent(Event event, EventObserver eventObserver) -> NotifierBuilder& { mInotify->setEventMask(mInotify->getEventMask() | static_cast(event)); - mEventObserver[event] = eventObserver; + switch (event) { + case Event::move: + mEventObserver[Event::moved_from] = eventObserver; + mEventObserver[Event::moved_to] = eventObserver; + break; + case Event::close: + mEventObserver[Event::close_write] = eventObserver; + mEventObserver[Event::close_nowrite] = eventObserver; + break; + default: + mEventObserver[event] = eventObserver; + break; + } return *this; } @@ -54,8 +66,7 @@ auto NotifierBuilder::onEvents(std::vector events, EventObserver eventObs -> NotifierBuilder& { for (auto event : events) { - mInotify->setEventMask(mInotify->getEventMask() | static_cast(event)); - mEventObserver[event] = eventObserver; + onEvent(event, eventObserver); } return *this;