diff --git a/tools/chatgui/src/stream_publish_window.cpp b/tools/chatgui/src/stream_publish_window.cpp index b016be38..4df182fd 100644 --- a/tools/chatgui/src/stream_publish_window.cpp +++ b/tools/chatgui/src/stream_publish_window.cpp @@ -33,7 +33,11 @@ constexpr int MaximumManualBitrate = 12000000; class StreamMenuStyle : public QProxyStyle { public: int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const override { - return metric == PM_SmallIconSize && qobject_cast(widget) ? 36 : QProxyStyle::pixelMetric(metric, option, widget); + if (qobject_cast(widget)) { + if (metric == PM_SmallIconSize) return 72; + if (metric == PM_MenuBarItemSpacing) return 0; + } + return QProxyStyle::pixelMetric(metric, option, widget); } }; QString text(const char* value) { return QCoreApplication::translate("ChatGui", value); } @@ -60,7 +64,7 @@ void clearOptions(QMenu* menu, const char* heading) { menu->clear(); menu->addSe /* Компактные векторные значки с текущим значением, читаемые в обеих темах. */ QIcon controlIcon(const QPalette& palette, const QString& shape, const QString& label = {}) { - QPixmap pixmap(40, 36); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); + QPixmap pixmap(80, 72); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); painter.scale(2, 2); painter.setRenderHint(QPainter::Antialiasing); painter.setPen(QPen(palette.windowText(), 1.6)); if (shape == "camera") { painter.drawRoundedRect(QRectF(5, 9, 30, 21), 3, 3); painter.drawEllipse(QPointF(20, 19), 6, 6); @@ -155,11 +159,11 @@ StreamPublishWindow::StreamPublishWindow(StreamPublishEngine* engine, uint64_t g auto* escape = new QShortcut(QKeySequence(Qt::Key_Escape), this); escape->setContext(Qt::WidgetWithChildrenShortcut); connect(escape, &QShortcut::activated, this, &QWidget::close); auto* layout = new QVBoxLayout(this); - auto* controls = new QHBoxLayout; + auto* controls = new QHBoxLayout; controls->setSpacing(4); m_menuBar = new QMenuBar(this); m_menuBar->setNativeMenuBar(false); m_menuBar->setMouseTracking(true); auto* menuStyle = new StreamMenuStyle; menuStyle->setParent(this); m_menuBar->setStyle(menuStyle); m_menuBar->setObjectName(QStringLiteral("streamControls")); - m_menuBar->setStyleSheet("QMenuBar { background: transparent; } QMenuBar::item { padding: 3px; }"); + m_menuBar->setStyleSheet("QMenuBar { background: transparent; } QMenuBar::item { padding: 2px; }"); auto makeMenu = [this](const char* heading, const char* name) { auto* menu = m_menuBar->addMenu(QString()); menu->setObjectName(QString::fromLatin1(name)); menu->menuAction()->setToolTip(text(heading)); menu->setAccessibleName(text(heading)); @@ -175,9 +179,10 @@ StreamPublishWindow::StreamPublishWindow(StreamPublishEngine* engine, uint64_t g m_microphone = makeMenu("Audio source", "streamAudioSource"); auto* settingsMenu = makeMenu("Settings", "streamExtraSettings"); settingsMenu->menuAction()->setIcon(controlIcon(palette(), "settings")); - controls->addWidget(m_menuBar); controls->addStretch(); - m_sound = new QToolButton(this); m_sound->setCheckable(true); m_sound->setIconSize(QSize(40, 36)); + controls->addWidget(m_menuBar); + m_sound = new QToolButton(this); m_sound->setCheckable(true); m_sound->setIconSize(QSize(80, 72)); m_sound->setObjectName(QStringLiteral("streamSound")); m_sound->setAutoRaise(true); controls->addWidget(m_sound); + controls->addStretch(); m_start = new QPushButton(text("Start stream"), this); m_start->setMinimumHeight(40); m_start->setObjectName(QStringLiteral("streamStart")); m_buffer = new StreamBufferIndicator(this); m_buffer->setFixedSize(std::max(80, m_start->sizeHint().width()), 20); @@ -285,6 +290,7 @@ StreamPublishWindow::StreamPublishWindow(StreamPublishEngine* engine, uint64_t g .arg(bytes(stats.video_bytes), bytes(stats.inflight_bytes), bytes(stats.total_bytes), bytes(stats.acked_1s))); }); refreshSources(); refreshCodecs(); restoreSettings(); synchronize(); + DEBUG_DEBUG(DEBUG_CATEGORY_STREAM, "desktop publisher control row icon=80x72 menu_icon=72 spacing=4 minimum_width=%d", minimumWidth()); } void StreamPublishWindow::closeEvent(QCloseEvent* event) { @@ -547,4 +553,6 @@ void StreamPublishWindow::updateMenuButtons() { m_sound->setIcon(controlIcon(palette(), m_sound->isChecked() ? "sound" : "silent")); m_sound->setToolTip(text(m_sound->isChecked() ? "Turn stream audio off" : "Turn stream audio on")); m_sound->setAccessibleName(m_sound->toolTip()); + m_menuBar->setFixedWidth(m_menuBar->sizeHint().width()); + setMinimumWidth(layout()->minimumSize().width()); }