diff --git a/UI/CMakeLists.txt b/UI/CMakeLists.txt index 7ee4c9497..1d49ab0ba 100644 --- a/UI/CMakeLists.txt +++ b/UI/CMakeLists.txt @@ -186,6 +186,8 @@ target_sources( menu-button.cpp menu-button.hpp mute-checkbox.hpp + plain-text-edit.cpp + plain-text-edit.hpp properties-view.cpp properties-view.hpp properties-view.moc.hpp diff --git a/UI/crash-report.cpp b/UI/crash-report.cpp index 8c8e0a00b..e423f8d11 100644 --- a/UI/crash-report.cpp +++ b/UI/crash-report.cpp @@ -1,12 +1,12 @@ #include "crash-report.hpp" #include #include -#include #include #include #include #include #include "qt-wrappers.hpp" +#include "plain-text-edit.hpp" OBSCrashReport::OBSCrashReport(QWidget *parent, const char *text) : QDialog(parent) @@ -17,10 +17,9 @@ OBSCrashReport::OBSCrashReport(QWidget *parent, const char *text) QPushButton *exitButton = new QPushButton; exitButton->setText("Exit"); - textBox = new QPlainTextEdit; + textBox = new OBSPlainTextEdit; textBox->setPlainText(QT_UTF8(text)); textBox->setLineWrapMode(QPlainTextEdit::NoWrap); - textBox->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(copyButton); diff --git a/UI/crash-report.hpp b/UI/crash-report.hpp index 32f590e77..ae53e93fe 100644 --- a/UI/crash-report.hpp +++ b/UI/crash-report.hpp @@ -2,12 +2,12 @@ #include -class QPlainTextEdit; +class OBSPlainTextEdit; class OBSCrashReport : public QDialog { Q_OBJECT - QPlainTextEdit *textBox; + OBSPlainTextEdit *textBox; public: OBSCrashReport(QWidget *parent, const char *text); diff --git a/UI/forms/OBSLogViewer.ui b/UI/forms/OBSLogViewer.ui index 67afb7138..4155df4d5 100644 --- a/UI/forms/OBSLogViewer.ui +++ b/UI/forms/OBSLogViewer.ui @@ -27,7 +27,7 @@ 4 - + true @@ -92,6 +92,13 @@ + + + OBSPlainTextEdit + QPlainTextEdit +
plain-text-edit.hpp
+
+
diff --git a/UI/frontend-plugins/aja-output-ui/CMakeLists.txt b/UI/frontend-plugins/aja-output-ui/CMakeLists.txt index 169f62699..96eb39310 100644 --- a/UI/frontend-plugins/aja-output-ui/CMakeLists.txt +++ b/UI/frontend-plugins/aja-output-ui/CMakeLists.txt @@ -44,6 +44,8 @@ target_sources( ${CMAKE_SOURCE_DIR}/plugins/aja/aja-widget-io.hpp ${CMAKE_SOURCE_DIR}/UI/double-slider.cpp ${CMAKE_SOURCE_DIR}/UI/double-slider.hpp + ${CMAKE_SOURCE_DIR}/UI/plain-text-edit.hpp + ${CMAKE_SOURCE_DIR}/UI/plain-text-edit.cpp ${CMAKE_SOURCE_DIR}/UI/properties-view.hpp ${CMAKE_SOURCE_DIR}/UI/properties-view.cpp ${CMAKE_SOURCE_DIR}/UI/properties-view.moc.hpp diff --git a/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt b/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt index 909bf1d98..dada95b75 100644 --- a/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt +++ b/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt @@ -26,6 +26,8 @@ target_sources( decklink-ui-main.h ${CMAKE_SOURCE_DIR}/UI/double-slider.cpp ${CMAKE_SOURCE_DIR}/UI/double-slider.hpp + ${CMAKE_SOURCE_DIR}/UI/plain-text-edit.hpp + ${CMAKE_SOURCE_DIR}/UI/plain-text-edit.cpp ${CMAKE_SOURCE_DIR}/UI/properties-view.hpp ${CMAKE_SOURCE_DIR}/UI/properties-view.cpp ${CMAKE_SOURCE_DIR}/UI/properties-view.moc.hpp diff --git a/UI/frontend-plugins/frontend-tools/CMakeLists.txt b/UI/frontend-plugins/frontend-tools/CMakeLists.txt index 8fd311adb..8797344bf 100644 --- a/UI/frontend-plugins/frontend-tools/CMakeLists.txt +++ b/UI/frontend-plugins/frontend-tools/CMakeLists.txt @@ -38,7 +38,9 @@ target_sources( ${CMAKE_SOURCE_DIR}/UI/slider-ignorewheel.cpp ${CMAKE_SOURCE_DIR}/UI/slider-ignorewheel.hpp ${CMAKE_SOURCE_DIR}/UI/vertical-scroll-area.hpp - ${CMAKE_SOURCE_DIR}/UI/vertical-scroll-area.cpp) + ${CMAKE_SOURCE_DIR}/UI/vertical-scroll-area.cpp + ${CMAKE_SOURCE_DIR}/UI/plain-text-edit.cpp + ${CMAKE_SOURCE_DIR}/UI/plain-text-edit.hpp) target_compile_features(frontend-tools PRIVATE cxx_std_17) diff --git a/UI/frontend-plugins/frontend-tools/scripts.cpp b/UI/frontend-plugins/frontend-tools/scripts.cpp index 074c30d13..249b1bff2 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.cpp +++ b/UI/frontend-plugins/frontend-tools/scripts.cpp @@ -2,9 +2,9 @@ #include "scripts.hpp" #include "../../properties-view.hpp" #include "../../qt-wrappers.hpp" +#include "../../plain-text-edit.hpp" #include -#include #include #include #include @@ -81,18 +81,14 @@ struct ScriptData { static ScriptData *scriptData = nullptr; static ScriptsTool *scriptsWindow = nullptr; static ScriptLogWindow *scriptLogWindow = nullptr; -static QPlainTextEdit *scriptLogWidget = nullptr; +static OBSPlainTextEdit *scriptLogWidget = nullptr; /* ----------------------------------------------------------------- */ ScriptLogWindow::ScriptLogWindow() : QWidget(nullptr) { - const QFont fixedFont = - QFontDatabase::systemFont(QFontDatabase::FixedFont); - - QPlainTextEdit *edit = new QPlainTextEdit(); + OBSPlainTextEdit *edit = new OBSPlainTextEdit(); edit->setReadOnly(true); - edit->setFont(fixedFont); edit->setWordWrapMode(QTextOption::NoWrap); QHBoxLayout *buttonLayout = new QHBoxLayout(); diff --git a/UI/log-viewer.cpp b/UI/log-viewer.cpp index 32b60e511..25e19c12d 100644 --- a/UI/log-viewer.cpp +++ b/UI/log-viewer.cpp @@ -21,14 +21,6 @@ OBSLogViewer::OBSLogViewer(QWidget *parent) ui->setupUi(this); - const QFont fixedFont = - QFontDatabase::systemFont(QFontDatabase::FixedFont); - - ui->textArea->setFont(fixedFont); - // Fix display of tabs & multiple spaces - ui->textArea->document()->setDefaultStyleSheet( - "font { white-space: pre; }"); - bool showLogViewerOnStartup = config_get_bool( App()->GlobalConfig(), "LogViewer", "ShowLogStartup"); diff --git a/UI/plain-text-edit.cpp b/UI/plain-text-edit.cpp new file mode 100644 index 000000000..d8f03b561 --- /dev/null +++ b/UI/plain-text-edit.cpp @@ -0,0 +1,19 @@ +#include "plain-text-edit.hpp" +#include + +OBSPlainTextEdit::OBSPlainTextEdit(QWidget *parent, bool monospace) + : QPlainTextEdit(parent) +{ + // Fix display of tabs & multiple spaces + document()->setDefaultStyleSheet("font { white-space: pre; }"); + + if (monospace) { + const QFont fixedFont = + QFontDatabase::systemFont(QFontDatabase::FixedFont); + + setStyleSheet( + QString("font-family: %1; font-size: %2pt;") + .arg(fixedFont.family(), + QString::number(fixedFont.pointSize()))); + } +} diff --git a/UI/plain-text-edit.hpp b/UI/plain-text-edit.hpp new file mode 100644 index 000000000..4e3a4bc26 --- /dev/null +++ b/UI/plain-text-edit.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include + +class OBSPlainTextEdit : public QPlainTextEdit { + Q_OBJECT + +public: + explicit OBSPlainTextEdit(QWidget *parent = nullptr, + bool monospace = true); +}; diff --git a/UI/properties-view.cpp b/UI/properties-view.cpp index 8e09d2e11..11e7d99b1 100644 --- a/UI/properties-view.cpp +++ b/UI/properties-view.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -29,6 +28,7 @@ #include "qt-wrappers.hpp" #include "properties-view.hpp" #include "properties-view.moc.hpp" +#include "plain-text-edit.hpp" #include "obs-app.hpp" #include @@ -265,17 +265,13 @@ QWidget *OBSPropertiesView::AddText(obs_property_t *prop, QFormLayout *layout, { const char *name = obs_property_name(prop); const char *val = obs_data_get_string(settings, name); - const bool monospace = obs_property_text_monospace(prop); + bool monospace = obs_property_text_monospace(prop); obs_text_type type = obs_property_text_type(prop); if (type == OBS_TEXT_MULTILINE) { - QPlainTextEdit *edit = new QPlainTextEdit(QT_UTF8(val)); + OBSPlainTextEdit *edit = new OBSPlainTextEdit(this, monospace); + edit->setPlainText(QT_UTF8(val)); edit->setTabStopDistance(40); - if (monospace) { - QFont f("Courier"); - f.setStyleHint(QFont::Monospace); - edit->setFont(f); - } return NewWidget(prop, edit, SIGNAL(textChanged())); } else if (type == OBS_TEXT_PASSWORD) { @@ -1725,7 +1721,8 @@ void WidgetInfo::TextChanged(const char *setting) obs_text_type type = obs_property_text_type(property); if (type == OBS_TEXT_MULTILINE) { - QPlainTextEdit *edit = static_cast(widget); + OBSPlainTextEdit *edit = + static_cast(widget); obs_data_set_string(view->settings, setting, QT_TO_UTF8(edit->toPlainText())); return;