qt: make settings description static

This commit is contained in:
Lalit Shankar Chowdhury
2026-08-13 14:42:31 +02:00
committed by Megamouse
parent 41e2d101e7
commit bf541b5828
3 changed files with 288 additions and 149 deletions
+13 -7
View File
@@ -8,7 +8,9 @@
#include <QInputDialog>
#include <QDesktopServices>
#include <QColorDialog>
#include <QPlainTextEdit>
#include <QSpinBox>
#include <QTextDocument>
#include <QTimer>
#include <QScreen>
#include <QStyleFactory>
@@ -2461,10 +2463,14 @@ void settings_dialog::open()
});
}
void settings_dialog::SubscribeDescription(QLabel* description)
void settings_dialog::SubscribeDescription(QPlainTextEdit* description)
{
description->setFixedHeight(description->sizeHint().height());
m_description_labels.push_back(std::pair<QLabel*, QString>(description, description->text()));
// Give the description box a static height
constexpr int visible_lines = 4;
const int margins = static_cast<int>(description->document()->documentMargin()) * 2 + description->frameWidth() * 2;
description->setFixedHeight(description->fontMetrics().lineSpacing() * visible_lines + margins);
m_description_views.emplace_back(description, description->toPlainText());
}
void settings_dialog::SubscribeTooltip(QObject* object, const QString& tooltip)
@@ -2497,17 +2503,17 @@ bool settings_dialog::eventFilter(QObject* object, QEvent* event)
{
const int i = ui->tab_widget_settings->currentIndex();
if (i >= 0 && static_cast<usz>(i) < m_description_labels.size())
if (i >= 0 && static_cast<usz>(i) < m_description_views.size())
{
if (QLabel* label = m_description_labels[i].first)
if (QPlainTextEdit* description = m_description_views[i].first)
{
if (event->type() == QEvent::Enter)
{
label->setText(m_descriptions[object]);
description->setPlainText(m_descriptions[object]);
}
else if (event->type() == QEvent::Leave)
{
label->setText(m_description_labels[i].second);
description->setPlainText(m_description_views[i].second);
}
}
}
+3 -2
View File
@@ -4,6 +4,7 @@
#include <QDialog>
#include <QLabel>
#include <QPlainTextEdit>
#include <QSlider>
#include <memory>
@@ -64,9 +65,9 @@ private:
QString m_discord_state;
// Descriptions
std::vector<std::pair<QLabel*, QString>> m_description_labels;
std::vector<std::pair<QPlainTextEdit*, QString>> m_description_views;
QHash<QObject*, QString> m_descriptions;
void SubscribeDescription(QLabel* description);
void SubscribeDescription(QPlainTextEdit* description);
void SubscribeTooltip(QObject* object, const QString& tooltip);
bool eventFilter(QObject* object, QEvent* event) override;
void closeEvent(QCloseEvent* event) override;
File diff suppressed because it is too large Load Diff