diff --git a/src/capture/capturearea.cpp b/src/capture/capturearea.cpp index 8345ab6..bcfe237 100644 --- a/src/capture/capturearea.cpp +++ b/src/capture/capturearea.cpp @@ -12,7 +12,8 @@ CaptureArea::CaptureArea(const QRect &rect, const Settings &settings) { } -TaskPtr CaptureArea::task(const QPixmap &pixmap) const +TaskPtr CaptureArea::task(const QPixmap &pixmap, + const QPoint &pixmapOffset) const { if (pixmap.isNull() || !isValid()) return {}; @@ -21,7 +22,7 @@ TaskPtr CaptureArea::task(const QPixmap &pixmap) const task->generation = generation_; task->useHunspell = useHunspell_; task->captured = pixmap.copy(rect_); - task->capturePoint = rect_.topLeft(); + task->capturePoint = pixmapOffset + rect_.topLeft(); task->sourceLanguage = sourceLanguage_; if (task->sourceLanguage.isEmpty()) task->error += QObject::tr("No source language set"); diff --git a/src/capture/capturearea.h b/src/capture/capturearea.h index a1b5a21..483f37a 100644 --- a/src/capture/capturearea.h +++ b/src/capture/capturearea.h @@ -11,7 +11,7 @@ class CaptureArea { public: CaptureArea(const QRect& rect, const Settings& settings); - TaskPtr task(const QPixmap& pixmap) const; + TaskPtr task(const QPixmap& pixmap, const QPoint& pixmapOffset) const; void setGeneration(uint generation); bool isValid() const; diff --git a/src/capture/captureareaselector.cpp b/src/capture/captureareaselector.cpp index a719293..3dc1e6a 100644 --- a/src/capture/captureareaselector.cpp +++ b/src/capture/captureareaselector.cpp @@ -339,7 +339,7 @@ void CaptureAreaSelector::customize(const std::shared_ptr &area) edited_ = area; editor_->show(); const auto topLeft = service::geometry::cornerAtPoint( - area->rect().center(), editor_->size(), geometry()); + area->rect().center(), editor_->size(), QRect({}, size())); editor_->move(topLeft); update(); } diff --git a/src/capture/capturer.cpp b/src/capture/capturer.cpp index d186365..bef208c 100644 --- a/src/capture/capturer.cpp +++ b/src/capture/capturer.cpp @@ -91,7 +91,7 @@ void Capturer::selected(const CaptureArea &area) selector_->hide(); SOFT_ASSERT(!pixmap_.isNull(), return manager_.captureCanceled()) - auto task = area.task(pixmap_); + auto task = area.task(pixmap_, pixmapOffset_); if (task) manager_.captured(task); else