viewerdisplay: transform drag events by valign too

This commit is contained in:
itsmattkc
2022-08-25 10:23:08 -07:00
parent cda9a9da6c
commit 541706e55e
2 changed files with 21 additions and 12 deletions
+19 -12
View File
@@ -1117,7 +1117,7 @@ void ViewerDisplayWidget::ForwardDragEventToTextEdit(T *e)
if constexpr (std::is_same_v<T, QDragLeaveEvent>) {
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();