]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt/InsertTableWidget.cpp
Fix readability
[lyx.git] / src / frontends / qt / InsertTableWidget.cpp
index 70f53e20dde71fe932a419a783fd22d720757767..45855274a830f752b27f0c0f3655e09fd28212a0 100644 (file)
@@ -33,17 +33,19 @@ namespace lyx {
 namespace frontend {
 
 InsertTableWidget::InsertTableWidget(QWidget * parent)
-       : QWidget(parent, Qt::Popup), colwidth_(20), rowheight_(12)
+       : QWidget(parent, Qt::Popup), colwidth_(15), rowheight_(15), minrows_(5), mincols_(5)
 {
        init();
        setMouseTracking(true);
+       // display tooltip without any delay
+       setStyle(new ProxyStyle(style()));
 }
 
 
 void InsertTableWidget::init()
 {
-       rows_ = 5;
-       cols_ = 5;
+       rows_ = minrows_;
+       cols_ = mincols_;
        bottom_ = 0;
        right_ = 0;
        underMouse_ = false;
@@ -63,6 +65,13 @@ void InsertTableWidget::show(bool show)
 }
 
 
+void InsertTableWidget::hideEvent(QHideEvent * event)
+{
+       QWidget::hideEvent(event);
+       visible(false);
+}
+
+
 void InsertTableWidget::resetGeometry()
 {
        QPoint p = parentWidget()->mapToGlobal(parentWidget()->geometry().bottomLeft());
@@ -90,27 +99,30 @@ void InsertTableWidget::mouseMoveEvent(QMouseEvent * event)
 
        int const r0 = right_;
        int const b0 = bottom_;
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+       right_ = event->position().x() / colwidth_ + 1;
+       bottom_ = event->position().y() / rowheight_ + 1;
+#else
        right_ = event->x() / colwidth_ + 1;
        bottom_ = event->y() / rowheight_ + 1;
+#endif
 
-       if (bottom_ == rows_) {
-               ++rows_;
+       int const newrows = std::max(minrows_, bottom_ + 1);
+       if (rows_ != newrows) {
+               rows_ = newrows;
                resetGeometry();
        }
 
-       if (right_ == cols_) {
-               ++cols_;
+       int const newcols = std::max(mincols_, right_ + 1);
+       if (cols_ != newcols) {
+               cols_ = newcols;
                resetGeometry();
        }
 
        if (bottom_ != b0 || right_ != r0) {
                update();
                QString const status = QString("%1x%2").arg(bottom_).arg(right_);
-#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
-               QToolTip::showText(event->globalPosition().toPoint(), status , this);
-#else
-               QToolTip::showText(event->globalPos(), status , this);
-#endif
+               setToolTip(status);
        }
 }
 
@@ -135,17 +147,20 @@ void InsertTableWidget::mousePressEvent(QMouseEvent * /*event*/)
 
 void InsertTableWidget::paintEvent(QPaintEvent * /*event*/)
 {
-       drawGrid(rows_, cols_, Qt::white);
+       QPalette const palette = this->palette();
+       drawGrid(rows_, cols_, palette.base(), palette.text().color());
        if (underMouse_)
-               drawGrid(bottom_, right_, Qt::darkBlue);
+               drawGrid(bottom_, right_, palette.highlight(),
+                               palette.highlightedText().color());
 }
 
 
-void InsertTableWidget::drawGrid(int const rows, int const cols, Qt::GlobalColor const color)
+void InsertTableWidget::drawGrid(int const rows, int const cols,
+       QBrush const fillBrush, QColor lineColor)
 {
        QPainter painter(this);
-       painter.setPen(Qt::darkGray);
-       painter.setBrush(color);
+       painter.setPen(lineColor);
+       painter.setBrush(fillBrush);
 
        for (int r = 0 ; r < rows ; ++r ) {
                for (int c = 0 ; c < cols ; ++c ) {