]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt2/qsetborder.C
better selection and scrolling behaviour
[lyx.git] / src / frontends / qt2 / qsetborder.C
index 4d251ea7b6e473d16a7d52ff79e4b5304fb34174..8d3d6f6fda5bb90a57279c79a87fb098c0cfcb3d 100644 (file)
@@ -4,6 +4,7 @@
  * Licence details can be found in the file COPYING.
  *
  * \author Edwin Leuven
+ * \author John Levon
  *
  * Full author contact details are available in file CREDITS
  */
 #include "qsetborder.h"
 
 
-QSetBorder::QSetBorder( QWidget* parent,  const char* name, WFlags fl )
-       : QWidget( parent, name, fl ),
-         left_(false), right_(false), top_(false), bottom_(false), buffer(75,75)
+QSetBorder::QSetBorder(QWidget * parent, char const * name, WFlags fl)
+       : QWidget(parent, name, fl), buffer(75, 75)
 {
        /* length of corner line */
-       l = buffer.width()/10;
+       l = buffer.width() / 10;
        /* margin */
-       m = buffer.height()/10;
-       
+       m = buffer.height() / 10;
+
        w = buffer.width();
        h = buffer.height();
 
        init();
-       
+
        setMinimumSize(w,h);
        setMaximumSize(w,h);
 }
 
-void QSetBorder::paintEvent( QPaintEvent *e )
+
+void QSetBorder::paintEvent(QPaintEvent * e)
 {
-       QWidget::paintEvent( e );
-       bitBlt( this, 0, 0, &buffer, 0, 0, width(), height() );
+       QWidget::paintEvent(e);
+       bitBlt(this, 0, 0, &buffer, 0, 0, width(), height());
 }
 
+
 void QSetBorder::init()
 {
        buffer.fill();
        QPainter paint;
-       paint.begin( &buffer );
-       paint.setPen( Qt::black );
-       
-       paint.drawLine(   m+l ,m,   m+l ,m+l);
-       paint.drawLine(w-(m+l),m,w-(m+l),m+l);
+       paint.begin(&buffer);
+       paint.setPen(Qt::black);
 
-       paint.drawLine(m,   m+l ,m+l,   m+l);
-       paint.drawLine(m,h-(m+l),m+l,h-(m+l));
+       // FIXME: wow, readable !! :)
 
-       paint.drawLine(   m+l , h-m,   m+l ,h-(m+l));
-       paint.drawLine(w-(m+l),h-m,w-(m+l),h-(m+l));
+       paint.drawLine(m + l , m, m + l, m + l);
+       paint.drawLine(w - (m + l), m, w - (m + l), m + l);
 
-       paint.drawLine(h-m,   m+l ,h-(m+l),   m+l);
-       paint.drawLine(h-m,h-(m+l),h-(m+l),h-(m+l));
+       paint.drawLine(m, m + l , m + l, m + l);
+       paint.drawLine(m, h - (m + l), m + l, h - (m + l));
+
+       paint.drawLine(m + l ,h - m, m + l ,h - (m + l));
+       paint.drawLine(w - (m + l), h - m, w - (m + l), h - (m + l));
+
+       paint.drawLine(h - m, m+l, h - (m + l), m + l);
+       paint.drawLine(h - m, h - (m + l), h - (m + l),h - (m + l));
 
        paint.end();
 }
-void QSetBorder::mousePressEvent( QMouseEvent *e)
+
+
+void QSetBorder::mousePressEvent(QMouseEvent * e)
 {
-       if ( e->y() > e->x()) {
-               if (e->y() < height() - e->x() ) {
-                       drawLeft(!left_);
-                       left_ = !left_;
-                       emit leftSet(left_);
+       if (e->y() > e->x()) {
+               if (e->y() < height() - e->x()) {
+                       if (left_.enabled) {
+                               setLeft(!left_.set);
+                               emit leftSet(left_.set);
+                       }
                } else {
-                       drawBottom(!bottom_);
-                       bottom_ = !bottom_;
-                       emit bottomSet(bottom_);
+                       if (bottom_.enabled) {
+                               setBottom(!bottom_.set);
+                               emit bottomSet(bottom_.set);
+                       }
                }
        } else {
-               if ( e->y() < height() - e->x() ) {
-                       drawTop(!top_);
-                       top_ = !top_;
-                       emit topSet(top_);
+               if (e->y() < height() - e->x()) {
+                       if (top_.enabled) {
+                               setTop(!top_.set);
+                               emit topSet(top_.set);
+                       }
                } else {
-                       drawRight(!right_);
-                       right_ = !right_;
-                       emit rightSet(right_);
+                       if (right_.enabled) {
+                               setRight(!right_.set);
+                               emit rightSet(right_.set);
+                       }
                }
        }
        update();
+       emit clicked();
 }
 
-void QSetBorder::drawLeft(bool draw)
+
+void QSetBorder::drawLine(QColor const & col, int x, int y, int x2, int y2)
 {
        QPainter paint;
-       paint.begin( &buffer );
+       paint.begin(&buffer);
        QPen p = paint.pen();
        p.setWidth(2);
-       p.setColor( draw ? Qt::black : Qt::white );
+       p.setColor(col);
        paint.setPen(p);
-       paint.drawLine(m+l,m+l+2,m+l,h-m-l-1);
+       paint.drawLine(x, y, x2, y2);
        paint.end();
 }
 
+
+void QSetBorder::drawLeft(bool draw)
+{
+       QColor col(draw ? Qt::black : Qt::white);
+       if (!left_.enabled)
+               col = QColor("grey");
+       drawLine(col, m + l, m + l + 2, m + l, h - m - l - 1);
+}
+
+
 void QSetBorder::drawRight(bool draw)
 {
-       QPainter paint;
-       paint.begin( &buffer );
-       QPen p = paint.pen();
-       p.setWidth(2);
-       p.setColor( draw ? Qt::black : Qt::white );
-       paint.setPen(p);
-       paint.drawLine(h-m-l+1,m+l+2,h-m-l+1,h-m-l-1);
-       paint.end();
+       QColor col(draw ? Qt::black : Qt::white);
+       if (!right_.enabled)
+               col = QColor("grey");
+       drawLine(col, h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
 }
 
+
 void QSetBorder::drawTop(bool draw)
 {
-       QPainter paint;
-       paint.begin( &buffer );
-       QPen p = paint.pen();
-       p.setWidth(2);
-       p.setColor( draw ? Qt::black : Qt::white );
-       paint.setPen(p);
-       paint.drawLine(m+l+2,m+l,w-m-l-1,m+l);
-       paint.end();
+       QColor col(draw ? Qt::black : Qt::white);
+       if (!top_.enabled)
+               col = QColor("grey");
+       drawLine(col, m + l + 2, m + l, w - m - l - 1, m + l);
 }
 
+
 void QSetBorder::drawBottom(bool draw)
 {
-       QPainter paint;
-       paint.begin( &buffer );
-       QPen p = paint.pen();
-       p.setWidth(2);
-       p.setColor( draw ? Qt::black : Qt::white );
-       paint.setPen(p);
-       paint.drawLine(m+l+2,w-m-l+1,w-m-l-1,w-m-l+1);
-       paint.end();
+       QColor col(draw ? Qt::black : Qt::white);
+       if (!bottom_.enabled)
+               col = QColor("grey");
+       drawLine(col, m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
+}
+
+
+void QSetBorder::setLeftEnabled(bool border)
+{
+       left_.enabled = border;
+       drawLeft(border);
+}
+
+
+void QSetBorder::setRightEnabled(bool border)
+{
+       right_.enabled = border;
+       drawRight(border);
+}
+
+
+void QSetBorder::setTopEnabled(bool border)
+{
+       top_.enabled = border;
+       drawTop(border);
 }
 
+
+void QSetBorder::setBottomEnabled(bool border)
+{
+       bottom_.enabled = border;
+       drawBottom(border);
+}
+
+
 void QSetBorder::setLeft(bool border)
 {
-       left_ = border;
+       left_.set = border;
+       drawLeft(border);
 }
 
+
 void QSetBorder::setRight(bool border)
 {
-       right_ = border;
+       right_.set = border;
+       drawRight(border);
 }
 
+
 void QSetBorder::setTop(bool border)
 {
-       top_ = border;
+       top_.set = border;
+       drawTop(border);
 }
 
+
 void QSetBorder::setBottom(bool border)
 {
-       bottom_ = border;
+       bottom_.set = border;
+       drawBottom(border);
 }
 
+
+void QSetBorder::setAll(bool border)
+{
+       setLeft(border);
+       setRight(border);
+       setTop(border);
+       setBottom(border);
+}
+
+
 bool QSetBorder::getLeft()
 {
-       return left_;
+       return left_.set;
 }
 
+
 bool QSetBorder::getRight()
 {
-       return right_;
+       return right_.set;
 }
 
+
 bool QSetBorder::getTop()
 {
-       return top_;
+       return top_.set;
 }
 
+
 bool QSetBorder::getBottom()
 {
-       return bottom_;
+       return bottom_.set;
 }
-
-