Add a (temporary) way to attach popups to layer surfaces
The new API is temporary. It's needed to help us with porting plasma to the layer shell protocol until Qt 6.6 is released, which includes QWaylandShellSurface::attachPopup().
This commit is contained in:
		
							parent
							
								
									2985398375
								
							
						
					
					
						commit
						fdab1544fb
					
				
					 2 changed files with 26 additions and 0 deletions
				
			
		| 
						 | 
					@ -6,6 +6,9 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "window.h"
 | 
					#include "window.h"
 | 
				
			||||||
#include "../qwaylandlayershellintegration_p.h"
 | 
					#include "../qwaylandlayershellintegration_p.h"
 | 
				
			||||||
 | 
					#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
 | 
				
			||||||
 | 
					#include "../qwaylandlayersurface_p.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <layershellqt_logging.h>
 | 
					#include <layershellqt_logging.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -121,6 +124,21 @@ void Window::setDesiredOutput(QScreen *output)
 | 
				
			||||||
    d->desiredOutput = output;
 | 
					    d->desiredOutput = output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
 | 
				
			||||||
 | 
					void Window::attachPopup(QWindow *window, xdg_popup *popup)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    auto waylandWindow = dynamic_cast<QtWaylandClient::QWaylandWindow *>(window->handle());
 | 
				
			||||||
 | 
					    if (!waylandWindow) {
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    auto shellSurface = dynamic_cast<QWaylandLayerSurface *>(waylandWindow->shellSurface());
 | 
				
			||||||
 | 
					    if (shellSurface) {
 | 
				
			||||||
 | 
					        shellSurface->get_popup(popup);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Window::Window(QWindow *window)
 | 
					Window::Window(QWindow *window)
 | 
				
			||||||
    : QObject(window)
 | 
					    : QObject(window)
 | 
				
			||||||
    , d(new WindowPrivate(window))
 | 
					    , d(new WindowPrivate(window))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "layershellqt_export.h"
 | 
					#include "layershellqt_export.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
 | 
				
			||||||
 | 
					struct xdg_popup;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace LayerShellQt
 | 
					namespace LayerShellQt
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
class WindowPrivate;
 | 
					class WindowPrivate;
 | 
				
			||||||
| 
						 | 
					@ -93,6 +97,10 @@ public:
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    static Window *get(QWindow *window);
 | 
					    static Window *get(QWindow *window);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
 | 
				
			||||||
 | 
					    static void attachPopup(QWindow *window, xdg_popup *popup);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Q_SIGNALS:
 | 
					Q_SIGNALS:
 | 
				
			||||||
    void anchorsChanged();
 | 
					    void anchorsChanged();
 | 
				
			||||||
    void exclusionZoneChanged();
 | 
					    void exclusionZoneChanged();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue