Frame now takes care of its own resize handler
No need to set it from outside
This commit is contained in:
@@ -493,9 +493,7 @@ void MainWindowBase::overlayOnSideBar(DockWidgetBase *dw)
|
||||
frame->addWidget(dw);
|
||||
d->updateOverlayGeometry(dw->d->lastPositions().lastOverlayedGeometry(sb->location()).size());
|
||||
|
||||
auto resizeHandler = new WidgetResizeHandler(true, frame);
|
||||
resizeHandler->setAllowedResizeSides(d->allowedResizeSides(sb->location()));
|
||||
|
||||
frame->setAllowedResizeSides(d->allowedResizeSides(sb->location()));
|
||||
frame->QWidgetAdapter::show();
|
||||
|
||||
Q_EMIT dw->isOverlayedChanged(true);
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "TabWidget_p.h"
|
||||
#include "TitleBar_p.h"
|
||||
#include "Utils_p.h"
|
||||
#include "WidgetResizeHandler_p.h"
|
||||
|
||||
#include <QCloseEvent>
|
||||
#include <QTimer>
|
||||
@@ -75,6 +76,9 @@ Frame::~Frame()
|
||||
if (m_layoutItem)
|
||||
m_layoutItem->unref();
|
||||
|
||||
delete m_resizeHandler;
|
||||
m_resizeHandler = nullptr;
|
||||
|
||||
DockRegistry::self()->unregisterFrame(this);
|
||||
|
||||
// Run some disconnects() too, so we don't receive signals during destruction:
|
||||
@@ -747,3 +751,15 @@ bool Frame::anyDockWidgetsHas(DockWidgetBase::LayoutSaverOption option) const
|
||||
return dw->layoutSaverOptions() & option;
|
||||
});
|
||||
}
|
||||
|
||||
void Frame::setAllowedResizeSides(CursorPositions sides)
|
||||
{
|
||||
if (sides) {
|
||||
delete m_resizeHandler;
|
||||
m_resizeHandler = new WidgetResizeHandler(true, this);
|
||||
m_resizeHandler->setAllowedResizeSides(sides);
|
||||
} else {
|
||||
delete m_resizeHandler;
|
||||
m_resizeHandler = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ class TabWidget;
|
||||
class DockWidgetBase;
|
||||
class FloatingWindow;
|
||||
class MainWindowBase;
|
||||
class WidgetResizeHandler;
|
||||
|
||||
/**
|
||||
* @brief A DockWidget wrapper that adds a QTabWidget and a TitleBar
|
||||
@@ -250,6 +251,10 @@ public:
|
||||
///@brief Returns whether at least one dock widget has the specified layout saver option set
|
||||
bool anyDockWidgetsHas(DockWidgetBase::LayoutSaverOption) const;
|
||||
|
||||
/// @brief Usually we do resize via the native window manager, but if a widget is docked like
|
||||
/// in MDI mode, or in overlayed mode then we allow the user to resize with mouse
|
||||
void setAllowedResizeSides(CursorPositions sides);
|
||||
|
||||
Q_SIGNALS:
|
||||
void currentDockWidgetChanged(KDDockWidgets::DockWidgetBase *);
|
||||
void numDockWidgetsChanged();
|
||||
@@ -319,6 +324,7 @@ private:
|
||||
void setLayoutWidget(LayoutWidget *);
|
||||
|
||||
LayoutWidget *m_layoutWidget = nullptr;
|
||||
WidgetResizeHandler *m_resizeHandler = nullptr;
|
||||
FrameOptions m_options = FrameOption_None;
|
||||
QPointer<Layouting::Item> m_layoutItem;
|
||||
bool m_updatingTitleBar = false;
|
||||
|
||||
Reference in New Issue
Block a user