1/*
2 * Copyright 2009, Alexandre Deckner, alex@zappotek.com
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef LONG_AND_DRAG_TRACKING_FILTER_H
6#define LONG_AND_DRAG_TRACKING_FILTER_H
7
8
9#include <MessageFilter.h>
10#include <Point.h>
11
12
13class BHandler;
14class BMessageRunner;
15
16
17namespace BPrivate {
18
19class LongAndDragTrackingFilter : public BMessageFilter {
20public:
21								LongAndDragTrackingFilter(
22									uint32 longMessageWhat,
23									uint32 dragMessageWhat,
24									float radiusThreshold = 4.0f,
25									bigtime_t durationThreshold = 0);
26								~LongAndDragTrackingFilter();
27
28			filter_result		Filter(BMessage* message, BHandler** target);
29
30private:
31			void				_StopTracking();
32
33			uint32				fLongMessageWhat;
34			uint32				fDragMessageWhat;
35			BMessageRunner*		fMessageRunner;
36			BPoint				fClickPoint;
37			uint32				fClickButtons;
38			float				fSquaredRadiusThreshold;
39			bigtime_t			fDurationThreshold;
40};
41
42}	// namespace BPrivate
43
44using BPrivate::LongAndDragTrackingFilter;
45
46#endif	// LONG_AND_DRAG_TRACKING_FILTER_H
47
48