From 1e5b0a7b682ccdcee0769327d846d49c45e9c631 Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:45:07 +0100 Subject: [PATCH] Place frame buttons next to current cursor position --- data/locale/de-DE.ini | 4 ++-- data/locale/en-US.ini | 4 ++-- data/locale/es-ES.ini | 4 ++-- data/locale/fr-FR.ini | 4 ++-- data/locale/ja-JP.ini | 4 ++-- data/locale/pt-BR.ini | 4 ++-- data/locale/tr-TR.ini | 4 ++-- data/locale/zh-CN.ini | 4 ++-- plugins/base/macro-condition-cursor.cpp | 14 ++++++-------- 9 files changed, 22 insertions(+), 24 deletions(-) diff --git a/data/locale/de-DE.ini b/data/locale/de-DE.ini index e0816ebe..98ae3d1c 100644 --- a/data/locale/de-DE.ini +++ b/data/locale/de-DE.ini @@ -128,8 +128,8 @@ AdvSceneSwitcher.condition.cursor.button.middle="Mittlere Maustaste" AdvSceneSwitcher.condition.cursor.button.right="Rechte Maustaste" AdvSceneSwitcher.condition.cursor.showFrame="Rahmen anzeigen" AdvSceneSwitcher.condition.cursor.hideFrame="Rahmen ausblenden" -AdvSceneSwitcher.condition.cursor.entry.line1="Cursor {{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="Cursor ist aktuell bei {{xPos}} x {{yPos}}" +AdvSceneSwitcher.condition.cursor.layout.line1="Cursor {{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}Cursor ist aktuell bei {{xPos}} x {{yPos}}" AdvSceneSwitcher.condition.scene="Szene" AdvSceneSwitcher.condition.scene.type.current="Aktuelle Szene ist" AdvSceneSwitcher.condition.scene.type.previous="Vorherige Szene ist" diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 8422baf6..7a60faff 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -397,8 +397,8 @@ AdvSceneSwitcher.condition.cursor.showFrame="Show frame" AdvSceneSwitcher.condition.cursor.hideFrame="Hide frame" AdvSceneSwitcher.condition.cursor.drawFrame="Draw frame" AdvSceneSwitcher.condition.cursor.drawFrame.prompt="Drag to draw a cursor region. Release to apply. Press Esc or right-click to cancel." -AdvSceneSwitcher.condition.cursor.entry.line1="Cursor{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="Cursor is currently at{{xPos}}x{{yPos}}" +AdvSceneSwitcher.condition.cursor.layout.line1="Cursor{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}Cursor is currently at{{xPos}}x{{yPos}}" AdvSceneSwitcher.condition.scene="Scene" AdvSceneSwitcher.condition.scene.type.current="Current scene is" AdvSceneSwitcher.condition.scene.type.previous="Previous scene is" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index ed356e5f..2f0d977e 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -105,8 +105,8 @@ AdvSceneSwitcher.condition.cursor.type.region="está en la región" AdvSceneSwitcher.condition.cursor.type.moving="se está moviendo" AdvSceneSwitcher.condition.cursor.showFrame="Mostrar cuadro" AdvSceneSwitcher.condition.cursor.hideFrame="Ocultar cuadro" -AdvSceneSwitcher.condition.cursor.entry.line1="El cursor es {{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="El cursor se encuentra actualmente en {{xPos}} x {{yPos}}" +AdvSceneSwitcher.condition.cursor.layout.line1="El cursor es {{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}El cursor se encuentra actualmente en {{xPos}} x {{yPos}}" AdvSceneSwitcher.condition.scene="Escena" AdvSceneSwitcher.condition.scene.type.current="La escena actual es" AdvSceneSwitcher.condition.scene.type.previous="La escena anterior es" diff --git a/data/locale/fr-FR.ini b/data/locale/fr-FR.ini index 49e35f65..32212bd1 100644 --- a/data/locale/fr-FR.ini +++ b/data/locale/fr-FR.ini @@ -160,8 +160,8 @@ AdvSceneSwitcher.condition.cursor.button.middle="Bouton central de la souris" AdvSceneSwitcher.condition.cursor.button.right="Bouton droit de la souris" AdvSceneSwitcher.condition.cursor.showFrame="Afficher le cadre" AdvSceneSwitcher.condition.cursor.hideFrame="Masquer le cadre" -AdvSceneSwitcher.condition.cursor.entry.line1="Le curseur{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="Le curseur est actuellement à{{xPos}}x{{yPos}}" +AdvSceneSwitcher.condition.cursor.layout.line1="Le curseur{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}Le curseur est actuellement à{{xPos}}x{{yPos}}" AdvSceneSwitcher.condition.scene="Scène" AdvSceneSwitcher.condition.scene.type.current="La scène actuelle est" AdvSceneSwitcher.condition.scene.type.previous="La scène précédente est" diff --git a/data/locale/ja-JP.ini b/data/locale/ja-JP.ini index ee9629bf..5e7a3b79 100644 --- a/data/locale/ja-JP.ini +++ b/data/locale/ja-JP.ini @@ -305,8 +305,8 @@ AdvSceneSwitcher.condition.cursor.button.middle="マウスの中ボタン" AdvSceneSwitcher.condition.cursor.button.right="マウスの右ボタン" AdvSceneSwitcher.condition.cursor.showFrame="フレームを表示" AdvSceneSwitcher.condition.cursor.hideFrame="フレームを非表示" -AdvSceneSwitcher.condition.cursor.entry.line1="カーソル{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="カーソルは現在{{xPos}}x{{yPos}}にあります" +AdvSceneSwitcher.condition.cursor.layout.line1="カーソル{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}カーソルは現在{{xPos}}x{{yPos}}にあります" AdvSceneSwitcher.condition.scene="シーン" AdvSceneSwitcher.condition.scene.type.current="現在のシーンは" AdvSceneSwitcher.condition.scene.type.previous="前のシーンは" diff --git a/data/locale/pt-BR.ini b/data/locale/pt-BR.ini index a9774121..c7657626 100644 --- a/data/locale/pt-BR.ini +++ b/data/locale/pt-BR.ini @@ -268,8 +268,8 @@ AdvSceneSwitcher.condition.cursor.button.middle="Botão do meio do mouse" AdvSceneSwitcher.condition.cursor.button.right="Botão direito do mouse" AdvSceneSwitcher.condition.cursor.showFrame="Mostrar quadro" AdvSceneSwitcher.condition.cursor.hideFrame="Ocultar quadro" -AdvSceneSwitcher.condition.cursor.entry.line1="Cursor{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="O cursor está atualmente em{{xPos}}x{{yPos}}" +AdvSceneSwitcher.condition.cursor.layout.line1="Cursor{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}O cursor está atualmente em{{xPos}}x{{yPos}}" AdvSceneSwitcher.condition.scene="Cena" AdvSceneSwitcher.condition.scene.type.current="A cena atual é" AdvSceneSwitcher.condition.scene.type.previous="A cena anterior é" diff --git a/data/locale/tr-TR.ini b/data/locale/tr-TR.ini index 961b89f2..0c983949 100644 --- a/data/locale/tr-TR.ini +++ b/data/locale/tr-TR.ini @@ -96,8 +96,8 @@ AdvSceneSwitcher.condition.cursor.type.region="alanında" AdvSceneSwitcher.condition.cursor.type.moving="hareketlidir" AdvSceneSwitcher.condition.cursor.showFrame="Çerçeveyi Göster" AdvSceneSwitcher.condition.cursor.hideFrame="Çerçeveyi Gizle" -AdvSceneSwitcher.condition.cursor.entry.line1="İmleç {{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="İmleç şuanda {{xPos}} x {{yPos}}" +AdvSceneSwitcher.condition.cursor.layout.line1="İmleç {{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}İmleç şuanda {{xPos}} x {{yPos}}" AdvSceneSwitcher.condition.scene="Sahne" AdvSceneSwitcher.condition.scene.type.current="Mevcut Sahne" AdvSceneSwitcher.condition.scene.type.previous="Önceki Sahne" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 7e8c199c..382ae2e9 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -352,8 +352,8 @@ AdvSceneSwitcher.condition.cursor.button.middle="鼠标中键" AdvSceneSwitcher.condition.cursor.button.right="鼠标右键" AdvSceneSwitcher.condition.cursor.showFrame="显示边框" AdvSceneSwitcher.condition.cursor.hideFrame="隐藏边框" -AdvSceneSwitcher.condition.cursor.entry.line1="光标{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}{{toggleFrameButton}}" -AdvSceneSwitcher.condition.cursor.entry.line2="光标当前位置{{xPos}}x{{yPos}}" +AdvSceneSwitcher.condition.cursor.layout.line1="光标{{conditions}}{{buttons}}{{minX}}{{minY}}{{maxX}}{{maxY}}" +AdvSceneSwitcher.condition.cursor.layout.line2="{{toggleFrameButton}}{{drawFrameButton}}光标当前位置{{xPos}}x{{yPos}}" AdvSceneSwitcher.condition.scene="场景" AdvSceneSwitcher.condition.scene.type.current="当前场景是" AdvSceneSwitcher.condition.scene.type.previous="上一个场景是" diff --git a/plugins/base/macro-condition-cursor.cpp b/plugins/base/macro-condition-cursor.cpp index 402ba4b1..fe02a76d 100644 --- a/plugins/base/macro-condition-cursor.cpp +++ b/plugins/base/macro-condition-cursor.cpp @@ -197,7 +197,7 @@ MacroConditionCursorEdit::MacroConditionCursorEdit( connect(_drawFrame, &QPushButton::clicked, this, &MacroConditionCursorEdit::DrawFrame, Qt::QueuedConnection); - std::unordered_map widgetPlaceholders = { + const std::unordered_map widgetPlaceholders = { {"{{conditions}}", _conditions}, {"{{buttons}}", _buttons}, {"{{minX}}", _minX}, @@ -207,16 +207,16 @@ MacroConditionCursorEdit::MacroConditionCursorEdit( {"{{xPos}}", _xPos}, {"{{yPos}}", _yPos}, {"{{toggleFrameButton}}", _frameToggle}, + {"{{drawFrameButton}}", _drawFrame}, }; - QHBoxLayout *line1 = new QHBoxLayout; + auto line1 = new QHBoxLayout; PlaceWidgets(obs_module_text( - "AdvSceneSwitcher.condition.cursor.entry.line1"), + "AdvSceneSwitcher.condition.cursor.layout.line1"), line1, widgetPlaceholders); PlaceWidgets(obs_module_text( - "AdvSceneSwitcher.condition.cursor.entry.line2"), + "AdvSceneSwitcher.condition.cursor.layout.line2"), _curentPosLayout, widgetPlaceholders); - _curentPosLayout->addWidget(_drawFrame); - QVBoxLayout *mainLayout = new QVBoxLayout; + auto mainLayout = new QVBoxLayout; mainLayout->addLayout(line1); mainLayout->addLayout(_curentPosLayout); setLayout(mainLayout); @@ -345,8 +345,6 @@ void MacroConditionCursorEdit::SetWidgetVisibility() _minY->setVisible(isRegionCondition); _maxX->setVisible(isRegionCondition); _maxY->setVisible(isRegionCondition); - _frameToggle->setVisible(isRegionCondition); - _drawFrame->setVisible(isRegionCondition); SetLayoutVisible(_curentPosLayout, isRegionCondition); if (_frame.isVisible()) { ToggleFrame();