haiku/src/servers/app/ClickTarget.h

81 lines
1.3 KiB
C++

/*
* Copyright 2010, Ingo Weinhold, ingo_weinhold@gmx.de.
* Distributed under the terms of the MIT License.
*/
#ifndef CLICK_TARGET_H
#define CLICK_TARGET_H
#include <TokenSpace.h>
/*! \brief Identifies a mouse click target in the app server.
Used to discriminate between different targets in order to filter
multi-clicks. A click on a different target resets the click count.
*/
class ClickTarget {
public:
enum Type {
TYPE_INVALID,
TYPE_WINDOW_CONTENTS,
TYPE_WINDOW_DECORATOR
};
public:
ClickTarget()
:
fType(TYPE_INVALID),
fWindow(B_NULL_TOKEN),
fWindowElement(0)
{
}
ClickTarget(Type type, int32 window, int32 windowElement)
:
fType(type),
fWindow(window),
fWindowElement(windowElement)
{
}
bool IsValid() const
{
return fType != TYPE_INVALID;
}
Type GetType() const
{
return fType;
}
int32 WindowToken() const
{
return fWindow;
}
int32 WindowElement() const
{
return fWindowElement;
}
bool operator==(const ClickTarget& other) const
{
return fType == other.fType && fWindow == other.fWindow
&& fWindowElement == other.fWindowElement;
}
bool operator!=(const ClickTarget& other) const
{
return !(*this == other);
}
private:
Type fType;
int32 fWindow;
int32 fWindowElement;
};
#endif // CLICK_TARGET_H