mirror of
https://github.com/ARMSX2/ARMSX3.git
synced 2026-08-24 16:58:52 -07:00
qt: make settings description static
This commit is contained in:
committed by
Megamouse
parent
41e2d101e7
commit
bf541b5828
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
+272
-140
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user