From 541706e55ed32895bb0e304c10b940fbaaee5f3e Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Thu, 25 Aug 2022 10:23:08 -0700 Subject: [PATCH] viewerdisplay: transform drag events by valign too --- app/widget/viewer/viewerdisplay.cpp | 31 ++++++++++++++++++----------- app/widget/viewer/viewerdisplay.h | 2 ++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/app/widget/viewer/viewerdisplay.cpp b/app/widget/viewer/viewerdisplay.cpp index 40bcc9f2d..64309ea2d 100644 --- a/app/widget/viewer/viewerdisplay.cpp +++ b/app/widget/viewer/viewerdisplay.cpp @@ -1117,7 +1117,7 @@ void ViewerDisplayWidget::ForwardDragEventToTextEdit(T *e) if constexpr (std::is_same_v) { text_edit_->dragLeaveEvent(e); } else { - T relay(GetVirtualPosForTextEdit(e->posF()).toPoint(), + T relay(AdjustPosByVAlign(GetVirtualPosForTextEdit(e->posF())).toPoint(), e->possibleActions(), e->mimeData(), e->mouseButtons(), @@ -1149,17 +1149,7 @@ bool ViewerDisplayWidget::ForwardMouseEventToTextEdit(QMouseEvent *event, bool c } } - switch (active_text_gizmo_->GetVerticalAlignment()) { - case Qt::AlignTop: - // Do nothing - break; - case Qt::AlignVCenter: - local_pos.setY(local_pos.y() - text_edit_->height()/2 + text_edit_->document()->size().height()/2); - break; - case Qt::AlignBottom: - local_pos.setY(local_pos.y() - text_edit_->height() + text_edit_->document()->size().height()); - break; - } + local_pos = AdjustPosByVAlign(local_pos); event->setLocalPos(local_pos); return ForwardEventToTextEdit(event); @@ -1171,6 +1161,23 @@ bool ViewerDisplayWidget::ForwardEventToTextEdit(QEvent *event) return event->isAccepted(); } +QPointF ViewerDisplayWidget::AdjustPosByVAlign(QPointF p) +{ + switch (active_text_gizmo_->GetVerticalAlignment()) { + case Qt::AlignTop: + // Do nothing + break; + case Qt::AlignVCenter: + p.setY(p.y() - text_edit_->height()/2 + text_edit_->document()->size().height()/2); + break; + case Qt::AlignBottom: + p.setY(p.y() - text_edit_->height() + text_edit_->document()->size().height()); + break; + } + + return p; +} + void ViewerDisplayWidget::CloseTextEditor() { text_edit_->deleteLater(); diff --git a/app/widget/viewer/viewerdisplay.h b/app/widget/viewer/viewerdisplay.h index 5e7c8dbe2..ab39a2b10 100644 --- a/app/widget/viewer/viewerdisplay.h +++ b/app/widget/viewer/viewerdisplay.h @@ -286,6 +286,8 @@ private: bool ForwardMouseEventToTextEdit(QMouseEvent *event, bool check_if_outside = false); bool ForwardEventToTextEdit(QEvent *event); + QPointF AdjustPosByVAlign(QPointF p); + void CloseTextEditor(); /**