Files
pilotclient/samples/blackgui2/dockwindow.cpp
2014-03-27 01:11:32 +01:00

46 lines
1.2 KiB
C++

#include "dockwindow.h"
#include "ui_dockwindow.h"
#include <QMouseEvent>
CDockWindow::CDockWindow(GuiModes::WindowMode windowMode, QWidget *parent) :
QMainWindow(parent, windowMode == GuiModes::WindowFrameless ? (Qt::Window | Qt::FramelessWindowHint) : Qt::Tool),
ui(new Ui::CDockWindow),
m_windowMode(windowMode)
{
ui->setupUi(this);
connect(this->ui->dw_Edit, &QDockWidget::topLevelChanged, this, &CDockWindow::dockWindowTopLevelChanged);
}
void CDockWindow::mouseMoveEvent(QMouseEvent *event)
{
if (this->m_windowMode == GuiModes::WindowFrameless && event->buttons() & Qt::LeftButton)
{
move(event->globalPos() - this->m_dragPosition);
event->accept();
return;
}
QWidget::mouseMoveEvent(event);
}
void CDockWindow::mousePressEvent(QMouseEvent *event)
{
if (this->m_windowMode == GuiModes::WindowFrameless && event->button() == Qt::LeftButton)
{
this->m_dragPosition = event->globalPos() - this->frameGeometry().topLeft();
event->accept();
return;
}
QWidget::mousePressEvent(event);
}
void CDockWindow::dockWindowTopLevelChanged(bool topLevel)
{
if (topLevel)
this->adjustSize();
}
CDockWindow::~CDockWindow()
{
delete ui;
}