improve resize handler db click behavior
This commit is contained in:
parent
989de57f33
commit
6a6fea8ac9
|
@ -429,18 +429,7 @@ bool FramelessHelper::eventFilter(QObject *object, QEvent *event)
|
||||||
auto ev = static_cast<QMouseEvent *>(event);
|
auto ev = static_cast<QMouseEvent *>(event);
|
||||||
if (isHoverResizeHandler() && ev->button() == Qt::LeftButton) {
|
if (isHoverResizeHandler() && ev->button() == Qt::LeftButton) {
|
||||||
// double click resize handler
|
// double click resize handler
|
||||||
if (m_clickedFrameSection == Qt::TopSection
|
handleResizeHandlerDblClicked();
|
||||||
|| m_clickedFrameSection == Qt::BottomSection) {
|
|
||||||
QRect screenRect = m_window->screen()->availableGeometry();
|
|
||||||
QRect winRect = m_window->geometry();
|
|
||||||
m_window->setGeometry(winRect.x(), 0, winRect.width(), screenRect.height());
|
|
||||||
} else if (m_clickedFrameSection == Qt::LeftSection
|
|
||||||
|| m_clickedFrameSection == Qt::RightSection) {
|
|
||||||
QRect screenRect = m_window->screen()->availableGeometry();
|
|
||||||
QRect winRect = m_window->geometry();
|
|
||||||
m_window->setGeometry(0, winRect.y(), screenRect.width(), winRect.height());
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (isInTitlebarArea(ev->pos()) && ev->button() == Qt::LeftButton) {
|
} else if (isInTitlebarArea(ev->pos()) && ev->button() == Qt::LeftButton) {
|
||||||
Qt::WindowStates states = m_window->windowState();
|
Qt::WindowStates states = m_window->windowState();
|
||||||
if (states & Qt::WindowMaximized)
|
if (states & Qt::WindowMaximized)
|
||||||
|
@ -460,6 +449,42 @@ bool FramelessHelper::eventFilter(QObject *object, QEvent *event)
|
||||||
return filterOut;
|
return filterOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FramelessHelper::handleResizeHandlerDblClicked()
|
||||||
|
{
|
||||||
|
QRect screenRect = m_window->screen()->availableGeometry();
|
||||||
|
QRect winRect = m_window->geometry();
|
||||||
|
|
||||||
|
switch (m_clickedFrameSection)
|
||||||
|
{
|
||||||
|
case Qt::TopSection:
|
||||||
|
m_window->setGeometry(winRect.x(), 0, winRect.width(), winRect.height() + winRect.y());
|
||||||
|
break;
|
||||||
|
case Qt::BottomSection:
|
||||||
|
m_window->setGeometry(winRect.x(), winRect.y(), winRect.width(), screenRect.height() - winRect.y());
|
||||||
|
break;
|
||||||
|
case Qt::LeftSection:
|
||||||
|
m_window->setGeometry(0, winRect.y(), winRect.x() + winRect.width(), winRect.height());
|
||||||
|
break;
|
||||||
|
case Qt::RightSection:
|
||||||
|
m_window->setGeometry(winRect.x(), winRect.y(), screenRect.width() - winRect.x(), winRect.height());
|
||||||
|
break;
|
||||||
|
case Qt::TopLeftSection:
|
||||||
|
m_window->setGeometry(0, 0, winRect.x() + winRect.width(), winRect.y() + winRect.height());
|
||||||
|
break;
|
||||||
|
case Qt::TopRightSection:
|
||||||
|
m_window->setGeometry(winRect.x(), 0, screenRect.width() - winRect.x(), winRect.y() + winRect.height());
|
||||||
|
break;
|
||||||
|
case Qt::BottomLeftSection:
|
||||||
|
m_window->setGeometry(0, winRect.y(), winRect.x() + winRect.width(), screenRect.height() - winRect.y());
|
||||||
|
break;
|
||||||
|
case Qt::BottomRightSection:
|
||||||
|
m_window->setGeometry(winRect.x(), winRect.y(), screenRect.width() - winRect.x(), screenRect.height() - winRect.y());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
FRAMELESSHELPER_END_NAMESPACE
|
FRAMELESSHELPER_END_NAMESPACE
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -93,6 +93,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject *object, QEvent *event) override;
|
bool eventFilter(QObject *object, QEvent *event) override;
|
||||||
|
void handleResizeHandlerDblClicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWindow *m_window;
|
QWindow *m_window;
|
||||||
|
|
Loading…
Reference in New Issue