From db9c37d336d42abf5793ab7134287f2b5593721e Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Tue, 28 Aug 2018 00:19:39 +0300 Subject: [PATCH] Call adjustSize before showing the timeline widget --- src/timeline/TimelineItem.cpp | 26 ++++++++++++++++++++++++++ src/timeline/TimelineItem.h | 25 +------------------------ src/timeline/TimelineView.cpp | 2 +- src/timeline/TimelineView.h | 7 ++++++- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/timeline/TimelineItem.cpp b/src/timeline/TimelineItem.cpp index ab4461c4..f50f9e27 100644 --- a/src/timeline/TimelineItem.cpp +++ b/src/timeline/TimelineItem.cpp @@ -37,6 +37,32 @@ constexpr int MSG_RIGHT_MARGIN = 7; constexpr int MSG_PADDING = 20; +TextLabel::TextLabel(const QString &text, QWidget *parent) + : QTextBrowser(parent) +{ + setText(text); + setOpenExternalLinks(true); + + // Make it look and feel like an ordinary label. + setReadOnly(true); + setFrameStyle(QFrame::NoFrame); + QPalette pal = palette(); + pal.setColor(QPalette::Base, Qt::transparent); + setPalette(pal); + + // Wrap anywhere but prefer words, adjust minimum height on the fly. + setLineWrapMode(QTextEdit::WidgetWidth); + setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); + connect(document()->documentLayout(), + &QAbstractTextDocumentLayout::documentSizeChanged, + this, + &TextLabel::adjustHeight); + document()->setDocumentMargin(0); + + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + setFixedHeight(0); +} + StatusIndicator::StatusIndicator(QWidget *parent) : QWidget(parent) { diff --git a/src/timeline/TimelineItem.h b/src/timeline/TimelineItem.h index 76c9da7b..26bcfbae 100644 --- a/src/timeline/TimelineItem.h +++ b/src/timeline/TimelineItem.h @@ -93,30 +93,7 @@ class TextLabel : public QTextBrowser Q_OBJECT public: - TextLabel(const QString &text, QWidget *parent = 0) - : QTextBrowser(parent) - { - setText(text); - setOpenExternalLinks(true); - - // Make it look and feel like an ordinary label. - setReadOnly(true); - setFrameStyle(QFrame::NoFrame); - QPalette pal = palette(); - pal.setColor(QPalette::Base, Qt::transparent); - setPalette(pal); - - // Wrap anywhere but prefer words, adjust minimum height on the fly. - setLineWrapMode(QTextEdit::WidgetWidth); - setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); - connect(document()->documentLayout(), - &QAbstractTextDocumentLayout::documentSizeChanged, - this, - &TextLabel::adjustHeight); - document()->setDocumentMargin(0); - - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - } + TextLabel(const QString &text, QWidget *parent = nullptr); void wheelEvent(QWheelEvent *event) override { event->ignore(); } diff --git a/src/timeline/TimelineView.cpp b/src/timeline/TimelineView.cpp index 3d0a1026..e994409a 100644 --- a/src/timeline/TimelineView.cpp +++ b/src/timeline/TimelineView.cpp @@ -626,7 +626,7 @@ TimelineView::addTimelineItem(QWidget *item, TimelineDirection direction) auto separator = new DateSeparator(newDate, this); if (separator) - scroll_layout_->addWidget(separator); + pushTimelineItem(separator); } } diff --git a/src/timeline/TimelineView.h b/src/timeline/TimelineView.h index 740fb902..0d18c7fe 100644 --- a/src/timeline/TimelineView.h +++ b/src/timeline/TimelineView.h @@ -194,9 +194,14 @@ private: //! of the timeline. void pushTimelineItem(QWidget *item) { + setUpdatesEnabled(false); item->hide(); scroll_layout_->addWidget(item); - QTimer::singleShot(0, this, [item]() { item->show(); }); + QTimer::singleShot(0, this, [item, this]() { + item->show(); + item->adjustSize(); + setUpdatesEnabled(true); + }); }; //! Decides whether or not to show or hide the scroll down button.