diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llui/lldraghandle.h |
Print done when done.
Diffstat (limited to 'indra/llui/lldraghandle.h')
-rw-r--r-- | indra/llui/lldraghandle.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h new file mode 100644 index 0000000000..557c01cec6 --- /dev/null +++ b/indra/llui/lldraghandle.h @@ -0,0 +1,98 @@ +/** + * @file lldraghandle.h + * @brief LLDragHandle base class + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +// A widget for dragging a view around the screen using the mouse. + +#ifndef LL_DRAGHANDLE_H +#define LL_DRAGHANDLE_H + +#include "llview.h" +#include "v4color.h" +#include "llrect.h" +#include "llcoord.h" + +class LLTextBox; + +class LLDragHandle : public LLView +{ +public: + LLDragHandle(const LLString& name, const LLRect& rect, const LLString& title ); + + virtual void setValue(const LLSD& value); + + void setForeground(BOOL b) { mForeground = b; } + void setMaxTitleWidth(S32 max_width) {mMaxTitleWidth = llmin(max_width, mMaxTitleWidth); } + void setTitleVisible(BOOL visible); + + virtual void setTitle( const LLString& title ) = 0; + virtual const LLString& getTitle() const = 0; + virtual void draw() = 0; + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE) = 0; + + virtual BOOL handleHover(S32 x, S32 y, MASK mask); + virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); + virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); + +protected: + S32 mDragLastScreenX; + S32 mDragLastScreenY; + S32 mLastMouseScreenX; + S32 mLastMouseScreenY; + LLCoordGL mLastMouseDir; + LLColor4 mDragHighlightColor; + LLColor4 mDragShadowColor; + LLTextBox* mTitleBox; + S32 mMaxTitleWidth; + BOOL mForeground; + + // Pixels near the edge to snap floaters. + static S32 sSnapMargin; +}; + + +// Use this one for traditional top-of-window draggers +class LLDragHandleTop +: public LLDragHandle +{ +public: + LLDragHandleTop(const LLString& name, const LLRect& rect, const LLString& title ); + + virtual EWidgetType getWidgetType() const; + virtual LLString getWidgetTag() const; + + virtual void setTitle( const LLString& title ); + virtual const LLString& getTitle() const; + virtual void draw(); + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + +private: + void reshapeTitleBox(); +}; + + +// Use this for left-side, vertical text draggers +class LLDragHandleLeft +: public LLDragHandle +{ +public: + LLDragHandleLeft(const LLString& name, const LLRect& rect, const LLString& title ); + + virtual EWidgetType getWidgetType() const; + virtual LLString getWidgetTag() const; + + virtual void setTitle( const LLString& title ); + virtual const LLString& getTitle() const; + virtual void draw(); + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + +}; + +const S32 DRAG_HANDLE_HEIGHT = 16; +const S32 DRAG_HANDLE_WIDTH = 16; + +#endif // LL_DRAGHANDLE_H |