mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
Merge pull request #2690 from Scrxtchy/window-projector-size
UI: Add "Fit window to content" to windowed projectors
This commit is contained in:
commit
8b2b09bec3
@ -42,6 +42,7 @@ SceneWindow="Windowed Projector (Scene)"
|
||||
SourceWindow="Windowed Projector (Source)"
|
||||
MultiviewProjector="Multiview (Fullscreen)"
|
||||
MultiviewWindowed="Multiview (Windowed)"
|
||||
ResizeProjectorWindowToContent="Fit window to content"
|
||||
Clear="Clear"
|
||||
Revert="Revert"
|
||||
Show="Show"
|
||||
|
@ -828,10 +828,15 @@ void OBSProjector::mousePressEvent(QMouseEvent *event)
|
||||
SLOT(OpenFullScreenProjector()));
|
||||
popup.addMenu(projectorMenu);
|
||||
|
||||
if (GetMonitor() > -1)
|
||||
if (GetMonitor() > -1) {
|
||||
popup.addAction(QTStr("Windowed"), this,
|
||||
SLOT(OpenWindowedProjector()));
|
||||
|
||||
} else if (!this->isMaximized()) {
|
||||
popup.addAction(QTStr("ResizeProjectorWindowToContent"),
|
||||
this, SLOT(ResizeToContent()));
|
||||
}
|
||||
|
||||
popup.addAction(QTStr("Close"), this, SLOT(EscapeTriggered()));
|
||||
popup.exec(QCursor::pos());
|
||||
}
|
||||
@ -1055,6 +1060,33 @@ void OBSProjector::OpenWindowedProjector()
|
||||
UpdateProjectorTitle(QT_UTF8(obs_source_get_name(source)));
|
||||
}
|
||||
|
||||
void OBSProjector::ResizeToContent()
|
||||
{
|
||||
OBSSource source = GetSource();
|
||||
uint32_t targetCX;
|
||||
uint32_t targetCY;
|
||||
int x, y, newX, newY;
|
||||
float scale;
|
||||
|
||||
if (source) {
|
||||
targetCX = std::max(obs_source_get_width(source), 1u);
|
||||
targetCY = std::max(obs_source_get_height(source), 1u);
|
||||
} else {
|
||||
struct obs_video_info ovi;
|
||||
obs_get_video_info(&ovi);
|
||||
targetCX = ovi.base_width;
|
||||
targetCY = ovi.base_height;
|
||||
}
|
||||
|
||||
QSize size = this->size();
|
||||
GetScaleAndCenterPos(targetCX, targetCY, size.width(), size.height(), x,
|
||||
y, scale);
|
||||
|
||||
newX = size.width() - (x * 2);
|
||||
newY = size.height() - (y * 2);
|
||||
resize(newX, newY);
|
||||
}
|
||||
|
||||
void OBSProjector::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
EscapeTriggered();
|
||||
|
@ -78,6 +78,7 @@ private:
|
||||
private slots:
|
||||
void EscapeTriggered();
|
||||
void OpenFullScreenProjector();
|
||||
void ResizeToContent();
|
||||
void OpenWindowedProjector();
|
||||
|
||||
public:
|
||||
|
Loading…
Reference in New Issue
Block a user