From e522c5444e14e1cfb4c47659f2fcb1c91ae6b2c4 Mon Sep 17 00:00:00 2001 From: Daniel Ramoeller Date: Mon, 22 Nov 2021 10:15:38 +0100 Subject: [PATCH] InsertTableWidget support for dark mode and improved resizing Fix for bug #12438. --- src/frontends/qt/InsertTableWidget.cpp | 29 +++++++++++++++----------- src/frontends/qt/InsertTableWidget.h | 6 +++++- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/frontends/qt/InsertTableWidget.cpp b/src/frontends/qt/InsertTableWidget.cpp index 3746bb1faf..07ae06124f 100644 --- a/src/frontends/qt/InsertTableWidget.cpp +++ b/src/frontends/qt/InsertTableWidget.cpp @@ -33,7 +33,7 @@ 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); @@ -42,8 +42,8 @@ InsertTableWidget::InsertTableWidget(QWidget * parent) void InsertTableWidget::init() { - rows_ = 5; - cols_ = 5; + rows_ = minrows_; + cols_ = mincols_; bottom_ = 0; right_ = 0; underMouse_ = false; @@ -98,13 +98,15 @@ void InsertTableWidget::mouseMoveEvent(QMouseEvent * event) 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(); } @@ -140,17 +142,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 ) { diff --git a/src/frontends/qt/InsertTableWidget.h b/src/frontends/qt/InsertTableWidget.h index 78e24979c6..5e2e244d2a 100644 --- a/src/frontends/qt/InsertTableWidget.h +++ b/src/frontends/qt/InsertTableWidget.h @@ -48,7 +48,7 @@ private: //! initialize parameters to default values void init(); //! draw the grid - void drawGrid(int rows, int cols, Qt::GlobalColor color); + void drawGrid(int rows, int cols, QBrush fillBrush, QColor lineColor); //! colwidth in pixels int colwidth_; @@ -56,8 +56,12 @@ private: int rowheight_; //! total rows int rows_; + //! minimum number of rows + int minrows_; //! total cols int cols_; + //! minimum number of cols + int mincols_; //! row of pointer int bottom_; //! column of pointer