12#include "FloatingWindowWidget_p.h"
13#include "../DockRegistry_p.h"
14#include "../DropArea_p.h"
15#include "../Logging_p.h"
16#include "../TitleBar_p.h"
17#include "../Utils_p.h"
20#include <QApplication>
24#include <QWindowStateChangeEvent>
29 FloatingWindowFlags flags)
30 : FloatingWindow(suggestedGeometry, parent, flags)
36FloatingWindowWidget::FloatingWindowWidget(Frame *frame,
QRect suggestedGeometry,
MainWindowBase *parent)
37 : FloatingWindow(frame, suggestedGeometry, parent)
43void FloatingWindowWidget::paintEvent(
QPaintEvent *ev)
55 const qreal halfPenWidth = p.pen().widthF() / 2;
56 const QRectF rectf = rect();
57 p.drawRect(rectf.
adjusted(halfPenWidth, halfPenWidth, -halfPenWidth, -halfPenWidth));
60bool FloatingWindowWidget::event(
QEvent *ev)
69 if (m_titleBar->isFloating()) {
70 m_titleBar->onFloatClicked();
81 m_screenChangedConnection =
83 [
this] { Q_EMIT DockRegistry::self()->windowChangedScreen(windowHandle()); });
85 windowHandle()->installEventFilter(
this);
88 return FloatingWindow::event(ev);
102 m_lastWindowManagerState = windowHandle()->windowState();
103 Q_EMIT windowStateChanged();
107 return FloatingWindow::eventFilter(o, ev);
110void FloatingWindowWidget::init()
112 m_vlayout->setSpacing(0);
114 m_vlayout->addWidget(m_titleBar);
115 m_vlayout->addWidget(m_dropArea);
117 connect(DockRegistry::self(), &DockRegistry::windowChangedScreen,
this, [
this](
QWindow *w) {
118 if (w == window()->windowHandle())
123void FloatingWindowWidget::updateMargins()
125 m_vlayout->setContentsMargins(
QMargins(4, 4, 4, 4) * logicalDpiFactor(
this));
The MainWindow base-class. MainWindow and MainWindowBase are only split in two so we can share some c...
NonClientAreaMouseButtonDblClick
bool spontaneous() const const
QEvent::Type type() const const
QRectF adjusted(qreal dx1, qreal dy1, qreal dx2, qreal dy2) const const
void screenChanged(QScreen *screen)