summaryrefslogtreecommitdiffstats
path: root/src/widgets/qsplitter.h
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-08-06 01:36:40 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-08-06 01:36:40 -0500
commitf97ed1fa6cdcdb4e70979899145f3d3da34c3932 (patch)
treef4639dff22269b84573a51cdfe715b352adaaa03 /src/widgets/qsplitter.h
parentd82327fe4f56dcffc27a6af162cbed23adf83d8d (diff)
downloadqt3-f97ed1fa6cdcdb4e70979899145f3d3da34c3932.tar.gz
qt3-f97ed1fa6cdcdb4e70979899145f3d3da34c3932.zip
Expose some QSplitter private classes for added functionality in Trinity
This is not a security risk
Diffstat (limited to 'src/widgets/qsplitter.h')
-rw-r--r--src/widgets/qsplitter.h73
1 files changed, 72 insertions, 1 deletions
diff --git a/src/widgets/qsplitter.h b/src/widgets/qsplitter.h
index 97b95ad..c159e0f 100644
--- a/src/widgets/qsplitter.h
+++ b/src/widgets/qsplitter.h
@@ -48,11 +48,52 @@
#ifndef QT_NO_SPLITTER
+#define QT_QSPLITTER_DEFAULT 2
+
class QSplitterHandle;
class QSplitterPrivate;
class QSplitterLayoutStruct;
class QTextStream;
+class QSplitterPrivate
+{
+public:
+ QSplitterPrivate()
+ : opaque( FALSE ), firstShow( TRUE ), childrenCollapsible( TRUE ),
+ handleWidth( 0 ) { }
+
+ QPtrList<QSplitterLayoutStruct> list;
+ bool opaque : 8;
+ bool firstShow : 8;
+ bool childrenCollapsible : 8;
+ int handleWidth;
+};
+
+class QSplitterLayoutStruct : public Qt
+{
+public:
+ QCOORD sizer;
+ uint isHandle : 1;
+ uint collapsible : 2;
+ uint resizeMode : 2;
+ QWidget *wid;
+
+ QSplitterLayoutStruct()
+ : sizer( -1 ), collapsible( QT_QSPLITTER_DEFAULT ) { }
+ QCOORD getSizer( Orientation orient );
+};
+
+QCOORD QSplitterLayoutStruct::getSizer( Orientation orient )
+{
+ if ( sizer == -1 ) {
+ QSize s = wid->sizeHint();
+ if ( !s.isValid() || wid->testWState(WState_Resized) )
+ s = wid->size();
+ sizer = ( orient == Horizontal ) ? s.width() : s.height();
+ }
+ return sizer;
+}
+
class Q_EXPORT QSplitter : public QFrame
{
Q_OBJECT
@@ -111,7 +152,7 @@ protected:
virtual void setRubberband( int );
void getRange( int id, int *, int * );
-private:
+public: //private:
enum { DefaultResizeMode = 3 };
void init();
@@ -164,6 +205,36 @@ Q_EXPORT QTextStream& operator<<( QTextStream&, const QSplitter& );
Q_EXPORT QTextStream& operator>>( QTextStream&, QSplitter& );
#endif
+class QSplitterHandle : public QWidget
+{
+ Q_OBJECT
+public:
+ QSplitterHandle( Orientation o,
+ QSplitter *parent, const char* name=0 );
+ void setOrientation( Orientation o );
+ Orientation orientation() const { return orient; }
+
+ bool opaque() const { return s->opaqueResize(); }
+
+ QSize sizeHint() const;
+
+ int id() const { return myId; } // d->list.at(id())->wid == this
+ void setId( int i ) { myId = i; }
+
+protected:
+ void paintEvent( QPaintEvent * );
+ void mouseMoveEvent( QMouseEvent * );
+ void mousePressEvent( QMouseEvent * );
+ void mouseReleaseEvent( QMouseEvent * );
+
+public: // private:
+ Orientation orient;
+ bool opaq;
+ int myId;
+
+ QSplitter *s;
+};
+
#endif // QT_NO_SPLITTER
#endif // QSPLITTER_H