forked from quickshell/quickshell
core/reloader: fix Quickshell.reload not working
Has been broken since engine generations were introduced.
This commit is contained in:
parent
4eb5dc5593
commit
c6bf826031
|
@ -12,6 +12,8 @@
|
|||
#include "shell.hpp"
|
||||
#include "singleton.hpp"
|
||||
|
||||
class RootWrapper;
|
||||
|
||||
class EngineGeneration: public QObject {
|
||||
Q_OBJECT;
|
||||
|
||||
|
@ -28,6 +30,7 @@ public:
|
|||
|
||||
static EngineGeneration* findObjectGeneration(QObject* object);
|
||||
|
||||
RootWrapper* wrapper = nullptr;
|
||||
QmlScanner scanner;
|
||||
QsUrlInterceptor urlInterceptor;
|
||||
QsInterceptNetworkAccessManagerFactory interceptNetFactory;
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <qvariant.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "generation.hpp"
|
||||
#include "qmlscreen.hpp"
|
||||
#include "rootwrapper.hpp"
|
||||
|
||||
|
@ -144,8 +145,8 @@ QQmlListProperty<QuickshellScreenInfo> QuickshellGlobal::screens() {
|
|||
}
|
||||
|
||||
void QuickshellGlobal::reload(bool hard) {
|
||||
auto* rootobj = QQmlEngine::contextForObject(this)->engine()->parent();
|
||||
auto* root = qobject_cast<RootWrapper*>(rootobj);
|
||||
auto* generation = EngineGeneration::findObjectGeneration(this);
|
||||
auto* root = generation == nullptr ? nullptr : generation->wrapper;
|
||||
|
||||
if (root == nullptr) {
|
||||
qWarning() << "cannot find RootWrapper for reload, ignoring request";
|
||||
|
|
|
@ -46,6 +46,7 @@ void RootWrapper::reloadGraph(bool hard) {
|
|||
scanner.scanQmlFile(this->rootPath);
|
||||
|
||||
auto* generation = new EngineGeneration(std::move(scanner));
|
||||
generation->wrapper = this;
|
||||
|
||||
// todo: move into EngineGeneration
|
||||
if (this->generation != nullptr) {
|
||||
|
|
Loading…
Reference in a new issue