From a2320b99ae148b8a518049b471d2d187f3a884d9 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Mon, 6 Jun 2022 20:54:15 +0200 Subject: [PATCH] ContextView: Use fixed size to avoid scrollbar issues --- src/context/contextalbum.cpp | 9 +++++++-- src/context/contextalbum.h | 2 +- src/context/contextview.cpp | 15 ++++++++++++++- src/context/contextview.h | 3 +++ src/widgets/resizabletextedit.cpp | 2 +- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/context/contextalbum.cpp b/src/context/contextalbum.cpp index 4703207c..8b360999 100644 --- a/src/context/contextalbum.cpp +++ b/src/context/contextalbum.cpp @@ -43,7 +43,6 @@ #include "contextview.h" #include "contextalbum.h" -const int ContextAlbum::kWidgetSpacing = 40; const int ContextAlbum::kFadeTimeLineMs = 1000; ContextAlbum::ContextAlbum(QWidget *parent) @@ -97,7 +96,7 @@ QSize ContextAlbum::sizeHint() const { } -void ContextAlbum::paintEvent(QPaintEvent*) { +void ContextAlbum::resizeEvent(QResizeEvent *e) { if (width() != prev_width_) { ScaleCover(); @@ -105,6 +104,12 @@ void ContextAlbum::paintEvent(QPaintEvent*) { prev_width_ = width(); } + QWidget::resizeEvent(e); + +} + +void ContextAlbum::paintEvent(QPaintEvent*) { + QPainter p(this); p.setRenderHint(QPainter::SmoothPixmapTransform); DrawPreviousCovers(&p); diff --git a/src/context/contextalbum.h b/src/context/contextalbum.h index 2723a249..5265a80e 100644 --- a/src/context/contextalbum.h +++ b/src/context/contextalbum.h @@ -54,6 +54,7 @@ class ContextAlbum : public QWidget { protected: QSize sizeHint() const override; + void resizeEvent(QResizeEvent *e) override; void paintEvent(QPaintEvent*) override; void mouseDoubleClickEvent(QMouseEvent *e) override; void contextMenuEvent(QContextMenuEvent *e) override; @@ -92,7 +93,6 @@ class ContextAlbum : public QWidget { void SearchCoverInProgress(); private: - static const int kWidgetSpacing; static const int kFadeTimeLineMs; private: diff --git a/src/context/contextview.cpp b/src/context/contextview.cpp index 403f9321..1b42e2c8 100644 --- a/src/context/contextview.cpp +++ b/src/context/contextview.cpp @@ -69,6 +69,8 @@ #include "contextview.h" #include "contextalbum.h" +const int ContextView::kWidgetSpacing = 40; + ContextView::ContextView(QWidget *parent) : QWidget(parent), app_(nullptr), @@ -125,7 +127,7 @@ ContextView::ContextView(QWidget *parent) lyrics_id_(-1), font_size_headline_(0), font_size_normal_(0), - prev_width_(0) { + prev_width_(width()) { setLayout(layout_container_); @@ -359,6 +361,17 @@ void ContextView::ReloadSettings() { } +void ContextView::resizeEvent(QResizeEvent *e) { + + if (prev_width_ != width()) { + widget_album_->setFixedWidth(width() - kWidgetSpacing); + prev_width_ = width(); + } + + QWidget::resizeEvent(e); + +} + void ContextView::Playing() {} void ContextView::Stopped() { diff --git a/src/context/contextview.h b/src/context/contextview.h index bcf35d86..1cf5c35b 100644 --- a/src/context/contextview.h +++ b/src/context/contextview.h @@ -64,6 +64,7 @@ class ContextView : public QWidget { Song song_playing() const { return song_playing_; } protected: + void resizeEvent(QResizeEvent *e) override; void contextMenuEvent(QContextMenuEvent*) override; void dragEnterEvent(QDragEnterEvent*) override; void dropEvent(QDropEvent*) override; @@ -101,6 +102,8 @@ class ContextView : public QWidget { void AlbumCoverLoaded(const Song &song, const QImage &image); private: + static const int kWidgetSpacing; + Application *app_; CollectionView *collectionview_; AlbumCoverChoiceController *album_cover_choice_controller_; diff --git a/src/widgets/resizabletextedit.cpp b/src/widgets/resizabletextedit.cpp index f48526e5..7c468481 100644 --- a/src/widgets/resizabletextedit.cpp +++ b/src/widgets/resizabletextedit.cpp @@ -30,7 +30,7 @@ ResizableTextEdit::ResizableTextEdit(QWidget *parent) setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); } - + QSize ResizableTextEdit::sizeHint() const { return QSize(std::max(QTextEdit::sizeHint().width(), 10), std::max(document()->size().toSize().height(), 10));