diff options
Diffstat (limited to 'launcher')
| -rw-r--r-- | launcher/ui/MainWindow.cpp | 17 | ||||
| -rw-r--r-- | launcher/ui/instanceview/InstanceView.cpp | 23 | ||||
| -rw-r--r-- | launcher/ui/instanceview/InstanceView.h | 8 | 
3 files changed, 28 insertions, 20 deletions
| diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 834f57dd..4b77dd1c 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -901,21 +901,8 @@ void MainWindow::onCatToggled(bool state)  void MainWindow::setCatBackground(bool enabled)  { -    if (enabled) { -        view->setStyleSheet(QString(R"( -InstanceView -{ -    background-image: url(:/backgrounds/%1); -    background-attachment: fixed; -    background-clip: padding; -    background-position: bottom right; -    background-repeat: none; -    background-color:palette(base); -})") -                                .arg(ThemeManager::getCatImage())); -    } else { -        view->setStyleSheet(QString()); -    } +    view->setCatVisible(enabled); +    view->viewport()->repaint();  }  void MainWindow::runModalTask(Task *task) diff --git a/launcher/ui/instanceview/InstanceView.cpp b/launcher/ui/instanceview/InstanceView.cpp index fbeffe35..4c83e94a 100644 --- a/launcher/ui/instanceview/InstanceView.cpp +++ b/launcher/ui/instanceview/InstanceView.cpp @@ -48,6 +48,7 @@  #include <QAccessible>  #include "VisualGroup.h" +#include "ui/themes/ThemeManager.h"  #include <QDebug>  #include <Application.h> @@ -73,6 +74,7 @@ InstanceView::InstanceView(QWidget *parent)      setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);      setAcceptDrops(true);      setAutoScroll(true); +    setCatVisible(APPLICATION->settings()->get("TheCat").toBool());  }  InstanceView::~InstanceView() @@ -498,12 +500,31 @@ void InstanceView::mouseDoubleClickEvent(QMouseEvent *event)      }  } -void InstanceView::paintEvent(QPaintEvent *event) +void InstanceView::setCatVisible(bool visible) +{ +    m_catVisible = visible; +    m_catPixmap.load(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage())); +} + +void InstanceView::paintEvent(QPaintEvent* event)  {      executeDelayedItemsLayout();      QPainter painter(this->viewport()); +    if (m_catVisible) { +        int widWidth = this->viewport()->width(); +        int widHeight = this->viewport()->height(); +        if (m_catPixmap.width() < widWidth) +            widWidth = m_catPixmap.width(); +        if (m_catPixmap.height() < widHeight) +            widHeight = m_catPixmap.height(); +        auto pixmap = m_catPixmap.scaled(widWidth, widHeight, Qt::KeepAspectRatio); +        QRect rectOfPixmap = pixmap.rect(); +        rectOfPixmap.moveBottomRight(this->viewport()->rect().bottomRight()); +        painter.drawPixmap(rectOfPixmap.topLeft(), pixmap); +    } +  #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)      QStyleOptionViewItem option;      initViewItemOption(&option); diff --git a/launcher/ui/instanceview/InstanceView.h b/launcher/ui/instanceview/InstanceView.h index ac338274..a9bd0bd7 100644 --- a/launcher/ui/instanceview/InstanceView.h +++ b/launcher/ui/instanceview/InstanceView.h @@ -85,10 +85,8 @@ public:      virtual QRegion visualRegionForSelection(const QItemSelection &selection) const override; -    int spacing() const -    { -        return m_spacing; -    }; +    int spacing() const { return m_spacing; }; +    void setCatVisible(bool visible);  public slots:      virtual void updateGeometries() override; @@ -139,6 +137,8 @@ private:      int m_currentItemsPerRow = -1;      int m_currentCursorColumn= -1;      mutable QCache<int, QRect> geometryCache; +    bool m_catVisible = false; +    QPixmap m_catPixmap;      // point where the currently active mouse action started in geometry coordinates      QPoint m_pressedPosition; | 
