__windowShellCreatedSignal.connect(slot, func);
}
+void DSZone::registerCallbackWindowStackChanged(DSObject *slot, std::function<void(std::shared_ptr<DSWindow>)> func)
+{
+ __windowStackChangedSignal.connect(slot, func);
+}
+
void DSZone::registerCallbackWindowDestroy(DSObject *slot, std::function<void(std::shared_ptr<DSWindow>)> func)
{
__windowDestroySignal.connect(slot, func);
__windowList.push_front(window);
__stackChanged = true;
+ __updateWindowOrder();
+
+ std::shared_ptr<DSWindow> wTop(__windowList.front());
+ __windowStackChangedSignal.emit(wTop);
}
void DSZone::__appendWindowList(std::shared_ptr<DSWindow> window)
__windowList.push_back(window);
__stackChanged = true;
+ __updateWindowOrder();
+
+ std::shared_ptr<DSWindow> wTop(__windowList.front());
+ __windowStackChangedSignal.emit(wTop);
}
std::shared_ptr<DSWindow> DSZone::__findWindow(DSWaylandSurface *dswlSurface)
{
__windowDestroySignal.emit(window);
__windowList.remove(window);
+
+ __stackChanged = true;
+ __updateWindowOrder();
+
+ std::shared_ptr<DSWindow> wTop(__windowList.front());
+ __windowStackChangedSignal.emit(wTop);
+}
+
+void DSZone::__updateWindowOrder(void)
+{
+ uint32_t zOrder = 0;
+ std::list<std::shared_ptr<DSWindow>> wList = getWindowList();
+ for (auto w : wList)
+ {
+ /* TODO : check if the w is in its visible state */
+ w->setZOrder(zOrder++);
+ }
}
std::shared_ptr<DSWindowShell> DSZone::__createWindowShell(std::shared_ptr<DSWindow> window)
void registerCallbackWindowCreated(DSObject *slot, std::function<void(std::shared_ptr<DSWindow>)> func);
void registerCallbackWindowDestroy(DSObject *slot, std::function<void(std::shared_ptr<DSWindow>)> func);
void registerCallbackWindowShellCreated(DSObject *slot, std::function<void(std::shared_ptr<DSWindowShell>)> func);
+ void registerCallbackWindowStackChanged(DSObject *slot, std::function<void(std::shared_ptr<DSWindow>)> func);
// emit functions for testing
void callCallbackWindowCreated();
std::shared_ptr<DSWindow> __createWindow(std::shared_ptr<DSWaylandSurface> waylandSurface);
void __destroyWindow(std::shared_ptr<DSWindow> window);
+ void __updateWindowOrder(void);
std::shared_ptr<DSWindowShell> __createWindowShell(std::shared_ptr<DSWindow> window);
void __destroyWindowShell(DSWindowShell* windowShell, DSWaylandSurface *surface);
// signals
DSSignal<std::shared_ptr<DSWindow>> __windowCreatedSignal;
DSSignal<std::shared_ptr<DSWindow>> __windowDestroySignal;
+ DSSignal<std::shared_ptr<DSWindow>> __windowStackChangedSignal;
DSSignal<std::shared_ptr<DSWindowShell>> __windowShellCreatedSignal;
DSSignal<std::shared_ptr<DSWindowShell>> __windowShellDestroySignal;
};