0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

Fix scene editing for device pixel ratios ≠ 1

Fixes #177
This commit is contained in:
Palana 2014-07-16 02:01:59 +02:00
parent fa70b40587
commit 1759d28ee2
2 changed files with 12 additions and 8 deletions

View File

@ -1107,8 +1107,9 @@ void OBSBasic::RenderMain(void *data, uint32_t cx, uint32_t cy)
/* --------------------------------------- */
float right = float(window->ui->preview->width()) - window->previewX;
float bottom = float(window->ui->preview->height()) - window->previewY;
QSize previewSize = GetPixelSize(window->ui->preview);
float right = float(previewSize.width()) - window->previewX;
float bottom = float(previewSize.height()) - window->previewY;
gs_ortho(-window->previewX, right,
-window->previewY, bottom,

View File

@ -23,10 +23,12 @@ OBSBasicPreview::OBSBasicPreview(QWidget *parent, Qt::WindowFlags flags)
vec2 OBSBasicPreview::GetMouseEventPos(QMouseEvent *event)
{
OBSBasic *main = reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
float pixelRatio = main->devicePixelRatio();
float scale = pixelRatio / main->previewScale;
vec2 pos;
vec2_set(&pos,
(float(event->x()) - main->previewX) / main->previewScale,
(float(event->y()) - main->previewY) / main->previewScale);
(float(event->x()) - main->previewX / pixelRatio) * scale,
(float(event->y()) - main->previewY / pixelRatio) * scale);
return pos;
}
@ -288,7 +290,7 @@ void OBSBasicPreview::GetStretchHandleData(const vec2 &pos)
if (!scene)
return;
HandleFindData data(pos, main->previewScale);
HandleFindData data(pos, main->previewScale / main->devicePixelRatio());
obs_scene_enum_items(scene, FindHandleAtPos, &data);
stretchItem = std::move(data.item);
@ -323,8 +325,9 @@ void OBSBasicPreview::GetStretchHandleData(const vec2 &pos)
void OBSBasicPreview::mousePressEvent(QMouseEvent *event)
{
OBSBasic *main = reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
float x = float(event->x()) - main->previewX;
float y = float(event->y()) - main->previewY;
float pixelRatio = main->devicePixelRatio();
float x = float(event->x()) - main->previewX / pixelRatio;
float y = float(event->y()) - main->previewY / pixelRatio;
if (event->button() != Qt::LeftButton)
return;
@ -334,7 +337,7 @@ void OBSBasicPreview::mousePressEvent(QMouseEvent *event)
vec2_set(&startPos, x, y);
GetStretchHandleData(startPos);
vec2_divf(&startPos, &startPos, main->previewScale);
vec2_divf(&startPos, &startPos, main->previewScale / pixelRatio);
startPos.x = std::round(startPos.x);
startPos.y = std::round(startPos.y);