Fixes and improvements to the graphics module

This commit is contained in:
IlyaShurupov 2024-07-17 09:40:49 +03:00 committed by Ilya Shurupov
parent 860474654a
commit 5e3f5594b8
19 changed files with 161 additions and 55 deletions

View file

@ -9,7 +9,7 @@ class ExampleGUI : public Application {
public:
ExampleGUI() = default;
void processFrame(EventHandler* eventHandler) override {
void processFrame(EventHandler* eventHandler, halnf delta) override {
auto rec = RectF({ 0, 0 }, mWindow->getSize());
mGui.updateConfigWrapper(mWidgetManager);

View file

@ -12,7 +12,7 @@ public:
// mGui.mPreview = true;
}
void processFrame(EventHandler* eventHandler) override {
void processFrame(EventHandler* eventHandler, halnf) override {
const auto rec = RectF({ 0, 0 }, mWindow->getSize());
mGui.setArea(rec);

View file

@ -37,6 +37,8 @@ void FloatingWidget::eventUpdateConfiguration(WidgetManager& wm) {
}
void FloatingWidget::checkFloating(const Events& events) {
mDropped = false;
if (this->mHeader.isHolding() && events.getPointerDelta().length2() > 4) {
mFloating = true;
}
@ -44,6 +46,7 @@ void FloatingWidget::checkFloating(const Events& events) {
if (mFloating && this->mHeader.isReleased()) {
mFloating = false;
this->mHeader.clearEvents();
mDropped = true;
}
if (mFloating) {

View file

@ -19,11 +19,11 @@ void Widget::procWrapper(const Events& events, const RectF& parentArea) {
if (mHandlesEvents) {
eventProcess(events);
for (auto child : mChildWidgets) {
child->procWrapper(events, mVisibleArea);
}
eventProcess(events);
}
}

View file

@ -17,17 +17,18 @@ void WorkspaceWidget::eventProcess(const Events& events) {
for (auto floatingChild : mFloatingLayer.mChildWidgets) {
auto widget = dynamic_cast<FloatingWidget*>(floatingChild.data());
if (!widget) continue;
if (widget->isFloating()) {
if (widget->isReleased()) {
auto side = mDockSpace.getPreviewSide();
if (side != GridLayoutWidget::NONE) {
mFloatingLayer.mChildWidgets.removeNode(mFloatingLayer.mChildWidgets.find(widget));
widget->setCollapsed(false);
widget->stopFloating();
mDockSpace.addSideWidget(widget, side);
}
}
if (widget->mDropped) {
auto side = mDockSpace.getPreviewSide();
if (side != GridLayoutWidget::NONE) {
mFloatingLayer.mChildWidgets.removeNode(mFloatingLayer.mChildWidgets.find(widget));
widget->setCollapsed(false);
widget->stopFloating();
mDockSpace.addSideWidget(widget, side);
}
}
if (widget->isFloating()) {
mDockSpace.mHandlesEvents = true;
mDockSpace.mPreview = true;
}

View file

@ -32,5 +32,7 @@ namespace tp {
public:
bool mResizable = true;
bool mDropped = false;
};
}