summaryrefslogtreecommitdiff
path: root/indra/llui/lldraghandle.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llui/lldraghandle.h
Print done when done.
Diffstat (limited to 'indra/llui/lldraghandle.h')
-rw-r--r--indra/llui/lldraghandle.h98
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