forked from quickshell/quickshell
		
	window: generate qmltypes
This commit is contained in:
		
							parent
							
								
									4e48c6eefb
								
							
						
					
					
						commit
						9980f8587e
					
				
					 9 changed files with 51 additions and 8 deletions
				
			
		| 
						 | 
					@ -44,7 +44,8 @@ target_link_libraries(quickshell-core PRIVATE quickshell-build)
 | 
				
			||||||
qt_add_qml_module(quickshell-core
 | 
					qt_add_qml_module(quickshell-core
 | 
				
			||||||
	URI Quickshell
 | 
						URI Quickshell
 | 
				
			||||||
	VERSION 0.1
 | 
						VERSION 0.1
 | 
				
			||||||
	IMPORTS Quickshell._Window
 | 
						OPTIONAL_IMPORTS Quickshell._Window
 | 
				
			||||||
 | 
						DEFAULT_IMPORTS Quickshell._Window
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries(quickshell-core PRIVATE ${QT_DEPS} CLI11::CLI11)
 | 
					target_link_libraries(quickshell-core PRIVATE ${QT_DEPS} CLI11::CLI11)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,9 @@
 | 
				
			||||||
#define QSDOC_ELEMENT
 | 
					#define QSDOC_ELEMENT
 | 
				
			||||||
#define QSDOC_NAMED_ELEMENT(name)
 | 
					#define QSDOC_NAMED_ELEMENT(name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// unmark uncreatable (will be overlayed by other types)
 | 
				
			||||||
 | 
					#define QSDOC_CREATABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// change the cname used for this type
 | 
					// change the cname used for this type
 | 
				
			||||||
#define QSDOC_CNAME(name)
 | 
					#define QSDOC_CNAME(name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,12 +7,12 @@ headers = [
 | 
				
			||||||
	"shell.hpp",
 | 
						"shell.hpp",
 | 
				
			||||||
	"variants.hpp",
 | 
						"variants.hpp",
 | 
				
			||||||
	"region.hpp",
 | 
						"region.hpp",
 | 
				
			||||||
	"proxywindow.hpp",
 | 
						"../window/proxywindow.hpp",
 | 
				
			||||||
	"persistentprops.hpp",
 | 
						"persistentprops.hpp",
 | 
				
			||||||
	"windowinterface.hpp",
 | 
						"../window/windowinterface.hpp",
 | 
				
			||||||
	"panelinterface.hpp",
 | 
						"../window/panelinterface.hpp",
 | 
				
			||||||
	"floatingwindow.hpp",
 | 
						"../window/floatingwindow.hpp",
 | 
				
			||||||
	"popupwindow.hpp",
 | 
						"../window/popupwindow.hpp",
 | 
				
			||||||
	"singleton.hpp",
 | 
						"singleton.hpp",
 | 
				
			||||||
	"lazyloader.hpp",
 | 
						"lazyloader.hpp",
 | 
				
			||||||
	"easingcurve.hpp",
 | 
						"easingcurve.hpp",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,10 @@ void QuickshellPlugin::initPlugins() {
 | 
				
			||||||
	    plugins.end()
 | 
						    plugins.end()
 | 
				
			||||||
	);
 | 
						);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::sort(plugins.begin(), plugins.end(), [](QuickshellPlugin* a, QuickshellPlugin* b) {
 | 
				
			||||||
 | 
							return b->dependencies().contains(a->name());
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (QuickshellPlugin* plugin: plugins) {
 | 
						for (QuickshellPlugin* plugin: plugins) {
 | 
				
			||||||
		plugin->init();
 | 
							plugin->init();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <qcontainerfwd.h>
 | 
					#include <qcontainerfwd.h>
 | 
				
			||||||
#include <qfunctionpointer.h>
 | 
					#include <qfunctionpointer.h>
 | 
				
			||||||
 | 
					#include <qlist.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class EngineGeneration;
 | 
					class EngineGeneration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +15,8 @@ public:
 | 
				
			||||||
	void operator=(QuickshellPlugin&&) = delete;
 | 
						void operator=(QuickshellPlugin&&) = delete;
 | 
				
			||||||
	void operator=(const QuickshellPlugin&) = delete;
 | 
						void operator=(const QuickshellPlugin&) = delete;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual QString name() { return QString(); }
 | 
				
			||||||
 | 
						virtual QList<QString> dependencies() { return {}; }
 | 
				
			||||||
	virtual bool applies() { return true; }
 | 
						virtual bool applies() { return true; }
 | 
				
			||||||
	virtual void init() {}
 | 
						virtual void init() {}
 | 
				
			||||||
	virtual void registerTypes() {}
 | 
						virtual void registerTypes() {}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#include <qguiapplication.h>
 | 
					#include <qguiapplication.h>
 | 
				
			||||||
 | 
					#include <qlist.h>
 | 
				
			||||||
#include <qlogging.h>
 | 
					#include <qlogging.h>
 | 
				
			||||||
#include <qqml.h>
 | 
					#include <qqml.h>
 | 
				
			||||||
#include <qtenvironmentvariables.h>
 | 
					#include <qtenvironmentvariables.h>
 | 
				
			||||||
| 
						 | 
					@ -15,6 +16,8 @@ void installPopupPositioner();
 | 
				
			||||||
namespace {
 | 
					namespace {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WaylandPlugin: public QuickshellPlugin {
 | 
					class WaylandPlugin: public QuickshellPlugin {
 | 
				
			||||||
 | 
						QList<QString> dependencies() override { return {"window"}; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool applies() override {
 | 
						bool applies() override {
 | 
				
			||||||
		auto isWayland = QGuiApplication::platformName() == "wayland";
 | 
							auto isWayland = QGuiApplication::platformName() == "wayland";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,12 +11,17 @@ qt_add_qml_module(quickshell-window
 | 
				
			||||||
	VERSION 0.1
 | 
						VERSION 0.1
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(quickshell-window-init OBJECT init.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries(quickshell-window PRIVATE ${QT_DEPS} Qt6::QuickPrivate)
 | 
					target_link_libraries(quickshell-window PRIVATE ${QT_DEPS} Qt6::QuickPrivate)
 | 
				
			||||||
 | 
					target_link_libraries(quickshell-windowplugin PRIVATE ${QT_DEPS})
 | 
				
			||||||
 | 
					target_link_libraries(quickshell-window-init PRIVATE ${QT_DEPS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
qs_pch(quickshell-window)
 | 
					qs_pch(quickshell-window)
 | 
				
			||||||
qs_pch(quickshell-windowplugin)
 | 
					qs_pch(quickshell-windowplugin)
 | 
				
			||||||
 | 
					qs_pch(quickshell-window-init)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries(quickshell PRIVATE quickshell-windowplugin)
 | 
					target_link_libraries(quickshell PRIVATE quickshell-windowplugin quickshell-window-init)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (BUILD_TESTING)
 | 
					if (BUILD_TESTING)
 | 
				
			||||||
	add_subdirectory(test)
 | 
						add_subdirectory(test)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								src/window/init.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/window/init.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					#include "../core/plugin.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WindowPlugin: public QuickshellPlugin {
 | 
				
			||||||
 | 
						// _Window has to be registered before wayland or x11 modules, otherwise module overlays
 | 
				
			||||||
 | 
						// will apply in the wrong order.
 | 
				
			||||||
 | 
						QString name() override { return "window"; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void registerTypes() override {
 | 
				
			||||||
 | 
							qmlRegisterModuleImport(
 | 
				
			||||||
 | 
							    "Quickshell",
 | 
				
			||||||
 | 
							    QQmlModuleImportModuleAny,
 | 
				
			||||||
 | 
							    "Quickshell._Window",
 | 
				
			||||||
 | 
							    QQmlModuleImportLatest
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QS_REGISTER_PLUGIN(WindowPlugin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace
 | 
				
			||||||
| 
						 | 
					@ -128,7 +128,9 @@ class PanelWindowInterface: public WindowInterface {
 | 
				
			||||||
	/// Note: On Wayland this property corrosponds to @@Quickshell.Wayland.WlrLayershell.keyboardFocus.
 | 
						/// Note: On Wayland this property corrosponds to @@Quickshell.Wayland.WlrLayershell.keyboardFocus.
 | 
				
			||||||
	Q_PROPERTY(bool focusable READ focusable WRITE setFocusable NOTIFY focusableChanged);
 | 
						Q_PROPERTY(bool focusable READ focusable WRITE setFocusable NOTIFY focusableChanged);
 | 
				
			||||||
	// clang-format on
 | 
						// clang-format on
 | 
				
			||||||
	QSDOC_NAMED_ELEMENT(PanelWindow);
 | 
						QML_NAMED_ELEMENT(PanelWindow);
 | 
				
			||||||
 | 
						QML_UNCREATABLE("No PanelWindow backend loaded.");
 | 
				
			||||||
 | 
						QSDOC_CREATABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	explicit PanelWindowInterface(QObject* parent = nullptr): WindowInterface(parent) {}
 | 
						explicit PanelWindowInterface(QObject* parent = nullptr): WindowInterface(parent) {}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue