Replace Window::desiredOutput with a Window::screenConfiguration enum
To not overlap with QWindow::screen too much, introduce an enum to make it more clear what the options and the resulting behaviour are.
This commit is contained in:
		
							parent
							
								
									511b92f4ab
								
							
						
					
					
						commit
						49f31bb22d
					
				
					 3 changed files with 20 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -34,7 +34,7 @@ public:
 | 
			
		|||
    Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityExclusive;
 | 
			
		||||
    Window::Layer layer = Window::LayerTop;
 | 
			
		||||
    QMargins margins;
 | 
			
		||||
    std::optional<QPointer<QScreen>> desiredOutput;
 | 
			
		||||
    Window::ScreenConfiguration screenConfiguration = Window::ScreenFromQWindow;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static QMap<QWindow *, Window *> s_map;
 | 
			
		||||
| 
						 | 
				
			
			@ -109,19 +109,14 @@ Window::Layer Window::layer() const
 | 
			
		|||
    return d->layer;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QScreen *Window::desiredOutput() const
 | 
			
		||||
Window::ScreenConfiguration Window::screenConfiguration() const
 | 
			
		||||
{
 | 
			
		||||
    // Don't use .value_or here to avoid a temporary QPointer
 | 
			
		||||
    if (d->desiredOutput.has_value()) {
 | 
			
		||||
        return d->desiredOutput.value();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return d->parentWindow->screen();
 | 
			
		||||
    return d->screenConfiguration;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Window::setDesiredOutput(QScreen *output)
 | 
			
		||||
void Window::setScreenConfiguration(Window::ScreenConfiguration screenConfiguration)
 | 
			
		||||
{
 | 
			
		||||
    d->desiredOutput = output;
 | 
			
		||||
    d->screenConfiguration = screenConfiguration;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,6 +58,17 @@ public:
 | 
			
		|||
    };
 | 
			
		||||
    Q_ENUM(KeyboardInteractivity)
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This enum type is used to specify which screen to place the surface on.
 | 
			
		||||
     * ScreenFromQWindow (the default) reads QWindow::screen() while ScreenFromCompositor
 | 
			
		||||
     * passes nil and lets the compositor decide.
 | 
			
		||||
     */
 | 
			
		||||
    enum ScreenConfiguration {
 | 
			
		||||
        ScreenFromQWindow = 0,
 | 
			
		||||
        ScreenFromCompositor = 1,
 | 
			
		||||
    };
 | 
			
		||||
    Q_ENUM(ScreenConfiguration)
 | 
			
		||||
 | 
			
		||||
    void setAnchors(Anchors anchor);
 | 
			
		||||
    Anchors anchors() const;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -73,13 +84,8 @@ public:
 | 
			
		|||
    void setLayer(Layer layer);
 | 
			
		||||
    Layer layer() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * If set, the compositor will try to put the window on the given screen.
 | 
			
		||||
     * If its not set, then the compositor will decide where to put the window.
 | 
			
		||||
     * Under normal circumstances, this should be the active output.
 | 
			
		||||
     */
 | 
			
		||||
    void setDesiredOutput(QScreen *output);
 | 
			
		||||
    QScreen *desiredOutput() const;
 | 
			
		||||
    void setScreenConfiguration(ScreenConfiguration screenConfiguration);
 | 
			
		||||
    ScreenConfiguration screenConfiguration() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets a string based identifier for this window.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue