57 lines
1.8 KiB
C++
57 lines
1.8 KiB
C++
/**
|
|
* @file llviewinject.h
|
|
* @author Nat Goodspeed
|
|
* @date 2011-08-16
|
|
* @brief Supplemental LLView functionality used for simulating UI events.
|
|
*
|
|
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
|
* Copyright (c) 2011, Linden Research, Inc.
|
|
* $/LicenseInfo$
|
|
*/
|
|
|
|
#if ! defined(LL_LLVIEWINJECT_H)
|
|
#define LL_LLVIEWINJECT_H
|
|
|
|
#include "llview.h"
|
|
#include <map>
|
|
|
|
namespace llview
|
|
{
|
|
|
|
/**
|
|
* TargetEvent is a callable with state, specifically intended for use as
|
|
* an LLView::TemporaryDrilldownFunc. Instantiate it with the desired
|
|
* target LLView*; pass it to a TemporaryDrilldownFunc instance;
|
|
* TargetEvent::operator() will then attempt to direct subsequent mouse
|
|
* events to the desired target LLView*. (This is an "attempt" because
|
|
* LLView will still balk unless the target LLView and every parent are
|
|
* visible and enabled.)
|
|
*/
|
|
class TargetEvent
|
|
{
|
|
public:
|
|
/**
|
|
* Construct TargetEvent with the desired target LLView*. (See
|
|
* LLUI::getInstance()->resolvePath() to obtain an LLView* given a string pathname.)
|
|
* This sets up for operator().
|
|
*/
|
|
TargetEvent(LLView* view);
|
|
|
|
/**
|
|
* This signature must match LLView::DrilldownFunc. When you install
|
|
* this TargetEvent instance using LLView::TemporaryDrilldownFunc,
|
|
* LLView will call this method to decide whether to propagate an
|
|
* incoming mouse event to the passed child LLView*.
|
|
*/
|
|
bool operator()(const LLView*, S32 x, S32 y) const;
|
|
|
|
private:
|
|
// For a given parent LLView, identify which child to select.
|
|
typedef std::map<LLView*, LLView*> ChildMap;
|
|
ChildMap mChildMap;
|
|
};
|
|
|
|
} // llview namespace
|
|
|
|
#endif /* ! defined(LL_LLVIEWINJECT_H) */
|