mirror of
https://git.outfoxxed.me/quickshell/quickshell.git
synced 2026-02-23 03:33:57 +11:00
core/window: add min/max size to FloatingWindow
This commit is contained in:
parent
05ed9ff74c
commit
e931b85464
2 changed files with 61 additions and 0 deletions
|
|
@ -1,6 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include <qobject.h>
|
||||
#include <qproperty.h>
|
||||
#include <qsize.h>
|
||||
#include <qtmetamacros.h>
|
||||
|
||||
#include "proxywindow.hpp"
|
||||
|
|
@ -12,15 +14,46 @@ class ProxyFloatingWindow: public ProxyWindowBase {
|
|||
public:
|
||||
explicit ProxyFloatingWindow(QObject* parent = nullptr): ProxyWindowBase(parent) {}
|
||||
|
||||
void connectWindow() override;
|
||||
|
||||
// Setting geometry while the window is visible makes the content item shrink but not the window
|
||||
// which is awful so we disable it for floating windows.
|
||||
void trySetWidth(qint32 implicitWidth) override;
|
||||
void trySetHeight(qint32 implicitHeight) override;
|
||||
|
||||
signals:
|
||||
void minimumSizeChanged();
|
||||
void maximumSizeChanged();
|
||||
|
||||
private:
|
||||
void onMinimumSizeChanged();
|
||||
void onMaximumSizeChanged();
|
||||
|
||||
public:
|
||||
Q_OBJECT_BINDABLE_PROPERTY(
|
||||
ProxyFloatingWindow,
|
||||
QSize,
|
||||
bMinimumSize,
|
||||
&ProxyFloatingWindow::onMinimumSizeChanged
|
||||
);
|
||||
|
||||
Q_OBJECT_BINDABLE_PROPERTY(
|
||||
ProxyFloatingWindow,
|
||||
QSize,
|
||||
bMaximumSize,
|
||||
&ProxyFloatingWindow::onMaximumSizeChanged
|
||||
);
|
||||
};
|
||||
|
||||
///! Standard toplevel operating system window that looks like any other application.
|
||||
class FloatingWindowInterface: public WindowInterface {
|
||||
Q_OBJECT;
|
||||
// clang-format off
|
||||
/// Minimum window size given to the window system.
|
||||
Q_PROPERTY(QSize minimumSize READ default WRITE default NOTIFY minimumSizeChanged BINDABLE bindableMinimumSize);
|
||||
/// Maximum window size given to the window system.
|
||||
Q_PROPERTY(QSize maximumSize READ default WRITE default NOTIFY maximumSizeChanged BINDABLE bindableMaximumSize);
|
||||
// clang-format on
|
||||
QML_NAMED_ELEMENT(FloatingWindow);
|
||||
|
||||
public:
|
||||
|
|
@ -65,6 +98,13 @@ public:
|
|||
[[nodiscard]] QQmlListProperty<QObject> data() override;
|
||||
// NOLINTEND
|
||||
|
||||
QBindable<QSize> bindableMinimumSize() { return &this->window->bMinimumSize; }
|
||||
QBindable<QSize> bindableMaximumSize() { return &this->window->bMaximumSize; }
|
||||
|
||||
signals:
|
||||
void minimumSizeChanged();
|
||||
void maximumSizeChanged();
|
||||
|
||||
private:
|
||||
ProxyFloatingWindow* window;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue